Fighting file corruption and tightening up graphics

One of the biggest annoyances I face when coding something is when your program suddenly stops working for no apparent reason.  It happened this weekend when I was working on Gonna Catcha.

I was just going abut my usual business when all of a sudden the game would no longer run after compiling.  My guess was that the project got corrupted somehow, so I decided to make it anew.  GameMaker: Studio‘s ability to easily transfer resources between projects and the fact that the projects themselves are just large collections of image, audio and XML files made this relatively painless.

In the graphical department, I made some major changes.  Not being much of an animator, I had a lot of trouble doing the side walk cycles for each character.  As of my last post, I had something that looked like walking, but it still looked awkward.  After reading this tutorial (which I had previously encountered during my undergraduate studies in game development in the days of yore), I realized that I was missing a “Passing” frame in the walk cycle, and that I made it overly complicated.  So after much tweak, this is the end result:

I haven’t even finished Level 3 and I’ve already tightened up those graphics a little bit.

You may also notice two other changes in the above image: 1) I reduced the amount of arm swinging in the gun-away walk cycle.  I think I’ll reserve that amount of swag for a special occasion :), and 2) After doing a bit of research on the video capabilities of old arcade games (read: Pac-Man, mainly here and here), I’ve modified all the sprite palettes so that instead of each having 4 colours from a 16-colour palette, i.e, this:

I think I need to fix my graphics drivers.
(Source: Wikipedia)

They each have 4 colours from a 256-colour palette, i.e. this:

Ah, 256-colour.  My arch-nemesis in Microsoft Paint back in the 90s. Still dithering?
(Source: Wikipedia)

That should make things a little more, uh, colourful.  Yeah…

Before I finish this, I want to share a few interesting articles and whatnot I came across as I was doing research on ancient video game graphics.  I’ve already introduced three of them above:  a tutorial in animating a walk cycle: idleworm: animation tutorial – walk cycle part 1; and the two articles about the hardware used in Pac-Man machines:  Pacman hardware and Aaron’s MAME Memories Part 3.

Some other things I’ve encountered are this handy Color Bit Depth Reducer, which converts 24-bit TrueColor RGB or web hex values into the nearest values in other bit-depths and back again, and this old but free e-book about game graphics:  Designing Arcade Computer Game Graphics.

Hey, I can’t believe we got jobs doing this.
(Not intended for residents of anywhere.  Offer void in Nebraska.)
Copyright © Quadolor Games. All rights reserved.

Gonna Catcha: In-Game Testing

Status report:

Here’s some in-game test footage of Gonna Catcha, featuring Donum Dono as the test subject:

The video shows some tests on changing between animations depending on the state of the player:
  • Gun out or holstered: 2 states
  • Walking or standing:  2 states
  • Facing direction:  4 states
  • Total combinations:  16 states
It also shows some projectiles and the death sequence, which I will never get tired off (*Not a guarantee, I guarantee.)  You may have noticed that Donum sometimes jumps in position whenever he hits a wall.  That’s just my squeeze-the-player-around-the-corner code that still has some bugs to work out.  At least it’s better than what I had initially:

Outside of coding and pushing pixels, I’ve cleaned up and coloured in the sketch of Donum from my last post.  Now he’s no longer confined in a 64-pixel prison.

“*gasp* I’ve been vectored and coloured!”

I also made him the temporary face of my YouTube channel and Twitter:

“Uh, I don’t feel right about accepting this position without asking Pohena first.”

Enjoy it while it lasts; I might have other ideas about branding in the future.

Copyright © Quadolor Games. All rights reserved.

Gonna Catcha – An arcade-style maze game [Updated 4/3/2013]

UPDATE 4/3/2013:  This page is deprecated.  Here’s the more up-to-date page:


UPDATE 3/17/2013:  Woo!  Coloured portraits!

The time has finally come; allow me to introduce my new game project.

Game Info

The game is called Gonna Catcha, an arcade-style maze game where the player(s) assume the role of one of two psychopomps in their duty to get spirits to where they belong.  What’s a psychopomp?  You know, those guys that guide spirits of the dead into the afterlife.  You knowthese guys.


The names of the two player characters are Pohenas Das (left) and Donum Dono (right). Pohena is in charge of collecting evil spirits while Donum is in charge of collecting the good ones.  Each psychopomp will have different game mechanics reflecting their different jobs:

  • Pohena must subdue evil spirits before collecting them and take care to not get defeated by them or accidentally attack good spirits (who serve as obstacles).
  • Donum must attract good spirits to come to him and take care not to accidentally attract or get defeated by evil spirits (who serve as hazards).

In 1-player mode, the player will alternate playing as Pohena and Donum between stages (or sets of stages). 2-player alternating will essentially be the same thing, except with two game sessions intertwined.  Finally, 2-player co-op will have each player taking the role of one psychopomp and may involve a different set of stages.

Platforms

Right now, I have the following options:  Windows, HTML5 and Android.  Windows is the easiest, so I’ll target that first.  With a few tweaks, I can get it running on my website as an HTML5 game; Android might take a while longer.

Characters

I’ve introduced the main characters briefly above, but I’ve written some more detailed character bios on a page linked below.  It will be updated as time goes now and I flesh them out some more.

