{"author_name": "localcoder", "cat": "LD #15 - Caverns - 2009", "comments": [], "epoch": 1252049700, "likes": 0, "metadata": {"p_key": "72466", "p_author": "localcoder", "p_authorkey": "1113", "p_urlkey": "108288", "p_title": "Cave Flyer afterthoughts", "p_cat": "LD #15 - Caverns - 2009", "p_event": "LD15", "p_time": "1252049700", "p_likes": "0", "p_comments": "0", "p_status": "UPD5", "us_key": "1113", "us_name": "localcoder", "us_username": "localcoder", "event_start": "1251417600", "event_key": "1", "event_name": "LD15"}, "text": "<p>I started with the idea of doing a &#8216;cave flyer, plus something cool&#8217;. I figured i would make the cave flyer first and the something cool later.</p>\n <p>Play the competition version <a title=\"Cave Flyer (blue) v1.0\" href=\"http://www.looseleafgames.com/ludumdare/ld15/\">here</a> and the much easier updated version <a title=\"Cave Flyer (blue) v1.2\" href=\"http://www.looseleafgames.com/ludumdare/ld15/v1.2/\">here</a>.</p>\n <p><strong>Using ActionScript</strong></p>\n <p>I have only been learning ActionScript for a little while but I&#8217;m very happy with it. I quickly got the basics of a cave flyer going, and whenever I got stuck I found plenty of tutorials and discussions online.</p>\n <p>I used free tools only (FlashDevelop and Flex 3 SDK) and found them perfectly sufficient.</p>\n <p><strong>&#8216;Next Actions&#8217;</strong></p>\n <p>I think that the best way to write game fast  is to act as though your next half-hour might be your last. If you could only add one more feature, what would you add? And how would you get it working as quickly as possible?</p>\n <p>When I follow this rule, I get good results. When I don&#8217;t follow this rule, I get bad results. So I think it&#8217;s a good rule.</p>\n <p><strong>Distractions</strong></p>\n <p>I did not follow the rule. I wasted my first evening working on a feature that I didn&#8217;t need and didn&#8217;t finish.</p>\n <p>I wanted to make an AI-controlled ship that flew around like the player&#8217;s ship, resisting gravity and avoiding obstacles. It would have been super-cool. I coding up a kind of crude AI navigation map, and made a big if-statement AI controller for the spaceship.</p>\n <p style=\"text-align: center\"><img class=\"size-large wp-image-10474 aligncenter\" src=\"http://www.ludumdare.com/compo/wp-content/uploads/2009/09/ai-coarse-navigation-grid-550x414.png\" alt=\"ai coarse navigation grid\" width=\"385\" height=\"290\" srcset=\"http://ludumdare.com/compo/wp-content/uploads/2009/09/ai-coarse-navigation-grid-550x414.png 550w, http://ludumdare.com/compo/wp-content/uploads/2009/09/ai-coarse-navigation-grid.png 810w\" sizes=\"(max-width: 385px) 100vw, 385px\" /></p>\n <p>I realised quickly that it wasn&#8217;t going to work. My if-statement AI couldn&#8217;t handle the compexities of gravity, obstacles and thrust. But I was having fun and I didn&#8217;t want to stop, so I spent hours tweaking it. I only stopped when I had to go to bed.</p>\n <p>The final game didn&#8217;t use the AI player. I should have spent all that time making life better for my <em>human </em>players.</p>\n <p><strong>Difficulty</strong></p>\n <p>The game is much too hard. I knew that it was too hard, and I made it easier, but not enough. I think the best thing I could have done is popped a link to the game in the irc channel &#8211; someone would have immediately told me that the difficulty was a problem.</p>\n <p><strong>Level Editor</strong></p>\n <p>I made a very simple level editor. It allowed me to lay out the terrain on each level with mouse clicks instead of hand-coding coordinates. This was my best idea all weekend &#8211; it did not take long to make and it let me create level screens in seconds.</p>\n <p><strong>Cutting Features</strong></p>\n <p>I wanted to combine my cave flyer with another simple game genre to make it unique. I had plans of making a trading game where you bought and sold goods at different cities (seperated by dangerous tunnels), or perhaps a Legend of Zelda-like game with a large world to explore and items to find.</p>\n <p>None of that made it into the release. Partly because I couldn&#8217;t decide exactly what I wanted to do, so I delayed the decision.</p>\n <p><strong>Last Minute Save</strong></p>\n <p>I was running out of time. I had a flying game with multiple screens to explore, but I still had no goal or motivation for the player. I finally started following the &#8216;next action&#8217; rule and attacking the most important problems first.</p>\n <ol>\n <li>There was nothing to fight &#8211; so I added a simple enemy that hovered and fired at the player.</li>\n <li>There was no goal &#8211; so I made enemies drop &#8216;metal&#8217;, and added a metal counter to the screen.</li>\n <li>Combat was unsatisfying, so I added some explosion-effects.</li>\n <li>The player couldn&#8217;t respawn, so I implemented respawning.</li>\n <li>You collected metal but had nothing to do with it.</li>\n </ol>\n <p>Number 5 hung around for a long time. Finally, I hacked up a simple upgrade system. I wanted to add icons for the upgrades, but cut it for time. I wanted to add some clever upgrades, but cut it down to what I could do with the code I already had &#8211; most of the upgrades simply change variables that were already in the game, like the player ship&#8217;s &#8220;mass&#8221; (resistance to impact force) or its refire rate.</p>\n <p>The upgrade system was crude, but it gave the rest of the game a purpose &#8211; now the player had a reason to fight enemies and collect their metal.</p>\n <p><strong>Colours</strong></p>\n <p>I stole an idea from Meritous, where the world gets redder when more enemies are around. I like it.</p>\n <p><strong>Conclusion</strong></p>\n <p>Next time I&#8217;ll try not to get distracted on &#8216;advanced&#8217; features when there are more immediate features that the game needs.</p>\n <p>I will make sure to do a user test on my game, to catch obvious problems like &#8220;It&#8217;s far, far too hard&#8221;.</p>\n <p>And if I&#8217;m making a &#8220;Classic Genre + Something Cool&#8221;, I&#8217;ll try not to wait too long before I add the &#8220;Something Cool&#8221;.</p>\n <p>Ok, I better get back to rating entries now&#8230;</p>", "time": "September 4th, 2009 2:35 am", "title": "Cave Flyer afterthoughts"}