{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/sprite.png","local":"\/data\/posts\/2014\/04\/7f98211faa52dac4defd6154c733b16e.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/Untitled11-245x300.png","local":"\/data\/posts\/2014\/04\/6667669487230cbd9397ef8fb2b8fa81.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/hud-187x300.png","local":"\/data\/posts\/2014\/04\/a94e480e6c3eeeef79cf76efb358550b.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/sprite.png","local":"\/data\/posts\/2014\/04\/7f98211faa52dac4defd6154c733b16e.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/Untitled11.png","local":"\/data\/posts\/2014\/04\/5a34d853566e1b6d63bd30538796707d.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/hud.png","local":"\/data\/posts\/2014\/04\/43c10208d55057ba318aaded04bbdb96.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_01.png","local":"\/data\/posts\/2014\/04\/ae6027bad21b18150872b2ecb0e84517.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_02.png","local":"\/data\/posts\/2014\/04\/3874f0c23d752f5c597d97a04dfd048f.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_03.png","local":"\/data\/posts\/2014\/04\/d4376169f0f704115325c78d8b61d2d8.png"}],"author_link":"author\/stvr\/","author_name":"stvr","cat":"LD #29","categories":["LD #29"],"comments":[],"epoch":1398775380,"event":"LD29","likes":7,"metadata":{"p_key":"82118","p_author":"stvr","p_authorkey":"0","p_urlkey":"292850","p_title":"LD29 Jam Post-mortem","p_cat":"LD #29","p_event":"LD29","p_time":"1398775380","p_likes":"7","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1398384000","event_key":"22","event_name":"LD29"},"source_url":"2014\/04\/29\/ld29-jam-post-mortem\/","text":"<p>Hi! My name\u2019s Steve, and I\u2019m a programmer at Dream Show Adventures. This Ludum Dare, we created <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-29\/?action=preview&amp;uid=26473\" target=\"_blank\">Chacket Valleyparker: DRILL BUNNY<\/a>, and I thought I\u2019d share my thoughts on the experience.<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-28\/?action=preview&amp;uid=26473\" target=\"_blank\">Last time around<\/a>, I did Ludum Dare with my kids, creating most of the content myself. However, I\u2019ve since joined the team at <a href=\"http:\/\/dreamshowadventures.com\/?page_id=31\" target=\"_blank\">Dream Show Adventures<\/a>, and I wanted to get the group to contribute. Luckily, it wasn\u2019t a tough sell!<\/p>\n<h2>Planning is 90% of Something<\/h2>\n<p>Last time around, I did almost no prep work at all, and it really bit me. This time, I resolved to have things set up well in advance. I knew I wanted to use <a href=\"http:\/\/phaser.io\/\" target=\"_blank\">Phaser<\/a>, but I\u2019m still learning the ins and outs of serious JavaScript development. I knew <a href=\"http:\/\/nodejs.org\/\" target=\"_blank\">NodeJS<\/a> and <a href=\"http:\/\/gruntjs.com\/\" target=\"_blank\">Grunt<\/a> could help me automate, and I wanted to use <a href=\"https:\/\/travis-ci.org\/\" target=\"_blank\">Travis CI<\/a> to build to a <a href=\"https:\/\/pages.github.com\/\" target=\"_blank\">Github page<\/a> automatically from <a href=\"https:\/\/github.com\/DreamShowAdventures\/LudumDare29\" target=\"_blank\">our source repo<\/a>. I also found a pretty good <a href=\"https:\/\/github.com\/gamecook\/phaser-project-template\" target=\"_blank\">Phaser template<\/a> to work from. It was a bit outdated, but that was fixed easily enough.<\/p>\n<p>Initially, we had two programmers, two artists, and a musician on board. Unfortunately, one programmer couldn\u2019t contribute, and one artist and the composer dropped out at the last minute. This left us with one artist (Andrew, who also serves as creative director) and one programmer, myself. This was unfortunate, but not unexpected. Still, it meant more work for the two of us.<\/p>\n<h2>Beginning of\u2026 the Beginning<\/h2>\n<p><a href=\"\/data\/posts\/2014\/04\/7f98211faa52dac4defd6154c733b16e.png\"><img alt=\"sprite\" class=\"alignnone size-full wp-image-357361\" height=\"28\" src=\"\/data\/posts\/2014\/04\/7f98211faa52dac4defd6154c733b16e.png\" width=\"16\"\/><\/a><\/p>\n<p>When the theme was announced brainstorming began immediately. The bunny\/drill concept came about pretty quickly, initially as a bit of an inverted shmup starring Chacket Valleyparker, a character that Andrew never got to use from an earlier project.<\/p>\n<p><a href=\"\/data\/posts\/2014\/04\/5a34d853566e1b6d63bd30538796707d.png\"><img alt=\"Untitled\" class=\"alignnone size-medium wp-image-357358\" height=\"300\" src=\"\/data\/posts\/2014\/04\/6667669487230cbd9397ef8fb2b8fa81.png\" width=\"245\"\/><\/a><\/p>\n<p>Getting started with Phaser was fairly easy, and we had a very very basic prototype quickly. However, I was dependent on Travis to build a working copy of the game, which meant that testing was painfully slow. Attempts to run the game locally failed, and I still don\u2019t know why. Searching for solutions online made it very apparent that the current system wasn\u2019t working, despite my attempts to plan ahead. That\u2019s when I stumbled upon Jeremy Dowell\u2019s <a href=\"http:\/\/codevinsky.ghost.io\/phaser-2-0-tutorial-flappy-bird-part-1\/\" target=\"_blank\">fantastic Flappy Bird Phaser tutorial<\/a>, but more importantly, his <a href=\"http:\/\/codevinsky.ghost.io\/phaser-tutorial-getting-started-with-generator-phaser-official\/\" target=\"_blank\">Phaser template building tool<\/a>.<\/p>\n<p>Unfortunately, this new template would require a lot of re-work. With a heavy heart, I implemented the new system, losing all of our progress in the process, with the hope that it would save time in the long run. I also <a href=\"http:\/\/stackoverflow.com\/questions\/11693074\/git-credential-cache-is-not-a-git-command\" target=\"_blank\">stored my github credentials via winstore<\/a> after another method to store username and password failed, and wrote a <a href=\"https:\/\/github.com\/DreamShowAdventures\/LudumDare29\/blob\/master\/push.bat\" target=\"_blank\">simple batch command<\/a> to make updating the repo easier.<\/p>\n<h2>Gaining Traction<\/h2>\n<p>It wasn\u2019t long before we had a playable prototype. Unfortunately, we had already lost about 24 hours in getting to this point, when ideally I prefer going to bed Friday night with something that works at least as a proof-of-concept.<\/p>\n<p><a href=\"\/data\/posts\/2014\/04\/43c10208d55057ba318aaded04bbdb96.png\"><img alt=\"hud\" class=\"alignnone size-medium wp-image-357365\" height=\"300\" src=\"\/data\/posts\/2014\/04\/a94e480e6c3eeeef79cf76efb358550b.png\" width=\"187\"\/><\/a><\/p>\n<p>With Andrew spriting rapid-fire, and new features going in all the time, there was great momentum until about noon Sunday. That\u2019s when I decided to implement a procedural tilemap generator for the background dirt. Basically, each new dirt block would see what was above and to the left of it when created, and pick from a subset of dirt blocks that would look nice next to the others. Unfortunately, I couldn\u2019t figure out how to implement this, and went through 3 complete systems (each taking several hours to code) before I found one that worked (and was severely scaled back from the original system). Early on I thought that I would have to simplify, but my hubris prevented me from accepting this early, when it would have saved the most time.<\/p>\n<h2>Sleep. I just want sleep.<\/h2>\n<p>The last day, I was very tired. However, we had some happy accidents. While our composer was still absent, Andrew had some great tunes he had made but never used, and we decided to put them in. Furthermore, my day-and-a-half of experience with Phaser, as well as digging through the docs extensively, made coding quick and painless. I was even able to add some localization (if your computer or browser\u2019s language is set to Chinese, Spanish, French, German, Italian, or Japanese, the title screen <em>should<\/em> load in that language) to the title screen, and I fulfilled my promise to let my kids help somehow by putting some apples they drew on the title.<\/p>\n<p><a href=\"\/data\/posts\/2014\/04\/ae6027bad21b18150872b2ecb0e84517.png\"><img alt=\"drill_01\" class=\"alignnone size-medium wp-image-357369\" height=\"300\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_01-188x300.png\" width=\"188\"\/><\/a><\/p>\n<p>At the end of the day, it was down to the wire. I scrambled to get a decent \u2018game over\u2019 screen, as we hadn\u2019t bothered with one prior. Including the company name was important, and almost got overlooked entirely! The boost mechanic was the last thing to go in, and was only fully functional about one minute before the deadline. Even now, boost speed doesn\u2019t scale over the course of the game (unlike the normal speed or I made sure that the variables most likely to need tweaking (turn speed, damage from different objects) were simple to find, and Andrew tweaked as needed while I focused on code. We pulled together, and we\u2019re proud of the final product.<\/p>\n<p><a href=\"\/data\/posts\/2014\/04\/3874f0c23d752f5c597d97a04dfd048f.png\"><img alt=\"drill_02\" class=\"alignnone size-medium wp-image-357372\" height=\"300\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_02-188x300.png\" width=\"188\"\/><\/a><\/p>\n<p>Unfortunately, we couldn\u2019t get to everything. Money was originally meant to be used to buy upgrades, with Chacket returning to the surface every time the drill overheated, visiting the store, and then trying again. Worms were meant to get in your way, and you would have to pay their medical bills if you touched them with your drill. Moles were also planned, but not drawn or implemented. I was also searching for a way to minimize the likelihood that rocks would overlap lava, but it\u2019s quite common. Also, we were hoping to scale up the difficulty as you got deeper, but that never happened, and the game is fairly easy. There\u2019s also no true win condition; originally, you were trying to get to the core.<\/p>\n<h2>What now?<\/h2>\n<p>Well, that\u2019s where you come in. If we get a positive response, we\u2019d love to develop DRILL BUNNY into our original vision, a sort of inverted shmup roguelike, where \u201cdeath\u201d (the destruction of your drill) forces you to upgrade and try again. Otherwise, it\u2019s back to work on Pipeworks, a game that is near and dear to our hearts, and has been in development for quite a while.<\/p>\n<p><a href=\"\/data\/posts\/2014\/04\/d4376169f0f704115325c78d8b61d2d8.png\"><img alt=\"drill_03\" class=\"alignnone size-medium wp-image-357382\" height=\"300\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/04\/drill_03-188x300.png\" width=\"188\"\/><\/a><\/p>\n<p>So, please provide feedback \u2014 negative and positive \u2014 here and <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-29\/?action=preview&amp;uid=26473\" target=\"_blank\">on the game\u2019s page<\/a> \u2014 so we can ensure that Chacket\u2019s future lives up to everyone\u2019s dreams. Thanks for playing, and keep digging!<\/p>","time":"April 29th, 2014 12:43 pm","title":"LD29 Jam Post-mortem","title_was_empty":false}