MESSNGNR Post-mortem

First off, you can see my game’s page here or you can skip to just playing the game here.

Hi there! Yes, I am already done with my entry, as I had plans that I knew would occupy nearly all my time Sunday, so I turned in my entry last night. If you’re not done yet… get back to coding! But please read this some other time.

You can read my pre-compo post here. Anyway, here’s how my game MESSNGNR ended up looking:

Concept

In the past week I had been messing with some chromatic aberration code for a non-gaming project. When I heard of the theme of Connected Worlds, I eventually came up with a game (late at night, right before falling asleep) where the red, green, and blue channels were individual worlds that were linked somehow. An object in the blue world might block your progress in the red world, maybe you could switch between worlds, and so on. I jotted down the idea, and while traveling out of town, managed to awkwardly code the basic rendering layer on a fold-out tray in a crowded airplane.

ex02

Audio

By far my favorite part of the final product is the audio. Weird, glitchy sounds are a personal favorite of mine, and I think I pulled them off pretty well. I used a variety of speech synthesis programs, mainly eSpeak to generate the voices. I then chopped them up and edited them in Audacity, which even has a built-in DTMF generator that game in handy. I also generated a bunch of noise using it, and varied the volume randomly with code.

Engine

The game is written in Haxe and uses the HaxeFlixel and OpenFL libraries. The core gameplay code is entirely HaxeFlixel, but instead of rendering directly to the screen, the FlxGame class, which is normally the foundation of the rendering code, is entirely invisible. Every frame, a RenderManager class grabs the FlxGame’s pixels and copies the red, green, and blue channels individually to its own displayed BitmapData, plus some error on the X and Y axis (if enabled). The code is a bit messy, but it works pretty well, and I’m happy with the visual style that I achieved.

Shortcomings

Yes, I missed the targeted game by a long shot. The final game never has obstacles in a single channel, never displays multiple channels separately, and is incredibly short with no real ending. For reference, I had planned the game to look something like this when you start:

blue

With only one channel (in this case, blue) showing up. The messages (if you chose to read them, more on that later) would hint at another world that was causing issues in their own. Eventually, you would be able to see the other world, which would be another channel:

bluegreen

(These are just quick mock-ups by the way) So, in this example, the box only exists on the green channel, and it would block you in both channels. Eventually the channels would move, overlap, have conflicting information, be skewed funny, etc. I thought there might be some kind of item that lets you switch between channels as well.

Messages

The core gameplay that I did get to implement was the idea of being a messenger; carrying a message from a Sender to a Receiver. Optionally, you can choose to read the message, but as this is not what a messenger is supposed to do, there is a penalty. The scoring system is very rudimentary; you either get a random six-digit score, or zero, the latter if you read the message. There’s supposed to be some meta-commentary there about quantum mechanics and how reading an encoded message in a quantum computer would destroy it but… I’m not smart enough to elucidate on that without some heavy research.

kldw

Etcetera

I’m pretty happy with what I made in about five or six hours. I might revisit the concept at some point in the future, as I think it holds a lot of potential for further exploration. Until then, thanks for reading, and let me know what you think of the game!