{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/compo2\/375043\/26473-shot3.png","local":"\/data\/posts\/2014\/08\/d7a5d9451419be4fccc2113bb1df6e26.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/ex02-300x147.png","local":"\/data\/posts\/2014\/08\/e4da59337ba39c5b5c6a3d0e37f3bbf7.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/compo2\/375043\/26473-shot0.png","local":"\/data\/posts\/2014\/08\/ded6cc676bbbef94e48f45a675847516.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/compo2\/375043\/26473-shot1.png","local":"\/data\/posts\/2014\/08\/191ddc6f27fabebd600dd25fe23fb03b.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/blue-300x150.png","local":"\/data\/posts\/2014\/08\/e59d4cbc12800a849ece5e02c65df9fa.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/bluegreen-300x300.png","local":"\/data\/posts\/2014\/08\/feb948112466424dac9cae18ee6cd6ec.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/kldw-300x147.png","local":"\/data\/posts\/2014\/08\/cc8d3ae1cb8d2f34c6a32b76f4b4d313.png"}],"author_link":"author\/stvr\/","author_name":"stvr","cat":"LD #30","categories":["LD #30"],"comments":[],"epoch":1408872360,"event":"LD30","likes":5,"metadata":{"p_key":"81776","p_author":"stvr","p_authorkey":"0","p_urlkey":"290893","p_title":"MESSNGNR Post-mortem","p_cat":"LD #30","p_event":"LD30","p_time":"1408872360","p_likes":"5","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1408665600","event_key":"24","event_name":"LD30"},"source_url":"2014\/08\/24\/messngnr-post-mortem\/","text":"<p>First off, you can see my game\u2019s page <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-30\/?action=preview&amp;uid=26473\">here<\/a> or you can skip to just playing the game <a href=\"http:\/\/stvr.itch.io\/messengnr\">here<\/a>.<\/p>\n<p>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\u2019re not done yet\u2026 get back to coding! But please read this some other time.<\/p>\n<p>You can read my pre-compo post <a href=\"http:\/\/www.ludumdare.com\/compo\/2014\/08\/23\/belated-hello\/\">here<\/a>. Anyway, here\u2019s how my game MESSNGNR ended up looking:<\/p>\n<p><img alt=\"\" src=\"\/data\/posts\/2014\/08\/d7a5d9451419be4fccc2113bb1df6e26.png\"\/><\/p>\n<p><strong>Concept<\/strong><\/p>\n<p>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 <em>Connected Worlds<\/em>, 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.<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/ex02.png\"><img alt=\"ex02\" class=\"alignnone size-medium wp-image-381824\" height=\"147\" src=\"\/data\/posts\/2014\/08\/e4da59337ba39c5b5c6a3d0e37f3bbf7.png\" width=\"300\"\/><\/a><\/p>\n<p><strong>Audio<\/strong><\/p>\n<p>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 <a href=\"http:\/\/espeak.sourceforge.net\/\">eSpeak<\/a> to generate the voices. I then chopped them up and edited them in <a href=\"http:\/\/audacity.sourceforge.net\/\">Audacity<\/a>, which even has a built-in <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dual-tone_multi-frequency_signaling\">DTMF<\/a> generator that game in handy. I also generated a bunch of noise using it, and varied the volume randomly with code.<\/p>\n<p><img alt=\"\" src=\"\/data\/posts\/2014\/08\/ded6cc676bbbef94e48f45a675847516.png\"\/><\/p>\n<p><strong>Engine<\/strong><\/p>\n<p>The game is written in <a href=\"http:\/\/haxe.org\/\">Haxe<\/a> and uses the <a href=\"http:\/\/haxeflixel.com\/\">HaxeFlixel<\/a> and <a href=\"http:\/\/www.openfl.org\/\">OpenFL<\/a> 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\u2019s 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\u2019m happy with the visual style that I achieved.<\/p>\n<p><img alt=\"\" src=\"\/data\/posts\/2014\/08\/191ddc6f27fabebd600dd25fe23fb03b.png\"\/><\/p>\n<p><strong>Shortcomings<\/strong><\/p>\n<p>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:<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/blue.png\"><img alt=\"blue\" class=\"alignnone size-medium wp-image-381876\" height=\"150\" src=\"\/data\/posts\/2014\/08\/e59d4cbc12800a849ece5e02c65df9fa.png\" width=\"300\"\/><\/a><\/p>\n<p>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:<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/bluegreen.png\"><img alt=\"bluegreen\" class=\"alignnone size-medium wp-image-381897\" height=\"300\" src=\"\/data\/posts\/2014\/08\/feb948112466424dac9cae18ee6cd6ec.png\" width=\"300\"\/><\/a><\/p>\n<p>(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.<\/p>\n<p><strong>Messages<\/strong><\/p>\n<p>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 <em>supposed<\/em> 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\u2019s supposed to be some meta-commentary there about quantum mechanics and how reading an encoded message in a quantum computer would destroy it but\u2026 I\u2019m not smart enough to elucidate on that without some heavy research.<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/08\/kldw.png\"><img alt=\"kldw\" class=\"alignnone size-medium wp-image-381917\" height=\"147\" src=\"\/data\/posts\/2014\/08\/cc8d3ae1cb8d2f34c6a32b76f4b4d313.png\" width=\"300\"\/><\/a><\/p>\n<p><strong>Etcetera<\/strong><\/p>\n<p>I\u2019m 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!<\/p>","time":"August 24th, 2014 9:26 am","title":"MESSNGNR Post-mortem","title_was_empty":false}