Sprites

Below are some concept sprite art.  I chose to use a 4-colour palette for each character to emulate the look of old arcade games.  I also included a 16-colour sprite for each character to demonstrate their actual colour palettes.

Audio

And last, but definitely not least, the theme music.  Since I have an arcade-style game with arcade-style sprites. why not go the whole nine yards?

Release Date

TBD.

That’s all I have to say for now.  Stay tuned for updates!

ZOMG!

Copyright © Quadolor Games. All rights reserved.

Stopgap Post

I wanted to make this post after I had gotten all of the stuff I wanted to say organized, but it was taking far too long.  And the fact that I haven’t made a post in a long time, I decided to post what I have so far.  Don’t worry, this blog isn’t dead yet.

I have good news, bad news, and better news.

The good news is, the font caching bug is now fixed:

Hurrah, hurrah

The bad news is I’m suspending the development of Sticks and Stones until I can think of a new theme for the game, as I don’t like the one I had in mind anymore.  Even if I can’t come up with one, at least I have the beginnings of a 2D adventure game engine that I can use for other projects.

The better news is I’ve got a new project idea, one that is more traditional and less experimental.  Once I gather all the information, I’ll post it here.  Stay tuned for updates!

Copyright © Quadolor Games. All rights reserved.

Go home Font Caching, you are drunk.

I didn’t expect myself to post so much in such a short time frame, but this is too amusing to pass up.  I was just messing around with Stick and Stones for a little bit when suddenly this happens:

Have you been hanging out with Zalgo?
The newest update of GameMaker: Studio (v.1.1.805) changed the way fonts are handled.  As I understand it, instead of caching the font at compile time, it now caches it whenever you make and save any changes to the font resource within the project (e.g. changing the font itself, size, style, character set included, etc.).  This way, if you have multiple people collaborating on the same project on different computers, only the person who created the font resource needs the original font file; everyone else will just use the cached font on the texture page(s):

“Somebody please put me out of my misery.”
(Note: Black background added for clarity)

As you can see, this new method still has some bugs to work out, and for my project that’s entirely text-based, this is an obvious problem that needs to be addressed.  Fortunately, the devs have taken note of this and are working to fix it.  The workaround they suggested is to recreate the font resource and delete the old one every time you make a any change to it, which is a bit of a bother.

Copyright © Quadolor Games. All rights reserved.

My name is BASSGMS, I’ll be your interpreter for today

I’ve for a long time found GameMaker‘s audio engine to be too limiting. particularly in the background music department.  That’s why I choose to use an external audio library to handle the background music.

Long story short, GameMaker only allows you to use MP3s for background music, and the only flexibility you have for it is whether you want it to loop back to the beginning or not when it reaches the end.  That’s why I prefer to use MO3 modules for my background music.  MO3s are tracker modules with MP3- or OGG-compressed samples rather than straight PCM samples.  In simpler terms, MO3s combine MP3- or OGG-compressed samples with data on how to play those samples.  Looping is internal to the MO3 itself and is seamless,  allowing you to theoretically have an infinite-length MP3/OGG quality music in a few megabytes, or even less.


The only library I know of is BASS, whose developer, Ian Luck, also created the MO3 module format.  Getting BASS to work with GameMaker isn’t as easy as just importing the DLL into the project.  They can’t communicate with each other due to incompatible data types used in their functions.

I’m sorry, I don’t understand your funny accent.

(For those coders playing at home, GameMaker‘s only two types, real and string, are equivalent to the C types double and char* respectively.)

The solution was to create my own wrapper library, which I dubbed BASSGMS, that translates the functions in BASS in a way that GameMaker can work with.  In the heart of BASSGMS (and any wrapper DLL I may create in the future) lies these magic words that make everything possible:

What is this sorcery?!

To this day, I still only have a vague understanding of how to code DLLs.  All I know is it works like voodoo magic.

Copyright © Quadolor Games. All rights reserved.

Sticks and Stones – First Test

I’m starting a new project in GameMaker: Studio: a short, text-based exploration game, though not in the traditional sense. Let me explain:

The idea for this came from my experience playing WarioWare: D.I.Y.  One part of the game had Wario hiring you to do the graphics for some pre-made microgames.  I didn’t take that part of the game seriously and drew absurd and non sequitur things.  On a few of them, I got lazy and abstracted the things I was supposed to draw as words:
Oh no!
You’re in for a world of it.

The goggles do nothing!

This gave me the idea to do a whole game like this.  I call it Sticks and Stones, which, as you may have guessed, comes from the nursery rhyme “Sticks and stones may break my bones, but words will never harm me.”  (Or “…but names will never hurt me.”), which I plan on using as a theme for the game.

As for the music, since my muse is tapped out of original tunes at the moment, I decided to dive into the domain of the public.  Maybe it’s because I named my game after a nursery rhyme, but here is a sample of the music.  It’s a tune that goes by many names: When Johnny Comes Marching Home, Johnny I Hardly Knew Ye, The Ants Go Marching and The Animals Went in Two by Two:

Anyways, that’s all I have to say for now.  Check back for more updates!

Copyright © Quadolor Games. All rights reserved.