SHIFTER – Postmortem

Posted by (twitter: @atmospherium)
December 16th, 2013 9:58 pm


For the second time in a row (and ever), I finished my game for Ludum Dare. I’m incredibly pleased with the results this time around, and I hope that people enjoy playing it as much as I enjoyed making it (except for those painful times where it was completely broken). Ludum Dare 27 marked the first time I created a game (Richard Was Afraid of the Dark) but, while I am proud of the results, it never really felt like a game. This time around my target was simple: Make something that catches the eye and feels fun to play. I definitely think I succeeded here (at least more than I expected to). Granted, it feels similar to Richard in many ways, but I think it’s definitely a strong step in the right direction. Ok, on to the nuts and bolts…

What went well


I’m not the most talented person in the visual arts, so I aim for simple. I love contrast, so I made that the focus. I love light flares, so I put those in. I love screen shake, so I made the world quake under Shifter’s speeding frame. On their own, none of these things was that big of an improvement, but it all added up. Here’s the final product as well as a capture of the game as it looked 4 hours before the deadline. One of these looks like a game, the other looks like a programming experiment gone boring:

Shifter - Current
Shifter - Old

On top of the game graphics, I actually made a title screen. That works. And that dynamically responds to the background music. Definitely not necessary, definitely not important enough to give it the amount of focus I did during the last few hours, but definitely satisfying. And the moment the title screen reopens at the close is so incredibly satisfying. I’ve seriously played through the last level multiple times just to watch the screen appear right as the drums kick in.


I had told myself leading into LD that I was going to either make a rhythm game or a physics game, and that I’d decide once the theme was announced. I eventually settled on the idea of simple shapes moving in rhythm and knew I needed some music to fit. I wanted simple, engaging music that could exist in various forms throughout the game and that could relentlessly drive the game forward while not getting irritating to the player. And my target was to do all this while keeping the game’s filesize down (2MB for webplayer). Which is no small task.

The primary way in which I kept the audio fresh without bloating the game was by constructing the audio from samples at the beginning of each level. I created samples for seven different notes that I could then manipulate to fit the rhythmic requirements of the level. I was able to toggle specific samples on or off in Unity’s inspector and adjust the sound to meet my expectations pretty quickly. This also allowed me to more precisely control the timing between the audio and the platforms. All while keeping the filesize for my music-centric game at 2.05MB. That’s close enough to my target to call it a victory.


I had planned on keeping Shifter completely gameplay-oriented and not incorporating any story whatsoever, and for most of the development time that was the case. It wasn’t until 4 (or so) hours before the deadline that I put any story in. And that actually was a result of people wanting clarity on what was happening in the game. It started off with the first level giving instructions and turned into a stream-of-consciousness rambling about squares, cupcakes, and ice sculptures. I literally wrote the story as I placed the blocks on the screen and didn’t pay attention to where it was going. It ended up being a lot better than I expected, so with a few slight adjustments, I left it in and called it a feature. I know it makes it feel a lot like my previous LD entry (“SHIFTER, or: Richard Glows In The Dark… And Is A Square!”), but I don’t care. You can deal with it.


For most of the weekend, I had DColgan’s stream playing as I worked (check out his entry: Squirrel Hunter 5000), which was actually incredibly helpful. It provided a good diversion when I needed, but wasn’t an intrusion on my work. And most of Sunday afternoon turned into a time of everyone in the stream playtesting everyone else’s game. Which REALLY went a long way in helping me get this thing polished. Thanks to all who helped.

What went poorly


As you may have noticed, just about everything I’m happy about accomplishing with this game happened in the last 4-5 hours of development. Cause, you know, why would I want to accomplish very much during the first 44 hours? I prepped myself for not working on the game until I had a specific plan in mind, made sure I had food, and I even bought graph paper and fresh pens. I used precisely one sheet of graph paper (partially), threw out any plans I made early on, and I wasted time several times during the stretch cooking different food (“I don’t care that I have food already, I want eggs! And more eggs!”).

Yeah, those early hours were important and I built the base of my code and a lot of the core functionality during that time period, but it feels less like I made progress and more like I accidentally did things. I won’t beat myself up over it to much, but this is something I definitely need to be very aware of for the future.

Puzzle creation

I had really hoped to make this a puzzle game, but it ended up not being about solutions and more about following a preset path with no real chance to fail. I think that the game ended up better as it is now, but I really with that I could have built that gameplay. I’m hoping to take some time and figure out how to accomplish the puzzler that I had initially envisioned.

What’s next?

Well, first of all you’re going to check out Shifter. I’ve already worked on the post-compo version (bug fixes, implementing the Kongregate API), and have it playable on Kongregate. So check that out (and rate?). I’m toying around with the idea of creating a few challenge levels and adding that to the Kongregate version, but that won’t happen until at least early 2014.

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]