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 know, these 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?

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!

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):

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.

Just a quick post for today. Even though this isn’t my first time uploading an HTML5 demo onto the internet, it is for my own, newly acquired domain name (yay!). It’s a port of the Android demo that I posted earlier, with a few new features. Like the Android demo, it only responds to clicks. You can find it with the following link:

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‘sonly 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.