{"author_name":"zeh","cat":"LD #29","comments":[],"epoch":1399654380,"likes":3,"metadata":{"p_key":"29897","p_author":"zeh","p_authorkey":"13340","p_urlkey":"65363","p_title":"Escape Enclosures Expeditiously \u2013 Post-mortem","p_cat":"LD #29","p_event":"LD29","p_time":"1399654380","p_likes":"3","p_comments":"0","p_status":"UPD5","us_key":"13340","us_name":"zeh","us_username":"zeh","event_start":"1398384000","event_key":"22","event_name":"LD29"},"text":"<p>Now that <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-29\/?action=preview&amp;uid=13340\">Escape Enclosures Expeditiously<\/a> is finished, and I even had time to do a post-Ludum Dare version, I figured I&#8217;d post its post-mortem on the LD website! Granted, this is a cross-post <a href=\"http:\/\/zehfernando.com\/2014\/ludum-dare-29-post-mortem\/\">from my own blog<\/a>, but probably interesting for the audience here.<\/p>\n <p><em>Escape Enclosures Expeditiously<\/em> (or <a href=\"http:\/\/hosted.zehfernando.com\/ludumdare\/29\/post\/\">Escape Drill<\/a> in the improved, post-Ludum Dare version) is a simple puzzle-like isometric game where the player should to the exit of each map without being touched by one of the enemies. <\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-29\/?action=preview&amp;uid=13340\"><img class=\"aligncenter size-full wp-image-1866\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/thumb.png\" alt=\"Escape Enclosures Expeditiously\" width=\"500\" height=\"313\" \/><\/a><\/p>\n <p>It&#8217;s a short game &#8211; only 3 levels (plus an ending level). Here&#8217;s a video of a full playthrough with no deaths.<\/p>\n <p><iframe width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/81DRQ5po_vg?feature=oembed\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n <p>But of course, this being a post-mortem, what follows is some more information about the game development process.<\/p>\n <div id=\"attachment_1853\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/001.png\"><img class=\"size-medium wp-image-1853\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/001-300x164.png\" alt=\"First implementation of the tile terrain game object\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">First implementation of the tile terrain game object<\/p><\/div>\n <p>I started development without much of an idea of what I wanted to create. My initial approach &#8211; which is fast becoming my common approach for Ludum Dare compos &#8211; is to just try something different for the sake of learning, rather than actually trying to create a full fledged game. This means that my emphasis is normally on the technical side of things &#8211; as long as it&#8217;s <em>new<\/em> to me &#8211; rather than on the <em>fun<\/em>. It sounds harsh, but that&#8217;s what makes it fun to me.<\/p>\n <div id=\"attachment_1854\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/002.png\"><img class=\"size-medium wp-image-1854\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/002-300x164.png\" alt=\"Getting tile height and color calculation working\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Getting tile height and color calculation working<\/p><\/div>\n <p>This time around, I had my mind set on using <a href=\"http:\/\/unity3d.com\/\">Unity<\/a> to create a custom level editor to make game creation easier. I was inspired by several different things: <a href=\"http:\/\/www.gamasutra.com\/view\/news\/216256\/For_Square_Enix_Hitman_as_a_board_game_just_made_sense.php\">Hitman Go<\/a>, a surprisingly simple but ingenious twist on the Hitman series; isometric turn-based games to the likes of <a href=\"https:\/\/www.google.com\/search?q=tactics+ogre&amp;es_sm=93&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=lb1eU8mZE_OysQSyxoCQCQ&amp;ved=0CAgQ_AUoAQ&amp;biw=1920&amp;bih=965#q=tactics+ogre%2C+final+fantasy+tactics%2C+disgaea&amp;tbm=isch\">Final Fantasy Tactics, Tactics Ogre and Disgaea<\/a>; and <a href=\"http:\/\/forum.unity3d.com\/threads\/237485-DOOM-quot-E1M1-quot-Level-Recreated-in-Style!-Webplayer-10-Part-Video-Tutorial\">a series of tutorials<\/a> of someone recreating Doom&#8217;s classic E1M1 level on Unity using a plugin of some sort, something that showed me how powerful custom editors can be in Unity.<\/p>\n <div id=\"attachment_1855\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/003.png\"><img class=\"size-medium wp-image-1855\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/003-300x164.png\" alt=\"Allowing tile heights to be edited in the 3d view\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Allowing tile heights to be edited in the 3d view<\/p><\/div>\n <p>My goal, however, was not really to create <em>a game<\/em> in itself, but to learn how to extend Unity in a way that allowed that kind of map to be created more easily. I ended up with enough time to actually create some gameplay, but it&#8217;s almost a side effect.<\/p>\n <div id=\"attachment_1856\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/004.png\"><img class=\"size-medium wp-image-1856\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/004-300x164.png\" alt=\"Painting tiles with different surface types\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Painting tiles with different surface types<\/p><\/div>\n <p><strong>What went right<\/strong><\/p>\n <p><strong>Using Unity<\/strong>: in <a href=\"http:\/\/zehfernando.com\/2013\/2001-a-space-oculus-ludum-dare-26-post-mortem\/\">a previous Ludum Dare post mortem<\/a> I mentioned Unity as one of the sore spots of my experience (although it doubles as one of the pros too). This time around, it shows exclusively as a positive point. I was able to leverage my past experience with the platform (as little of it as I have), work on top of what I learned (and side projects as <a href=\"https:\/\/github.com\/zeh\/usfxr\">usfxr<\/a>) and basically spend more time implementing things rather than learning how to implement them.<\/p>\n <div id=\"attachment_1857\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/005.png\"><img class=\"size-medium wp-image-1857\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/005-300x164.png\" alt=\"Design of the first level\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Design of the first level<\/p><\/div>\n <p>That&#8217;s not to say there was not much to learn. Quite the opposite. At any point in development, I had dozens of browser tabs open with the most random items from Unity&#8217;s references or random tutorials, blog posts, and questions\/answers pages out there.<\/p>\n <div id=\"attachment_1858\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/006.png\"><img class=\"size-medium wp-image-1858\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/006-300x164.png\" alt=\"Testing enemy models\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Testing enemy models<\/p><\/div>\n <p>What&#8217;s more, my conclusion is that Unity is pretty powerful when creating custom editors and elements. I can see how the ability to customize your working environment can be a big boost for developers working on a game, especially on members dealing with content creation such as level design. Even if my level design solution was pretty ghetto (I had the worst method for painting tiles with different terrain types, for example), it was still a pretty important time saver.<\/p>\n <div id=\"attachment_1859\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/007.png\"><img class=\"size-medium wp-image-1859\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/007-300x164.png\" alt=\"Implementing movement and enemy AI\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Implementing movement and enemy AI<\/p><\/div>\n <p>I still feel a little weird with the platform. Its emphasis on what I can only describe as <em>concrete<\/em> elements, such as adding scripts to physical objects and using the 3d view for everything, is still what feels strange to me. That, and maybe the emphasis on global access to everything from everything and a lot of helper functions to query the level elements. However, I believe I&#8217;m slowly learning to ignore my impulse for abstractionism and just get stuff done as inelegant as I might think it is. My hope is that with time I&#8217;ll understand what&#8217;s the actual ethos of the platform for performance and correctness, but I know I&#8217;m still far from that point.<\/p>\n <div id=\"attachment_1861\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/009.png\"><img class=\"size-medium wp-image-1861\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/009-300x164.png\" alt=\"Making multiple levels possible\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">Making multiple levels possible<\/p><\/div>\n <p><strong>Using simple assets<\/strong>: this time I purposely used very simple assets. The only texture used in the game was a 256&#215;256 noise texture quickly created in Photoshop, and all the 3d models were simple boxes spliced and reshaped into basic shapes using <a href=\"http:\/\/www.blender.org\/\">Blender<\/a>. I get very easily distracted into doing mundane tasks such as making sure none of my vertices are duplicated and everything invisible has a proper name or something of the sort, so I&#8217;m happy I managed to not spend too much time doing complicated art. I only had to deal with broken normals twice!<\/p>\n <div id=\"attachment_1862\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/010.png\"><img class=\"size-medium wp-image-1862\" src=\"http:\/\/zehfernando.com\/wp-content\/uploads\/2014\/04\/010-300x164.png\" alt=\"The final game scene with all levels\" width=\"300\" height=\"164\" \/><\/a><p class=\"wp-caption-text\">The final game scene with all levels<\/p><\/div>\n <p><strong>Conclusion<\/strong><\/p>\n <p>Now, what went wrong? Nothing, I think. This was fun, and I learned a lot. Given more time for level design and testing, I&#8217;m sure I could come up with more, and better puzzles. But that&#8217;s true of every Ludum Dare, so that&#8217;s something I can live with.<\/p>\n <p>You can play Escape Enclosures Expeditiously <a href=\"http:\/\/hosted.zehfernando.com\/ludumdare\/29\">on the web<\/a>. The improved, post-Ludum Dare version <a href=\"http:\/\/hosted.zehfernando.com\/ludumdare\/29\/post\/\">is also available online<\/a>. And as a test of the respective website APIs, I&#8217;ve <a href=\"http:\/\/www.kongregate.com\/games\/SharkWithTasers\/escape-drill\">uploaded a version to Kongregate<\/a> (with high-scores) and to <a href=\"http:\/\/www.newgrounds.com\/portal\/view\/638876\">Newgrounds<\/a> (not supporting medals or scoreboards <em>yet<\/em>; I&#8217;m currently implementing that as an exercise for future LDs).<\/p>","time":"May 9th, 2014 11:53 am","title":"Escape Enclosures Expeditiously \u2013 Post-mortem"}