{"assets":[],"author_link":"author\/zachstronaut\/","author_name":"zachstronaut","cat":"LD #20 - It's Dangerous to go Alone! Take This!","categories":["LD #20 - It's Dangerous to go Alone! Take This!"],"comments":[],"epoch":1304806500,"event":"LD20","likes":6,"metadata":{"p_key":"77369","p_author":"zachstronaut","p_authorkey":"0","p_urlkey":"286220","p_title":"It\u2019s dangerous to \u201cgo\u201d \u2013 Puzzler Postmortem","p_cat":"LD #20 - It's Dangerous to go Alone! Take This!","p_event":"LD20","p_time":"1304806500","p_likes":"6","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1304035200","event_key":"6","event_name":"LD20"},"source_url":"2011\/05\/07\/dangerous-to-go-puzzler-post-mortem\/","text":"<p>Let me tell you about my <strong>first ever<\/strong> 48 hour Ludum Dare experience! \u00a0I 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. \u00a0<em>It is dangerous to \u201cgo\u201d alone! Take this [kitten].<\/em> \u00a0\u201cGo\u201d as in, yes, \u201cgoing\u201d to the bathroom. \u00a0In this puzzle game you have to collect TP for the toilet and litter for the litter box!<\/p>\n<p><strong><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-20\/?action=rate&amp;uid=3883\">Play the game \u2013 Click here for my game\u2019s competition entry page.<\/a><\/strong><\/p>\n<p>I\u2019ll go through my experience chronologically as I talk about how my game came together, and then I\u2019ll also tell you about the process of making each of my levels if you don\u2019t mind spoilers.<\/p>\n<h3>Part 1 \u2013 How 48 Hours Turned Into a Game<\/h3>\n<p>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. \u00a0The direct reference to such a classic game put me in a bit of a mental bind.<\/p>\n<p>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!<\/p>\n<blockquote><p>\n<img alt=\"Dangerous Duo.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/dangerous-duo.png\"\/><br\/>\n<em>Inspiration: The Dangerous Duo<\/em>\n<\/p><\/blockquote>\n<p>Some Zelda parody ideas popped into my head right away, but because you can\u2019t reuse existing Zelda graphics for Ludum Dare, my ideas basically amounted to \u201crecreate Zelda,\u201d and that seemed a little impractical in 48 hours. There was one particular moment from the first Zelda that I kept thinking about:<\/p>\n<blockquote><p>\n<img alt=\"Dangerous Joke.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/dangerous-joke.png\"\/><br\/>\n<em>Kittens are made of meat\u2026<\/em>\n<\/p><\/blockquote>\n<p>For more inspiration, I started to read everybody\u2019s blog entries, and I was amazed by all of the clever interpretations of the theme. \u00a0I 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 \u201cgo\u201d hit me with an idea: I\u2019d been wanting to do a simple classic top down puzzler for awhile, so what if I did something with needing to \u201cgo\u201d to the bathroom. \u00a0I 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. \u00a0Visions of pixel toilets and pixel litter boxes flashed in my head.<\/p>\n<h4>More after the jump!<\/h4>\n<p><span id=\"more-53479\"><\/span><\/p>\n<p>But I didn\u2019t stop brainstorming at that idea. \u00a0I also looked at past Ludum Dare winners, and how they related to the theme. \u00a0Then I looked at the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Category:Video_game_genres\">Wikipedia list of video game genres<\/a>. \u00a0Within probably an hour I had a list of maybe 15 ideas. \u00a0I 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. \u00a0I 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.<\/p>\n<p>Saturday morning I got up and did my typical Saturday routine. \u00a0I walked to get some coffee and a pastry. \u00a0I got home, and I setup the shell of a top-down game using the <a href=\"http:\/\/www.kesiev.com\/akihabara\/\">Akihabara HTML5 game engine<\/a>. \u00a0I still hadn\u2019t picked my final idea, so I picked up pencil and paper to do some sketches and explore the ideas a bit more. \u00a0I got out a tablet of graph paper and started to doodle thoughts and level diagrams and game elements for my top ideas.<\/p>\n<blockquote><p>\n<img alt=\"Dangerous Doodles.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/doodles.png\"\/><br\/>\n<em>\u201cLook! Doodles! I went to class!\u201d<\/em>\n<\/p><\/blockquote>\n<p>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. \u00a0The pressure of the 48 hour competition hit me a bit at this point, which was late Saturday afternoon by now. \u00a0Trying 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\u2026 I even started to implement the A* search algorithm to help me test the difficulty of procedurally generated level content. \u00a0Luckily, I stopped myself from continuing down that path.<\/p>\n<p>I gave myself a break to de-stress and remember that this was fun! \u00a0I had a good conversation about my different ideas and the pros and the cons of each with some friends. \u00a0Two ideas were left as top contenders, with my friends favoring one idea. \u00a0I 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\u2026 the puzzle game about \u201cgoing\u201d with a Link guy and a kitten.<\/p>\n<p>It was getting to be late Saturday evening at this point, but I started doing sprites for that game. \u00a0I burned an hour or so doing some higher polish sprites than what ended up in the game, only to realize that I\u2019d made them without any of the game requirements figured out.<\/p>\n<blockquote><p>\n<img alt=\"Abandoned Tiles.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/abandoned-tiles.png\"\/><br\/>\n<em>Abandoned tile art.<\/em>\n<\/p><\/blockquote>\n<p>I totally knew better, but I think I just needed to do something other than program or think conceptually at that point. \u00a0I took a step back and thought about what my levels would be like. \u00a0I 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\u2019d already drawn! lulz!). \u00a0Having 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. \u00a0I 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. \u00a0I then proceeded to have a very focused session of pushing pixels. \u00a0I drew the different wall tiles, the TP, the toilet, the litter, the litter box, the guy, and the kitten. \u00a0The guy wasn\u2019t green like Link yet. \u00a0At this point, my Saturday was over and I went to bed.<\/p>\n<blockquote><p>\n<img alt=\"Original Tiles.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/old-cels.png\"\/><br\/>\n<em>The original tileset.<\/em>\n<\/p><\/blockquote>\n<p>Sunday I woke up. Coffee. Donut. \u00a0It was go time! \u00a0Akihabara helped me quickly add basic level map loading, sprite animation, and tile collision. \u00a0The first real big game coding hurdle was the movement of the kitten in relation to the guy. \u00a0I had actually imagined a game where the kitten followed the guy\u2019s exact path at a delay of four or so tiles behind. \u00a0This 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.<\/p>\n<p>I started out intending to code this behavior. I began with a basic kitten to go with my basic guy. \u00a0The first kitten logic I ended up adding was the same logic as the guy\u2026 literally a copy\/paste\/tweak. \u00a0This meant that whatever input the player gave the guy, the kitten got, too. \u00a0That 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. \u00a0This 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 \u2014 and that\u2019s when the lightbulb went on. \u00a0I remembered playing games that felt like this. \u00a0It felt right. \u00a0I started to get different puzzle ideas around this behavior, and knowing that it was already late Sunday morning, I just went with it. \u00a0I decided that this was working, and this was how the kitten would move, and that was that. \u00a0And that\u2019s how this guy\/kitten control logic ended up in the final game.<\/p>\n<blockquote><p>\n<img alt=\"Test Level.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/test-level.png\"\/><br\/>\n<em>The Testing Level<\/em>\n<\/p><\/blockquote>\n<p>Now it was time to add the puzzle elements. \u00a0Besides the guy and the kitten, there would be a roll of TP, a bag of litter, a toilet, and a litter box. \u00a0The 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. \u00a0I\u2019d 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. \u00a0In 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.<\/p>\n<p>At this point, I had the basics worked out, but only had the one test level finished. \u00a0Oh, I should mention that I was defining my levels in ASCII using Akihabara\u2019s help.asciiArtToMap() method. \u00a0This was a nice, quick visual way to throw levels together for testing that were easy enough to tweak. \u00a0I 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\u2026 to hilarious effect.<\/p>\n<blockquote><p>\n<img alt=\"ASCII Level Editing.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/ascii-levels.png\"\/><br\/>\n<em>My ASCII level editor! <img alt=\";)\" class=\"wp-smiley\" src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/icon_wink.gif\"\/><\/em>\n<\/p><\/blockquote>\n<blockquote><p>\n<img alt=\"Oops.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/oops1.png\"\/><br\/>\n<em>Oops\u2026<\/em>\n<\/p><\/blockquote>\n<p>Around this time in my retelling of the story was when <a href=\"http:\/\/www.ludumdare.com\/compo\/2011\/05\/01\/oof-not-sure-i-have-time\/\">I posted to the Ludum Dare site about not being sure I would finish<\/a>. \u00a0However, 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. \u00a0My 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. \u00a0I\u2019d try to do that by the end of Saturday, and leave Sunday for exploration!<\/p>\n<p>So now it was getting late on Sunday. \u00a0Besides 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. \u00a0In this intro an old man in a cave with fires gave the player the kitten. \u00a0Drawing the old man in red, as a nod to Zelda, made me realize that the player\u2019s guy should not also be red\u2026 and obviously he should have a green outfit like Link! \u00a0I was surprised I hadn\u2019t thought of that before.<\/p>\n<blockquote><p>\n<img alt=\"Final Competition Tileset and Jam Tileset.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/cels-comp-jam.png\"\/><br\/>\n<em>Final Competition Tileset (Left) and Jam Tileset (Right)<\/em>\n<\/p><\/blockquote>\n<p>For the competition version of my game, I used the default dialog functionality from Akihabara, which was a bit off from the Zelda experience. \u00a0For 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!<\/p>\n<p>In Part 2 I\u2019m going to talk about the levels themselves. \u00a0<strong>Warning! If you read on there will be level spoilers!<\/strong> \u00a0If this is where you leave me, thanks for reading! \u00a0I\u2019m thrilled that I participated in Ludum Dare, and I\u2019m really happy with what I managed to accomplish in 48 hours. \u00a0I\u2019ve learned some lessons, and I hope to do even more for the next Dare. \u00a0If you\u2019d like to play more levels for this game, let me know! \u00a0If there is interest, I certainly have ideas for how to continue the game from here. \u00a0Also, my tools if you are curious: Akihabara HTML5 game engine, TextMate, Photoshop CS4, CFXR, GarageBand with the magical8bitPlugin, Audacity, graph paper, and a pencil.<\/p>\n<p><strong><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-20\/?action=rate&amp;uid=3883\">Play the game \u2013 Click here for my game\u2019s competition entry page.<\/a><\/strong><\/p>\n<h3>Part 2 \u2013 The Levels<\/h3>\n<p>\u2026<\/p>\n<p><strong>HERE BE SPOILERS.<\/strong><\/p>\n<p>\u2026<\/p>\n<p>HERE BE SPOILERS.<\/p>\n<p>\u2026<\/p>\n<p>HERE BE SPOILERS.<\/p>\n<p>\u2026<\/p>\n<p>HERE BE SPOILERS.<\/p>\n<p>\u2026<\/p>\n<p>My original design for level 1 had no danger, and it also really did not present any logical puzzles to the player. \u00a0The 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. \u00a0It was meant to just teach the player the basic point of the game in a simple way. \u00a0I play tested my original level 2 with friends, skipping this simple level 1, and they understood the point of my game just fine! \u00a0Level 2 had a tiny puzzle built into it, too, so it was more fun. \u00a0I ended up trashing this original Level 1, and making my test level 2 the game\u2019s new level 1. \u00a0I\u2019m 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.<\/p>\n<blockquote><p>\n<img alt=\"Original Level 1.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-o1.png\"\/><br\/>\n<em>Very first Level 1\u2026 didn\u2019t make the cut.<\/em>\n<\/p><\/blockquote>\n<p>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. \u00a0The player also learns how to separate the guy and the kitten because of this, which is a key lesson for solving the puzzles.<\/p>\n<blockquote><p>\n<img alt=\"Real Level 1.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-1.png\"\/><br\/>\n<em>Real Level 1.<\/em>\n<\/p><\/blockquote>\n<p>Level 2 is the first level to add lava to create some danger for the player. \u00a0It\u2019s 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. \u00a0I 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. \u00a0I guess I was trying to moderate the challenge in this level, since the player is still learning. \u00a0I could have put a long river of lava along the right wall to make this level more difficult.<\/p>\n<blockquote><p>\n<img alt=\"Level 2.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-2.png\"\/><br\/>\n<em>Level the Second.<\/em>\n<\/p><\/blockquote>\n<p>Level 3 is the first level where the order that the player solves the puzzle matters. \u00a0A 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. \u00a0I\u2019ve gotten feedback that there\u2019s no way to restart this level when you mess up, however you can simply commit suicide by driving the kitten into the lava. \u00a0I agree that there may need be to be a reset for some puzzles, though. \u00a0I 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. \u00a0I have more of an intuitive understanding of the lava placement than any sort of hard and fast rules. \u00a0I did make some of the lava gaps tight so that navigating would require the player to arrange the guy and kitten in particular ways.<\/p>\n<blockquote><p>\n<img alt=\"Level 3.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-3.png\"\/><br\/>\n<em>Level #3.<\/em>\n<\/p><\/blockquote>\n<p>Level 4 probably starts out looking pretty simple to the player. \u00a0They 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. \u00a0Having the bottom wall and far left wall be solid with no lava makes this level a bit less challenging than it would otherwise be.<\/p>\n<blockquote><p>\n<img alt=\"Competition Level 4.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-4.png\"\/><br\/>\n<em>Level 4 from my competition entry.<\/em>\n<\/p><\/blockquote>\n<p>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\u2026 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.<\/p>\n<blockquote><p>\n<img alt=\"Jam Level 4.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-j4.png\"\/><br\/>\n<em>Level 4 from my Jam version.<\/em>\n<\/p><\/blockquote>\n<p>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. \u00a0There was originally only two paths through the lava towards the items below, one for the guy and one for the kitten. \u00a0I 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. \u00a0So, I added extra paths through the lava in order to make the player think a bit more about how to solve the puzzle. \u00a0I put items in tantalizing places that encourage the player to not pay attention and accidentally plunge the kitten into the lava. \u00a0I 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. \u00a0At 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.<\/p>\n<blockquote><p>\n<img alt=\"Jam Level 5.\" src=\"http:\/\/www.zachstronaut.com\/posts\/ld20-postmortem\/level-j5.png\"\/><br\/>\n<em>Level 5 from my Jam version.<\/em>\n<\/p><\/blockquote>\n<p>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. \u00a0I 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. \u00a0I 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\u2019ve have more paint brushes in my level design arsenal.<\/p>\n<h3>Thanks for sticking all the way until the end!<\/h3>\n<p>Well, that\u2019s all I\u2019m going to ramble on about. Thanks again for reading! \u00a0If you\u2019d like to play more levels for this game, let me know! \u00a0If you have any questions or criticisms, those are welcome, too.<\/p>\n<p><strong><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-20\/?action=rate&amp;uid=3883\">Play the game \u2013 Click here for my game\u2019s competition entry page.<\/a><\/strong><\/p>","time":"May 7th, 2011 10:15 pm","title":"It\u2019s dangerous to \u201cgo\u201d \u2013 Puzzler Postmortem","title_was_empty":false}