It’s dangerous to “go” – Puzzler Postmortem
Let me tell you about my first ever 48 hour Ludum Dare experience! I made a top-down puzzle game where you, the player, control the movement of both a green Link-like guy and a kitten at the same time. It is dangerous to “go” alone! Take this [kitten]. ”Go” as in, yes, “going” to the bathroom. In this puzzle game you have to collect TP for the toilet and litter for the litter box!
Play the game – Click here for my game’s competition entry page.
I’ll go through my experience chronologically as I talk about how my game came together, and then I’ll also tell you about the process of making each of my levels if you don’t mind spoilers.
Part 1 – How 48 Hours Turned Into a Game
Ok, so Friday night the theme was announced. When I saw it, I simultaneously felt like I had to do something Zelda-like, while also not wanting to do anything so literal. The direct reference to such a classic game put me in a bit of a mental bind.
I started brainstorming ideas. For inspiration, I grabbed from the internet both the Zelda screenshot and the famous meme image. I actually had them up on my screen during the whole contest!
Inspiration: The Dangerous Duo
Some Zelda parody ideas popped into my head right away, but because you can’t reuse existing Zelda graphics for Ludum Dare, my ideas basically amounted to “recreate Zelda,” and that seemed a little impractical in 48 hours. There was one particular moment from the first Zelda that I kept thinking about:
Kittens are made of meat…
For more inspiration, I started to read everybody’s blog entries, and I was amazed by all of the clever interpretations of the theme. I started to think about each word in the theme individually, and tried to figure out how I could play off of it. It was then on Friday night that playing on the word “go” hit me with an idea: I’d been wanting to do a simple classic top down puzzler for awhile, so what if I did something with needing to “go” to the bathroom. I figured the player could be a little Link guy like from Zelda, and there could be a kitten companion (like from the meme) at the same time. Visions of pixel toilets and pixel litter boxes flashed in my head.
More after the jump!
But I didn’t stop brainstorming at that idea. I also looked at past Ludum Dare winners, and how they related to the theme. Then I looked at the Wikipedia list of video game genres. Within probably an hour I had a list of maybe 15 ideas. I was able to down-select based on scope pretty quickly, but I was left with 3 or 4 ideas that I really liked, including the idea that I ended up picking. I decided to let my unconscious marinate on these ideas for awhile, and I played some Portal 2 with a friend, and then went to bed.
Saturday morning I got up and did my typical Saturday routine. I walked to get some coffee and a pastry. I got home, and I setup the shell of a top-down game using the Akihabara HTML5 game engine. I still hadn’t picked my final idea, so I picked up pencil and paper to do some sketches and explore the ideas a bit more. I got out a tablet of graph paper and started to doodle thoughts and level diagrams and game elements for my top ideas.
“Look! Doodles! I went to class!”
This ended up making the decision harder, because with pencil-to-paper my unfiltered creativity was creating ideas for these games with too much scope, and then I would get concerned that my ideas were too big and not suitable for the 48 hour time limit, and that it would be very difficult to make enough game content by the deadline. The pressure of the 48 hour competition hit me a bit at this point, which was late Saturday afternoon by now. Trying to address my concerns about being able to design enough levels by hand in 48 hours, I burned another hour or more by visiting the procedural generation rabbit hole… I even started to implement the A* search algorithm to help me test the difficulty of procedurally generated level content. Luckily, I stopped myself from continuing down that path.
I gave myself a break to de-stress and remember that this was fun! I had a good conversation about my different ideas and the pros and the cons of each with some friends. Two ideas were left as top contenders, with my friends favoring one idea. I headed back to the keyboard determined to work on their favorite, and then an odd thing happened: I felt confident about their second favorite idea, my very first idea… the puzzle game about “going” with a Link guy and a kitten.
It was getting to be late Saturday evening at this point, but I started doing sprites for that game. I burned an hour or so doing some higher polish sprites than what ended up in the game, only to realize that I’d made them without any of the game requirements figured out.
Abandoned tile art.
I totally knew better, but I think I just needed to do something other than program or think conceptually at that point. I took a step back and thought about what my levels would be like. I knew that I wanted the whole level to fit onto the screen all at once, so that ended up dictating a certain tile size and sprite size (that was of course much different than the ones I’d already drawn! lulz!). Having lost some more time, but still feeling like drawing graphics instead of coding, I decided to ratchet down the fidelity of the sprites even lower. I had the idea to go with big, blocky, 16 color graphics of a ZX Spectrum or perhaps CGA flavor. I googled to get authentic color palettes. I had committed to tile dimensions that would allow for fitting reasonably complex levels all on-screen at once. I then proceeded to have a very focused session of pushing pixels. I drew the different wall tiles, the TP, the toilet, the litter, the litter box, the guy, and the kitten. The guy wasn’t green like Link yet. At this point, my Saturday was over and I went to bed.
The original tileset.
Sunday I woke up. Coffee. Donut. It was go time! Akihabara helped me quickly add basic level map loading, sprite animation, and tile collision. The first real big game coding hurdle was the movement of the kitten in relation to the guy. I had actually imagined a game where the kitten followed the guy’s exact path at a delay of four or so tiles behind. This was going to create its own set of puzzles because the player would have to consider where the kitten would be when the guy was 4 moves ahead.
I started out intending to code this behavior. I began with a basic kitten to go with my basic guy. The first kitten logic I ended up adding was the same logic as the guy… literally a copy/paste/tweak. This meant that whatever input the player gave the guy, the kitten got, too. That behavior is not terribly exciting in an empty level when both guy and kitten just move up or left together in unison, however by luck I was testing the game using a level that had some rooms with walls to run into. This being the case, I saw that when the guy is up against an obstacle while the kitten is not, or vice versa, the two start to move out of sync — and that’s when the lightbulb went on. I remembered playing games that felt like this. It felt right. I started to get different puzzle ideas around this behavior, and knowing that it was already late Sunday morning, I just went with it. I decided that this was working, and this was how the kitten would move, and that was that. And that’s how this guy/kitten control logic ended up in the final game.
The Testing Level
Now it was time to add the puzzle elements. Besides the guy and the kitten, there would be a roll of TP, a bag of litter, a toilet, and a litter box. The guy would have to pick up the TP and the bag of litter first, and then only after that the guy would have to make his way to the toilet and the kitten would have to make its way to the litter box. I’d considered making the rules such that the guy and the kitten would have to reach these goals simultaneously, but I already had puzzles in my mind that would take advantage of this not being the case. In fact, I made it so that when the guy is locked into the toilet, or the kitten is locked into the litter box, they become an impassible object, which creates its own puzzle possibilities.
At this point, I had the basics worked out, but only had the one test level finished. Oh, I should mention that I was defining my levels in ASCII using Akihabara’s help.asciiArtToMap() method. This was a nice, quick visual way to throw levels together for testing that were easy enough to tweak. I was using TextMate as my editor, and I put it into Overwrite Mode to make editing the ASCII levels even simpler. I did have at least one mix up along the way though… to hilarious effect.
My ASCII level editor!![]()
Oops…
Around this time in my retelling of the story was when I posted to the Ludum Dare site about not being sure I would finish. However, with the game mechanics in place, I found it was fun to throw some levels together, and I got into the flow! I do wish I had committed to this particular game idea sooner so I would have had another whole day to do levels. My lesson for my next Ludum Dare might be to just go with my first idea, start building, accept any serendipity, and get the first working level done while minimizing scope as much as possible before adding or expanding anything. I’d try to do that by the end of Saturday, and leave Sunday for exploration!
So now it was getting late on Sunday. Besides making the levels that ended up in the competition version of the game, I also worked out a basic intro sequence based on the theme. In this intro an old man in a cave with fires gave the player the kitten. Drawing the old man in red, as a nod to Zelda, made me realize that the player’s guy should not also be red… and obviously he should have a green outfit like Link! I was surprised I hadn’t thought of that before.
Final Competition Tileset (Left) and Jam Tileset (Right)
For the competition version of my game, I used the default dialog functionality from Akihabara, which was a bit off from the Zelda experience. For the Jam version, I had time to animate the fires, make the dialog more Zelda-like, and even let the guy pick up the kitten and hold it over his head!
In Part 2 I’m going to talk about the levels themselves. Warning! If you read on there will be level spoilers! If this is where you leave me, thanks for reading! I’m thrilled that I participated in Ludum Dare, and I’m really happy with what I managed to accomplish in 48 hours. I’ve learned some lessons, and I hope to do even more for the next Dare. If you’d like to play more levels for this game, let me know! If there is interest, I certainly have ideas for how to continue the game from here. Also, my tools if you are curious: Akihabara HTML5 game engine, TextMate, Photoshop CS4, CFXR, GarageBand with the magical8bitPlugin, Audacity, graph paper, and a pencil.
Play the game – Click here for my game’s competition entry page.
Part 2 – The Levels
…
HERE BE SPOILERS.
…
HERE BE SPOILERS.
…
HERE BE SPOILERS.
…
HERE BE SPOILERS.
…
My original design for level 1 had no danger, and it also really did not present any logical puzzles to the player. The player could simply steer both the guy and kitten over to the TP and the Litter, and then drop the guy off at the toilet and the kitten off a the litter box in any order. It was meant to just teach the player the basic point of the game in a simple way. I play tested my original level 2 with friends, skipping this simple level 1, and they understood the point of my game just fine! Level 2 had a tiny puzzle built into it, too, so it was more fun. I ended up trashing this original Level 1, and making my test level 2 the game’s new level 1. I’m glad I did this, because the puzzle in that new level 1 taught the player so much more about the rules of the game and how to control the characters.
Very first Level 1… didn’t make the cut.
Specifically, in this new level 1 from the final game, the player learns that the kitten cannot pickup the TP or the bag of litter, and that the guy cannot pass through the kitten. The player also learns how to separate the guy and the kitten because of this, which is a key lesson for solving the puzzles.
Real Level 1.
Level 2 is the first level to add lava to create some danger for the player. It’s pretty much the same solution as level 1, but the player has to now pay attention to what the kitten is doing when it is separated from the guy. I placed the lava somewhat randomly, although I avoided putting lava too close to where the player would probably be trying to separate the kitten from the guy. I guess I was trying to moderate the challenge in this level, since the player is still learning. I could have put a long river of lava along the right wall to make this level more difficult.
Level the Second.
Level 3 is the first level where the order that the player solves the puzzle matters. A kitten in a litter box full of litter, or a guy on the toilet with TP, becomes an impassible obstacle, and the player may learn that the hard way on this level. I’ve gotten feedback that there’s no way to restart this level when you mess up, however you can simply commit suicide by driving the kitten into the lava. I agree that there may need be to be a reset for some puzzles, though. I placed the lava somewhat randomly again, and just play tested the level myself based on my haphazard lava placement to get a feel for how hard it would be to play. I have more of an intuitive understanding of the lava placement than any sort of hard and fast rules. I did make some of the lava gaps tight so that navigating would require the player to arrange the guy and kitten in particular ways.
Level #3.
Level 4 probably starts out looking pretty simple to the player. They have to figure out how to rearrange the guy and kitten from being left-right of each other to being top-bottom from each other, and then it is another puzzle where order matters. Having the bottom wall and far left wall be solid with no lava makes this level a bit less challenging than it would otherwise be.
Level 4 from my competition entry.
For the Jam version of my game, I made somewhat aesthetic changes to Level 4, but by adding pillars and moving them around I believe I probably made it a little bit more challenging for a first time player to understand how to rearrange the guy and kitten… and they are also a little bit less likely to accidentally get the guy and kitten in the solution order right away when the pillars are moved like this.
Level 4 from my Jam version.
Finally, Level 5, which only appears in the Jam version of the game, really ramps up the difficulty by having the entire left and right sides of the puzzle being lava. There was originally only two paths through the lava towards the items below, one for the guy and one for the kitten. I felt that this made the puzzle too much like the others where it was about the player figuring out how to separate the guy and the kitten. So, I added extra paths through the lava in order to make the player think a bit more about how to solve the puzzle. I put items in tantalizing places that encourage the player to not pay attention and accidentally plunge the kitten into the lava. I also put extra TP and bags of litter into this map for the first time as to make identifying the correct paths through the lava less obvious. At first I had the toilet and litter box goals just out in the open in the bottom part of the map, but then I realized I could move these up into the lava and have the player re-enter different paths from the bottom, which would be less obvious and more fun.
Level 5 from my Jam version.
Each level that I added basically evolved from me understanding a new situation that could be presented to the player based on the basic rules and limitations of the game world. I was trying to exhaust the possible puzzles I could present to the user with the mechanics I had before adding any new puzzle elements, like other dangers. I certainly could make a ton of just slightly different maze levels like level 5, but I wanted to understand the different basic ways I could trip a player up, so I’ve have more paint brushes in my level design arsenal.
Thanks for sticking all the way until the end!
Well, that’s all I’m going to ramble on about. Thanks again for reading! If you’d like to play more levels for this game, let me know! If you have any questions or criticisms, those are welcome, too.
Play the game – Click here for my game’s competition entry page.















