{"author_name":"KilledByAPixel","cat":"LD  #18 - Enemies as Weapons - 2010","comments":[{"author_name":"","time":"August 26, 2010 7:51 am","epoch":1282827060,"text":"thanks for this post mortem. Liked the way you are using your particle engine to generate these trails. Good idea.","spam":"N"}],"epoch":1282825260,"likes":0,"metadata":{"p_key":"69235","p_author":"KilledByAPixel","p_authorkey":"2075","p_urlkey":"105038","p_title":"Protractor \u2013 Post mortem","p_cat":"LD  #18 - Enemies as Weapons - 2010","p_event":"LD18","p_time":"1282825260","p_likes":"0","p_comments":"1","p_status":"UPD5","us_key":"2075","us_name":"KilledByAPixel","us_username":"killedbyapixel","event_start":"1282262400","event_key":"4","event_name":"LD18"},"text":"<p>Last week I participated in Ludum Dare 18 and after some intense work delivered an interesting little game called Protractor, <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-18\/?action=preview&amp;uid=2075\">here&#8217;s a link to my competition entry<\/a>.\u00a0 Leading up to the comp I played some <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-17\/?action=top\">winners of the previous Ludum Dare<\/a> to get a good feel for what I could hope to accomplish.\u00a0 I prepped my  dev environment, picked up groceries, and set up a special SVN branch  for this comp so I could make engine hacks or workarounds without any  worry about breaking other projects.<\/p>\n <p>On Friday night when the theme was announced I just sat there and  thought while scribbling some ideas on paper.\u00a0 I wanted to do something  with physics and attaching enemies or weapons to yourself.\u00a0 At first I  was thinking of doing a round planet with humanoid figures using  telekinesis.\u00a0 I started to set this up in code but wasn&#8217;t really feeling  the idea so I just went to sleep.<\/p>\n <p><a href=\"http:\/\/frankforce.com\/wp-content\/uploads\/2010\/08\/sketch.jpg\"><img class=\"alignnone size-large wp-image-27217\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/sketch-550x361.jpg\" alt=\"sketch\" width=\"550\" height=\"361\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/sketch-300x197.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/sketch-550x361.jpg 550w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><br \/>\n <\/a><\/p>\n <p>Saturday morning I took a quick look at games with a similar concept for inspiration, specifically <a href=\"http:\/\/www.asahi-net.or.jp\/%7Ecs8k-cyu\/windows\/tf_e.html\">TUMIKI Fighter<\/a> and <a href=\"http:\/\/www.captainforever.com\/captainforever.php\">Captian Forever<\/a>.\u00a0  My design is based on simple abstract shapes so they are easy to  recognize on form alone allowing for the color to represent health.\u00a0 I  also planned on having random weapons with random colors and lots of  trails all over the place.\u00a0 For color values I have it set up so I can  randomize over HSV space to get away from the RGB kind of look.<\/p>\n <p>Building off the clean project in my game engine I set up an object  oriented structure where there&#8217;s a base class shared by the player and  enemies, a base class shared by all part types, and everything derives  from a GameObject which is part of the engine.\u00a0 By about 3 PM Saturday I  had the player moving around with the ability to pick up parts and  attach them.\u00a0 But so far the only part was a weapon and it was always  the same default weapon.\u00a0 I took at least 2 hours to put some polish on  that system with grabbing and attaching the weapon parts.<\/p>\n <p>Around this time I did a little art pass: tweaking colors, particle  systems and other visual aspects.\u00a0 I threw in an enemy that just  randomly tried to pull parts to it and shoot.\u00a0 By the end of Saturday night I wanted to have  all of the core functionality in game so I could take the next day to  add better AI, polish, balance and tweak.\u00a0 So I trudged along adding the  other 3 part types in a very rough state.\u00a0 Around midnight Saturday  night I posted a screen shot to demonstrate the core functionality.<\/p>\n <p><img class=\"alignnone size-full wp-image-27218\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_003711.jpg\" alt=\"snapshot_00371\" width=\"500\" height=\"500\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_003711-150x150.jpg 150w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_003711-300x300.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_003711.jpg 500w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n <p>Sunday I started out by just tweaking lots of little things.\u00a0 There  needed to be some background for movement reference so I just threw in  an extremely simple particle system of gray squares.\u00a0 I worked on the AI  a bit and improving their tractor beam use a little.\u00a0 I made them move  around pretty much randomly in near the player.\u00a0 I tried having them  turn to aim but that isn&#8217;t very reliable because of their poor ability  to configure their ship so I just made them cheat and rotate their  weapons directly.\u00a0 There just really wasn&#8217;t enough time to make any kind  of real AI at this point.\u00a0 For all this time I just had the player  spawn in next to some parts and an enemy that I had all placed in the  editor so I added logic to randomly spawn in enemies and parts out of  view of the camera.<\/p>\n <p><img class=\"alignnone size-full wp-image-27219\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0049-550x5011.jpg\" alt=\"snapshot_0049-550x501\" width=\"550\" height=\"501\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0049-550x5011-300x273.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0049-550x5011.jpg 550w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/p>\n <p>This felt good enough so I wanted to spend some time adding random   weapons to add both visual flair and gameplay depth.\u00a0 As a simple   balance measure all weapons have the same DPS with different firing   rate, bullet damage, and bullet count.\u00a0 Other aspects like speed,   spread, and color are just randomized.\u00a0 It seemed like a big part of  this game was reading where damage was coming from and going too so I  had an idea to make bullet size proportional to their damage to  facilitate a quick visual read.<\/p>\n <p>As the deadline loomed I started to freak out a little becuase there  were only a few hours left and I harly spent any time actually playing  my game.\u00a0 So I took a while to just play and polish random gameplay  issues.\u00a0 I experimented with several different control schemes but  decided to go with the simplest which seemed like a good enough choice  given  limited time.\u00a0 I threw in some random large solid black boxes to  both add an interesting element to game play and visuals while also  making the world feel more solid to the player.<\/p>\n <p>With about an hour left I focused on sound by adding more firing  sounds and a tractor attach sound.\u00a0 I scaled fire sound frequency by  bullet damage so weaker weapons sound higher pitched to make it sound a  little more dynamic.\u00a0 In the last half hour I just tried to play my game  only tweaking a few minor things.\u00a0 I had a score display of how many  enemies were killed with high score tracking but decided to remove it a  the last minute.\u00a0 Adding a scoring system can add a lot to a game but it  can also detract if done incorrectly.\u00a0 I like the idea of just  providing a pure experience without the need for imposed goals. The  implicit goal of growing your ship is as motivating a factor as any.<\/p>\n <p><img class=\"alignnone size-large wp-image-27220\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0086-550x343.jpg\" alt=\"snapshot_0086\" width=\"550\" height=\"343\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0086-300x187.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2010\/08\/snapshot_0086-550x343.jpg 550w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/p>\n <p>It&#8217;s was hard to come up with a name for my game in such a short  period of time.\u00a0 I went with Protractor because it sounds sort of  abstract and mathematical while also containing the word tractor for  tractor beam.\u00a0 I&#8217;m happy with the way my entry turned out and after  playing it for a bit since then it still seems to hold up pretty well.\u00a0  Next time I&#8217;d like to try to get some testers lined up, people offered  but I was so focused on working that I didn&#8217;t take the time to contact  anyone.\u00a0 Also I&#8217;d like to plan my time a little better so at the end I  have more time to just play and tweak.<\/p>\n <p>It&#8217;s impressive how well put together the Ludum Dare competition is.\u00a0 The  judging phase is currently in progress and it&#8217;s great fun playing  everyone&#8217;s game and doing my best to judge.\u00a0 It&#8217;s sort of like playing  Wario Ware on a grand scale.\u00a0 Thanks to everyone who put it together and  congrats to those who successfully delivered a game.<\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/protractor\/\" rel=\"tag\">protractor<\/a><\/p>","time":"August 26th, 2010 7:21 am","title":"Protractor \u2013 Post mortem"}