{"author_name":"Gremlin","cat":"LD #26","comments":[],"epoch":1368478620,"likes":1,"metadata":{"p_key":"42626","p_author":"Gremlin","p_authorkey":"12047","p_urlkey":"78261","p_title":"Postmortem: Nothing Left","p_cat":"LD #26","p_event":"LD26","p_time":"1368478620","p_likes":"1","p_comments":"0","p_status":"UPD5","us_key":"12047","us_name":"Gremlin","us_username":"gremlin","event_start":"1366934400","event_key":"16","event_name":"LD26"},"text":"<p>So, minimalism turned out to be a great theme for me. I&#8217;d already been thinking about the idea of just doing a simple, fun game to relax after all of the hard work I&#8217;d been doing on my <a href=\"http:\/\/isaackarth.com\/games\/meromy\/\" title=\"Meromy\" target=\"_blank\">other game<\/a>, so everything worked out. But not before a sidetrip through the insanity of development that was just a little bit more insane than usual.<\/p>\n <p>I decided to take a well-known genre and pare it down to the core experience. Hence, a bullet-hell shooter with no shooting. The player doesn&#8217;t even have to click on anything&#8211;the click at the start is just to make sure your web browser is focused. While the art style references De Stijl, I felt that for a game the essence was in the mechanics, not the visuals, so I avoided the visual minimalism of horizontal and vertical lines in favor of an interactive minimalism of a handful of actors and the tightly defined but emergent relationship between them.<\/p>\n <p>Despite everything in the game being a square, you can pretty much instantly tell how they relate to each other just but how they move and interact. I like how that turned out.<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nlsm2.gif\"><img src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nlsm2.gif\" alt=\"nlsm2\" width=\"168\" height=\"139\" class=\"aligncenter size-full wp-image-258647\" \/><\/a><\/p>\n <p>You can play the game here: <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=12047\" target=\"_blank\">http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=12047<\/a><\/p>\n <p><strong>What Went Wrong<br \/>\n <\/strong><\/p>\n <p><strong>Time<br \/>\n <\/strong><\/p>\n <p>Technically this didn&#8217;t go wrong so much as I knew going in that this was going to be an issue. I had a major paper due the week of Ludum Dare, so there was no way I would be able to devote the full time to the game, or even very much of it. I actually wasn&#8217;t sure if I was going to participate at all until a late evening conversation on Saturday made me realize that I had to get this idea out of my head. I always make a point of sleeping properly and not disrupting my usual routines, so even though I had deadlines about to steamroll me I ended up putting in about three hours on the game Saturday night and picking development back up at about ten or so on Sunday. In total, I probably spent about twelve to fifteen hours on the game.<\/p>\n <p><strong>Audio<\/strong><\/p>\n <p>I knew I wanted to get audio into the game, but a bug earlier in the day had put me behind, so I ended up with three hours to go, no audio&#8211;and no idea how to add it, because Processing.js doesn&#8217;t natively do audio. I had to learn HTML5 audio and make the sounds in three hours or less. Preferably less, because I like to leave some extra time at the end of Ludum Dare for breathing room. It worked in the end, but I&#8217;d have liked to have a bit more attention to the audio&#8211;but not to add much, because the minimalistic effects that are currently a part of the game do fit the theme. Just be glad my screeching temp sounds got replaced. <\/p>\n <p><strong>Testing<\/strong><\/p>\n <p>The procedural generator I wrote is fairly clever, given the time constraints. It divides the different possible features a wave can have into buckets and then uses Perlin noise to select a subset of those features to use. But it needs a bit more tuning than it has. I was the only one testing it, so I knew the ins and outs of the generator, but other people take a bit of time to figure it out and mostly die when the difficulty curve ramps up really sharply at the fifth level.<\/p>\n <p>If I had been able to watch other people play the game I probably would have been able to avoid the other big problem, which is that there&#8217;s no &#8220;Game Over&#8221; screen. I didn&#8217;t need it while I was testing, and I didn&#8217;t care what my score was, so I didn&#8217;t notice that it was missing. But having one turns out to be really important for the game. Adding it in was a simple 26-line change, and the post-comp version has it, but I feel that if I had other people test it during primary development the game would have ended up even better than it is now.<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nlsm.gif\"><img src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nlsm.gif\" alt=\"nlsm\" width=\"168\" height=\"139\" class=\"aligncenter size-full wp-image-258648\" \/><\/a><\/p>\n <p><strong>What Went Right<\/strong><\/p>\n <p><strong>Processing<br \/>\n <\/strong><\/p>\n <p>Processing was a great platform to work with. I had to implement my own collisions, but that wasn&#8217;t a problem since I already knew how. I was able to use a lot of programming tricks that are technically feasible anywhere, like adding easing to most of the movement, but Processing&#8217;s immediate feedback let me fine-tune to get the exact feel that I wanted. And feel is a huge part of a game like this. Processing.js was easy to get working once I figured out which PVector functions weren&#8217;t implemented yet&#8211;in fact, it was so easy that I switched to make the web version of the game the primary one for the competition release.<\/p>\n <p><strong>Scope<\/strong><\/p>\n <p>I gave myself permission to not do everything. That is, the game wasn&#8217;t going to be the best graphics, the best sound, the most innovative concept&#8211;I was going to focus on making a game, not starting a revolution. Minimalism turned out to help with that, since it let me make a game that is deliberately about the most basic expression of a core idea. <\/p>\n <p><strong>No Feature Creep<br \/>\n <\/strong><\/p>\n <p>Speaking of which, minimalism gave me an excuse for avoiding feature creep. Every time I had an awesome idea for something that would be an awesome addition to the game, I could just say, &#8220;Nope. Minimalism,&#8221; and go on my way.<\/p>\n <p><strong>Source Code Control<br \/>\n <\/strong><\/p>\n <p>I took a few minutes on Sunday to set up a git repository for the game. I never ended up needing it, but it let me experiment, knowing that there was always going to be a mostly-working version of the game that I could go back to. I can, right now, jump back to the compo-version or forward to the post-comp changes with no trouble at all. If you aren&#8217;t using source code control, take a few minutes to learn how. You won&#8217;t regret it.<\/p>\n <p><strong>Conclusions<\/strong><\/p>\n <p>Keeping yourself healthy is important, even during a crazy crunch situation like this. I made a point to sleep and eat&#8211;and that really helped when I needed the energy and concentration to learn a completely new thing three hours before the deadline.<\/p>\n <p>Finally, the community is a big part of why I participate. I make a point of rating a bunch of games&#8211;nowhere near all of them, but as many as I can find the time to do. I&#8217;ve already incorporated some of the suggestions I&#8217;ve received into the <a href=\"http:\/\/isaackarth.com\/games\/minimalism\/current.html\">post-comp version<\/a> I&#8217;m working on. I try to leave feedback that will help make the games better and I encourage you to do the same.<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nothingleft.png\"><img src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nothingleft-300x300.png\" alt=\"nothingleft\" width=\"300\" height=\"300\" class=\"aligncenter size-medium wp-image-258649\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nothingleft-150x150.png 150w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nothingleft-300x300.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/nothingleft.png 490w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=12047\" target=\"_blank\">http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=12047<\/a><\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/2d\/\" rel=\"tag\">2D<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/minimalism\/\" rel=\"tag\">minimalism<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/nothing-left\/\" rel=\"tag\">nothing left<\/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>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/processing\/\" rel=\"tag\">processing<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/processing-js\/\" rel=\"tag\">processing.js<\/a><\/p>","time":"May 13th, 2013 3:57 pm","title":"Postmortem: Nothing Left"}