{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h24m52s106-300x168.png","local":"\/data\/posts\/2013\/08\/3403316e90d52e2ef803d04921746519.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m30s232-300x168.png","local":"\/data\/posts\/2013\/08\/0540549ed12fba8103945ca666682031.png"}],"author_link":"author\/zeh\/","author_name":"zeh","cat":"LD #27","categories":["LD #27"],"comments":[],"epoch":1377772860,"event":"LD27","likes":5,"metadata":{"p_key":"80246","p_author":"zeh","p_authorkey":"0","p_urlkey":"289256","p_title":"Hijack Humans Hastily \u2013 Post mortem","p_cat":"LD #27","p_event":"LD27","p_time":"1377772860","p_likes":"5","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1377216000","event_key":"18","event_name":"LD27"},"source_url":"2013\/08\/29\/hijack-humans-hastily-post-mortem\/","text":"<p><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-27\/?action=preview&amp;uid=13340\">Hijack Humans Hastily<\/a> was my compo entry for Ludum Dare #27 under the theme \u201c10 seconds\u201d. It was a game developed in pure ActionScript 3 (using Adobe AIR), with the OUYA as its main target but with a web version available (given the platform). Here\u2019s <a href=\"https:\/\/www.youtube.com\/watch?v=fqyqa9gkfeA\">a short gameplay video<\/a>:<\/p>\n<p><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/fqyqa9gkfeA?feature=oembed\" width=\"500\"><\/iframe><\/p>\n<p>Here\u2019s the mandatory post-mortem, with a few development snapshots scattered around the article.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292742\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h24m52s106.png\"><img alt=\"First physics bodies\" class=\"size-medium wp-image-292742\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"\/data\/posts\/2013\/08\/3403316e90d52e2ef803d04921746519.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h24m52s106-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h24m52s106-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">First physics bodies<\/p><\/div>\n<p><strong>What went right<\/strong><\/p>\n<p><strong>Reusing stuff I already knew about<\/strong><\/p>\n<p>In my previous Ludum Dare entries, I\u2019ve rarely re-used many systems. I like to build my own stuff. In fact, so far I\u2019ve refused to use full-fledged engines, and while I\u2019ve used Unity previously, it was mostly an excuse to force myself to get acquainted with it.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292743\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m30s232.png\"><img alt=\"Particles for thrusters\" class=\"size-medium wp-image-292743\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"\/data\/posts\/2013\/08\/0540549ed12fba8103945ca666682031.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m30s232-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m30s232-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Particles for thrusters<\/p><\/div>\n<p>This time around, I had decided ahead of time that I would be using AS3 and a couple of frameworks for certain features (Nape for physics, Starling for GPU graphics). I had no <em>engine<\/em>, per se, but I complemented those by developing several additional libraries for game controller input, game looping, and physics level data loading (most of which are open-source and <a href=\"http:\/\/zehfernando.com\/category\/development\/\">posted on my blog<\/a>). I was certain I\u2019d spend more time working on a <em>game<\/em>, rather than working on <em>systems<\/em> for a game (which, as fun as it is in itself, doesn\u2019t make a good Ludum Dare entry).<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292744\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m55s245.png\"><img alt=\"Using image assets\" class=\"size-medium wp-image-292744\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m55s245-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m55s245-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h27m55s245-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Using image assets<\/p><\/div>\n<p>The strategy worked pretty well. While I still had to use a pretty amount of time getting basic stuff working (due to my lack of knowledge of some Nape features, for example), I felt I was actually building a game earlier than on my previous entries.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292745\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h30m13s71.png\"><img alt=\"More particles\" class=\"size-medium wp-image-292745\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h30m13s71-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h30m13s71-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h30m13s71-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">More particles<\/p><\/div>\n<p><strong>Art was straightforward<\/strong><\/p>\n<p>I loved doing the art for the game, even though\u00a0I hadn\u2019t been drawing in a while. While a bit was dropped and unused (specially background art), I think the simple aesthetic I reached was pretty flawless even if it wasn\u2019t brilliant.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292746\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h32m45s55.png\"><img alt=\"Image assets being added\" class=\"size-medium wp-image-292746\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h32m45s55-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h32m45s55-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h32m45s55-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Image assets being added<\/p><\/div>\n<p><strong>What went wrong<\/strong><\/p>\n<p><strong>The idea<\/strong><\/p>\n<p>Getting a game idea is always the hardest part for me, specially under pressure. I spent the whole first semi-day of the compo (Friday) doing nothing other than dicking around online, or reading, just because I couldn\u2019t figure out an idea. The idea Saturday morning \u2013 of a flying UFO capturing humans \u2013 was a mechanic I\u2019ve been thinking of for a while, but to be honest I didn\u2019t have the gameplay <em>challenge<\/em> or the relation to theme figured out for a while.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292747\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h35m42s255.png\"><img alt=\"Making the UFO landable\" class=\"size-medium wp-image-292747\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h35m42s255-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h35m42s255-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h35m42s255-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Making the UFO landable<\/p><\/div>\n<p><strong>Features were dropped (surprise)<\/strong><\/p>\n<p>While I tried having a smaller scope, some features were dropped out of the game. There\u2019s only one level, for example, and while it\u2019s randomized and it\u2019s all based in easily configurable parameters (size, assets, etc), I never had the time to add actual level progression and assets for more levels. The current level used (city-ish) is a mix of my two initial levels ideas, <em>park<\/em> and <em>city<\/em>.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292748\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h39m50s113.png\"><img alt=\"Adding human targets and background art\" class=\"size-medium wp-image-292748\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h39m50s113-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h39m50s113-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h39m50s113-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Adding human targets and background art<\/p><\/div>\n<p>Worst of all, I couldn\u2019t even begin to implement the enemy A.I. In the best Choplifter fashion, the second level of the games was supposed to game enemy <em>tanks<\/em> that would shoot at you. They would not do any damage, but their projectiles would throw you out of balance and make control a bit more difficult.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292749\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h41m04s141.png\"><img alt=\"Making humans capturable\" class=\"size-medium wp-image-292749\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h41m04s141-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h41m04s141-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h41m04s141-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Making humans capturable<\/p><\/div>\n<p><strong>Not enough time for bug testing\/QA<\/strong><\/p>\n<p>While I didn\u2019t run into any huge problem, my entry still had some issues I had no time to test. Those include some bugs related to web playback (losing 3D context when switching between fullscreen, for example), and some OUYA pitfalls I wasn\u2019t aware of (having the game <em>suspended<\/em>\u00a0by the system puts it in an unplayable state when restored). Those are things that are likely easily fixable, but were noticed too late.<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_292750\" style=\"width: 310px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h42m09s71.png\"><img alt=\"Adding building obstacles\" class=\"size-medium wp-image-292750\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h42m09s71-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h42m09s71-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/08\/vlcsnap-2013-08-29-12h42m09s71-550x309.png 550w\" width=\"300\"\/><\/a><p class=\"wp-caption-text\">Adding building obstacles<\/p><\/div>\n<p><strong>Conclusion<\/strong><\/p>\n<p>I think this was probably my most <em>well-rounded<\/em>\u00a0Ludum Dare entry so far. I\u2019m pretty happy with how it turned out, and I spent plenty of time watching <a href=\"https:\/\/www.youtube.com\/watch?v=bXpxJxokUiM\">my own time-lapse video of the development process<\/a>. It\u2019s great seeing it slowly transform before your eyes.<\/p>\n<p><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/bXpxJxokUiM?feature=oembed\" width=\"500\"><\/iframe><\/p>\n<p>Still, the relative smoothness of this Ludum Dare made me realize something. Ludum Dare is a lot more about the <em>content<\/em>, and I\u2019m not sure I\u2019m very happy with it.<\/p>\n<p>Because of the limited time, it\u2019s better to have a great idea, create a lot of content and gameplay, and test it out until you have something fun. Some of the compo and jam entries I\u2019ve tested were really fun to play, more than just being an interesting concept that <em>could<\/em> become a game.<\/p>\n<p>In my mind, I like to use Ludum Dares to explore new mechanics \u2013 mostly in the form of new <em>code<\/em> \u2013 and almost as an excuse for learning something. And to be sure, I\u2019ve done a lot of that; all Ludum Dares have been a great experience, even the ones where I didn\u2019t have anything very playable in the end. I learned a lot in a short period of time.<\/p>\n<p>Still, having to be forced to spend more time with content and gameplay is something bums me out. Having to ignore bugs unless they\u2019re showstopping, and having to get things to work <em>fast<\/em> (as opposed to <em>right<\/em>) is something that, over time, I\u2019ve almost forgot how to do. Nowadays, I like to get a cool system to work as a stepping stone. In a way, it\u2019s almost as if gameplay is secondary to that (in that it comes <em>after<\/em> that, not that it isn\u2019t important).<\/p>\n<p>Something else made me realize that. Over the past few months, I\u2019ve been slowly developing a game prototype on my free time. It makes me really, really happy. I take my time to get some things right \u2013 be it gameplay, animation, or lower-level systems \u2013 and it\u2019s very rewarding. I do one thing at a time. Putting a pause in developing that to do Ludum Dare #27 was good in technical terms \u2013 I ended up learning several features I plan on adding to my game, such as ray casting in Nape \u2013 but I also realized I wanted to get some things <em>right<\/em> rather than just getting them done. For example, my starling shape utility classes \u2013 to transform imported Flash Sprites and MovieClip into Starling textures \u2013 is a mess. It works, but there\u2019s a lot of edge cases where it doesn\u2019t work as intended, or where there\u2019s a lot of redundant code. And I\u2019ve used it in 3 projects already, with no actual time for refactoring them and making them <em>elegant<\/em>.<\/p>\n<p>I know the usual solution for Ludum Dares it to use an engine. Some might say I should have used Flashpunk, Citrus, or any other engine. And they would be right. But the reality is that it wouldn\u2019t have been as much fun for me. As weird as it sounds, to me, Ludum Dare is an excuse to <i>write<\/i>\u00a0something from the ground up. Not just to get something done, but to appreciate the <em>journey<\/em>\u00a0of development. And I\u2019m sure that, for many people, seeing something done is what motivates them over everything else. It surely motivates me. But I\u2019m starting to realize that I care too much about getting systems right. Maybe it\u2019s an annoying developer thing. My own professional work is always done on tight deadlines, make no mistake, but over time I\u2019ve learned to balance it all and use time well to get something that\u2019s mostly right from the get go. It normally means a better, more stable project in the long run.<\/p>\n<p>I\u2019m very grateful for everything I\u2019ve done and learned. Ludum Dare is an awesome idea. But I\u2019m not sure what I\u2019ll do with the next Ludum Dares. I might do them, but maybe as part of a team, or maybe without submitting anything. I may use it as an excuse to build a \u201cdemo\u201d of a system \u2013 e.g. my game controller classes, which need a few additional features \u2013 rather than an actual game to be played. We\u2019ll see.<\/p>\n<p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/as3\/\" rel=\"tag\">as3<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld27\/\" rel=\"tag\">LD27<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/postmortem\/\" rel=\"tag\">postmortem<\/a><\/p>","time":"August 29th, 2013 10:41 am","title":"Hijack Humans Hastily \u2013 Post mortem","title_was_empty":false}