{"author_name":"LoneStranger","cat":"LD #14 - Advancing Wall of Doom - 2009","comments":[{"author_name":"","time":"April 22, 2009 12:08 am","epoch":1240376880,"text":"Great Postmortem,","spam":"N"}],"epoch":1240362540,"likes":0,"metadata":{"p_key":"73319","p_author":"LoneStranger","p_authorkey":"203","p_urlkey":"109141","p_title":"SuperShred \u2013 Postmortem","p_cat":"LD #14 - Advancing Wall of Doom - 2009","p_event":"LD14","p_time":"1240362540","p_likes":"0","p_comments":"1","p_status":"UPD5","us_key":"203","us_name":"LoneStranger","us_username":"lonestranger","event_start":"1239926400","event_key":"90","event_name":"LD14"},"text":"<p>Since it&#8217;s been a few days, I wanted to write up a postmortem on my LD48 #14 entry before I forgot too much.<\/p>\n <p><strong>Background<\/strong><\/p>\n <p>I didn&#8217;t think that any of the final themes were very good, or at least, anything I was in the mindset to tackle last weekend.\u00a0 When the theme Advancing Wall of Doom was announced, I was sort of disappointed.\u00a0 I hadn&#8217;t come up with any ideas for it, even though it was a front runner earlier in the week.\u00a0 I think I sat down and watched some TV for about an hour and a half before I even started coding anything.\u00a0 I flipped through the program guide for any ideas but nothing.<\/p>\n <p>The idea can be literal, and I think most people created games with a wall in them.\u00a0 Advancing Wall of Doom has been done in many games as an actual wall, so this wasn&#8217;t a bad design.\u00a0 From the start I decided that I didn&#8217;t want to use an actual wall.\u00a0 Figuratively, the AWoD is just something that you cannot stop from coming.\u00a0 You just continue until you cannot continue anymore.\u00a0 In lots of games, this wouldn&#8217;t be any fun, so if you can survive for a period of time, you win.\u00a0 In a way, Tetris is an AWoD.\u00a0 You can do what you can to keep the wall (i.e. the top of the well) as far away as possible, but eventually it gets closer (pieces fall faster) and you have less room to maneuver.<\/p>\n <p><strong>Mechanics<\/strong><\/p>\n <p>I knew that for this LD, I wanted to do something very, very simple.\u00a0 I had two birthday parties and one playoff NHL game to attend to, so I didn&#8217;t have a full 48 hours.\u00a0 I remembered an idea I had for a typing game, and decided that an AWoD would make a good way to push the user to type faster.<\/p>\n <p>Gameplay is simple.\u00a0 The wall moves from the left to the right as the phrases come from the right to the left.\u00a0 If they meet, the game is over.\u00a0 Since this is a typing game, a shredder played the part of the wall.\u00a0 It starts off slow and as the user makes mistakes, the shredder picks up speed.\u00a0 If the user can complete ten phrases without ending the game, they will get a short reprieve by setting the shredder back to the default advancing speed, but it will never ever stop.<\/p>\n <p><strong>Coding<\/strong><\/p>\n <p>I mapped out a couple objects that I would need and started getting them working.\u00a0 First the phrases, then the AWoD disguised as a red box.\u00a0 I progressed a bit at a time, getting the phrases to move, the wall to move, then for them to interact.\u00a0 Input was probably the trickiest.\u00a0 I used the KeyEvent VK codes, and they don&#8217;t tell you what character was input, only what key.\u00a0 So it will tell you that the user hit &#8216;G&#8217; but it doesn&#8217;t tell you if it&#8217;s a &#8216;G&#8217; or &#8216;g&#8217;.\u00a0 You have to check for the presence of the Shift key.\u00a0 For the alphabet and numbers, it wasn&#8217;t a problem, but it got sticky for a couple of the symbol characters.\u00a0 For some reason, the VK_QUOTE or apostrophe key and VK_BACK_QUOTE or backwards single quote were not actually showing up when I hit those keys.\u00a0 After fussing with them for an hour, I ended up &#8216;hacking&#8217; a solution together than just checked for the input I was getting from those keys.<\/p>\n <p>By the end of Friday, I had most of the idea done, it just needed something to make it a game.\u00a0 One of the ways you can do that is add points.\u00a0 So I came up with the idea that you would get a point per character and maybe some bonus for completing the phrase.\u00a0 As I was beginning to code that, I figured stats on your successful streaks would be great, and then realized that you should get more points the better you are doing.\u00a0 Instead of one point per character, you got your current successful typing streak.\u00a0 So that works.<\/p>\n <p>I started working on the graphics for the wall and settled on a box with teeth on one end.\u00a0 I drew some teeth and photoshopped them onto the box. By the end of Saturday, I felt that I had a reasonably fun game that looked decent too.\u00a0 Did I say Saturday night?\u00a0 I meant Sunday morning at 5am.<\/p>\n <p>Sunday, after four hours sleep, I fixd the two keystroke bugs and add some actual phrases for the user to type. Along with those phrases, I created the WordKeeper to keep track of them, and added a PopupText class to manage the popup text that shows up when you do good or bad, or complete the stage.<\/p>\n <p>So I managed to complete most of what I wanted to do.\u00a0 Of course, there is always polish that could be done, but because I had some things to do on Sunday, my time was limited.<\/p>\n <p><strong>What I Did Well<\/strong><\/p>\n <p>I think I did a great job at scaling down the game.\u00a0 I didn&#8217;t need a lot of graphics.\u00a0 In the past, I&#8217;ve spent a little time drawing some art and photoshopping it and while that may take a lot of time, I didn&#8217;t have to worry much at all for this compo.\u00a0 I do miss the art style from my last compos though, so I&#8217;ll try to use them next time.<\/p>\n <p>Input is usually one of the pain in the rear things for me.\u00a0 I have to come up with a scheme that is intuitive, but I also have to take that input and figure out how to use it.\u00a0 In the Roads compo, I had to learn how to use the mouse to steer a car on a road and make it seem legit based on the speed of the car.\u00a0 I wasted a lot of time on that.<\/p>\n <p>Sound effects.\u00a0 Oh man.\u00a0 Dr. Petter&#8217;s sfxr tool rocks for this one.\u00a0 I think I spent less than five minutes generating sounds that I felt fit what I needed.\u00a0 They&#8217;re simple and very Atari 2600-ish, but they offer great feedback while playing the game.\u00a0 I tried his music program, but I lack talent in music and should probably try to learn it outside of a compo.<\/p>\n <p>This was the fourth competition that I&#8217;m using the same general basecode.\u00a0 I&#8217;m getting used to it and making changes here and there so I don&#8217;t have to waste hours trying to figure out how to do basic things for every compo.<\/p>\n <p><strong>What I Did Wrong<\/strong><\/p>\n <p>Surprisingly, not much this time around.\u00a0 I had three things that were planned for the same weekend.\u00a0 One birthday party each day, and a playoff hockey game Sunday night.\u00a0 I knew that if I didn&#8217;t get the game mostly done by Saturday night, I wouldn&#8217;t have much time to complete it on Sunday, so that&#8217;s what I aimed for.\u00a0 Sunday was mostly spent doing the last bit of features and polished a little bit of it.<\/p>\n <p>I would have liked to have made the stat display actually look better with some kind of graphical overlay.\u00a0 It&#8217;s really the only part of my game that I think looks boring.\u00a0 Sure, the shredder could be better, but it&#8217;s ok the way it is.<\/p>\n <p>Some of the phrases submitted with the final entry are really long.\u00a0 They should have been split up into two or more.\u00a0 It also might have been easier for the player if I put the entire phrase un-scrolling on the bottom of the window so they could look at that.\u00a0 I think one of the voters already realized the maximum WPM you can get is around fifty since the phrases scroll is constant.\u00a0 Another way to fix it would be to speed it up if your recent WPM is past a certain threshold and slow it down if it&#8217;s not.<\/p>\n <p><strong>What To Do Next Time<\/strong><\/p>\n <p>Next LD competition, I still want to scale down, even if I have more time that weekend.\u00a0 With what I did in the time I had for AWoD, I could really make it great with another six or twelve hours.<\/p>\n <p>I want to continue with my basecode and work to make it more robust of a base.\u00a0 I see things that other people are doing and I know I&#8217;ll never be able to do them if I don&#8217;t build a better foundation and skip the mundane basic code.<\/p>\n <p><strong>Conclusion<\/strong><\/p>\n <p>I&#8217;m really happy with this compo.\u00a0 This was my fifth competition, and the third where I actually submit a final version.\u00a0 I&#8217;d like to continue as this is a great way to keep skills sharp and perhaps learn something along the way.\u00a0 See you in August for LD48 #15!<\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/advancing-wall-of-doom\/\" rel=\"tag\">advancing wall of doom<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld48_14\/\" rel=\"tag\">ld48_14<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/postmortem\/\" rel=\"tag\">postmortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/supershred\/\" rel=\"tag\">supershred<\/a><\/p>","time":"April 21st, 2009 8:09 pm","title":"SuperShred \u2013 Postmortem"}