{"author_name":"rjhelms","cat":"LD #34","comments":[{"author_name":"komjaur","time":"December 19, 2015 6:50 pm","epoch":1450569000,"text":"Github my favourite crashing simulator \ud83d\ude00","spam":"N"},{"author_name":"","time":"December 19, 2015 7:45 pm","epoch":1450572300,"text":"Hey, Im not sure if its only me, but the Mac version keeps crashing after setting the display settings. Maybe you could take a look?","spam":"N"},{"author_name":"","time":"December 20, 2015 10:39 am","epoch":1450625940,"text":"Thanks for the nice writeup!  I&#8217;ve never used the Unity built-in shaders and I&#8217;m not familiar with the idea of using a 2-camera setup.  Can you comment a bit more on those parts?","spam":"N"},{"author_name":"rjhelms","time":"December 21, 2015 11:59 am","epoch":1450717140,"text":"Well, I wrote up a thing (probably way too long of a thing) about the setup here:","spam":"N"}],"epoch":1450568460,"likes":3,"metadata":{"p_key":"9500","p_author":"rjhelms","p_authorkey":"39055","p_urlkey":"44718","p_title":"Xtreme Crop Duster Simulator \u201982 \u2013 A Post-Mortem","p_cat":"LD #34","p_event":"LD34","p_time":"1450568460","p_likes":"3","p_comments":"4","p_status":"UPD5","us_key":"39055","us_name":"rjhelms","us_username":"\/author\/rjhelms\/","event_start":"1449792000","event_key":"31","event_name":"LD34"},"text":"<p>Congratulations on another great Ludum Dare, everybody. I&#8217;ve been having an absolute blast playing through the mountain of games.<\/p>\n <p>I&#8217;ve never actually written a post-mortem for a Ludum Dare entry before, but figured that for my fourth go-around I probably should. As such, here is the post-mortem for my entry, <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-34\/?action=preview&amp;uid=39055\" target=\"_blank\">Xtreme Crop Duster Simulator &#8217;82<\/a>.<\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-34\/?action=preview&amp;uid=39055\" target=\"_blank\"><img class=\"aligncenter size-large wp-image-528477\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/39055-shot0-1450060290.png-eq-900-500-550x412.png\" alt=\"39055-shot0-1450060290.png-eq-900-500\" width=\"550\" height=\"412\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/39055-shot0-1450060290.png-eq-900-500-300x225.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/39055-shot0-1450060290.png-eq-900-500-550x412.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/39055-shot0-1450060290.png-eq-900-500.png 667w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n <p>As mentioned above, this is my fourth Ludum Dare entry (having previously participated in LD30-32, taking LD33 off due to a family commitment.)\u00a0However, this was my first time making it in for the compo deadline. I used my usual tools &#8211; Unity\/C#, etc &#8211; with the exception that I used Photoshop instead of GIMP this time around (as I finally shelled out for a subscription) and gave <a href=\"http:\/\/sfbgames.com\/chiptone\/\" target=\"_blank\">Chiptone <\/a>a spin for sound effects, which worked very nicely.<\/p>\n <h2>What went well<\/h2>\n <ul>\n <li>I actually finished a game for the compo deadline, after 3 Ludum Dares failing over to the jam when I wasn&#8217;t ready by 9pm on Sunday.<\/li>\n <li>Despite wringing my hands the whole weekend about what I thought was a dubious idea, looking back on it it&#8217;s a pretty good take on the theme.<\/li>\n <li>I had a lot of success with the retro feel, bringing a lot more polish and sophistication to the emulation of an old system than I had achieved in the past.<\/li>\n <li>Wrote my level loader in a way that should be reusable<\/li>\n <li>Didn&#8217;t go insane, or become miserable from stress and sleep deprivation<\/li>\n <li>Made something pretty fun<\/li>\n <li>Learned to use <a href=\"http:\/\/sidtracker64.com\/\" target=\"_blank\">SidTracker64<\/a>, which is an awesome app I&#8217;ll certainly be coming back to.<\/li>\n <\/ul>\n <h2>What went poorly<\/h2>\n <ul>\n <li>The GitHub client crashed. A lot.<\/li>\n <li>I didn&#8217;t reach all of my targets &#8211; I wanted 8 levels and at least 2 songs in the game, only achieved 5 levels and one (very short) song.<\/li>\n <li>Some of the sprite work isn&#8217;t as nice as I&#8217;d like, especially a few of the airplane rotations.<\/li>\n <li>Didn&#8217;t realize I was writing the game with controller support the whole time, so it&#8217;s not reflected in the in-game text.<\/li>\n <li>After the compo, I had way more trouble porting to other platforms than I should have &#8211; the Mac port went fine, but WebGL never worked right and the Linux port took a lot more futzing with than it should have. It especially didn&#8217;t help that each test of a Linux build involved rebooting my machine &#8211; hours become an eternity when you&#8217;re groping blindly for a fix, rebooting constantly to test small, unsuccessful changes.<\/li>\n <\/ul>\n <p>If you&#8217;re interested in a more detailed play-by-play of the weekend, it follows below the break. Otherwise, why not <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-34\/?action=preview&amp;uid=39055\" target=\"_blank\">give the game a try<\/a> and let me know what you think?<\/p>\n <p><span id=\"more-528442\"><\/span><\/p>\n <h2>Friday<\/h2>\n <p>With the themes revealed, the first thing to do was some brainstorming &#8211; I typically use <a href=\"https:\/\/www.xmind.net\/\" target=\"_blank\">XMind <\/a>for that, as it&#8217;s a\u00a0good way to get ideas down in a quick and dirty fashion with some structure to it. The mind-map ended up looking like this:<br \/>\n <a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/mindmap.png\" rel=\"attachment wp-att-528443\"><img class=\"aligncenter wp-image-528443 size-large\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/mindmap-550x274.png\" alt=\"mindmap\" width=\"550\" height=\"274\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/mindmap-300x150.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/mindmap-550x274.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/mindmap.png 1207w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n <p>With none of those ideas greatly appealing to me, by 11pm I had started in on the crop duster idea. I wasn&#8217;t thrilled about anything I had, but that was the best one on the list, so off I went. First thing was a single airplane sprite, and a controller to let it fly around &#8211; at this point, it just moved at a constant speed in the direction it was facing.<\/p>\n <div id=\"attachment_528453\" style=\"width: 310px\" class=\"wp-caption alignright\"><img class=\"wp-image-528453 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/friday-300x208.png\" alt=\"\" width=\"300\" height=\"208\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/friday-300x208.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/friday-550x382.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/friday.png 635w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><p class=\"wp-caption-text\">How things looked at the end of Friday night<\/p><\/div>\n <p>I knew from the first that I was going to use a retro graphics style, as I had done in my previous LD entries <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-30\/?action=preview&amp;uid=39055\">Smugglers!<\/a> and <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-32\/?action=preview&amp;uid=39055\">Red Threat<\/a>, so started with a 4-colour CGA palette. One thing that left me dissatisfied about those two games is that they didn&#8217;t compensate for the non-square pixels of older systems, so I wanted to find a way to do that in Unity. I hacked together a dirty two-camera setup which came close, and left it for the night. After that, feeling limited by the 4-colour palette, I made the choice to go to a Commodore 64-style 16 colour palette, drew the 8 sprites for the different airplane angles, and called it a night. My last commit clocked in at 2:41 AM.<\/p>\n <p>When I went to bed, I wasn&#8217;t thrilled about the idea for the game &#8211; I was fully prepared to wake up in the morning with a better idea, and scrap everything. That didn&#8217;t happen, as it turned out.<\/p>\n <h2>Saturday<\/h2>\n <p>Saturday morning, I woke up around 10am feeling somewhat sleep-deprived, and got right down to work. The day was a real flurry of activity, so I&#8217;ll just summarize it in point-form:<\/p>\n <ul>\n <li>Made improvements to the two-camera approach, allowing for pixel-perfect rendering of any in-game resolution and pixel aspect ratio. At this time I also put on the shader effects for CRT emulation, and the C64-style border around things.<\/li>\n <li>Implemented the actual flight dynamics, with flying up slowing the plane down and flying down speeding it up.<\/li>\n <li>Added behaviour for crop-dusting, takeoff, landing, and crashing &#8211; at that point, all of the basic game mechanics were in place.<\/li>\n <li>Added the UI, such as it is.<\/li>\n <li>(Re)implemented a level loader to load the stages from text files. I basically end up writing this same code from scratch every Ludum Dare, but I think this one is clean enough that I could package it up for easy reuse in the future.<\/li>\n <li>Added a whole bunch of terrain sprites.<\/li>\n <li>Added the other airplanes, with their &#8220;AI behaviour&#8221; of flying at a constant speed in a straight line.<\/li>\n <li>Implemented the first three levels.<\/li>\n <li>Added the sound effects (but no music at this point.)<\/li>\n <li>On-going balance tweaks<\/li>\n <li>Spent some time puttering around with music, but nothing came worth keeping.<\/li>\n <\/ul>\n <div id=\"attachment_528465\" style=\"width: 310px\" class=\"wp-caption alignright\"><img class=\"size-medium wp-image-528465\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/saturday-300x246.png\" alt=\"End of Saturday night - looks a lot like the finished product.\" width=\"300\" height=\"246\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/saturday-300x246.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/saturday-550x450.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/12\/saturday.png 740w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><p class=\"wp-caption-text\">End of Saturday night &#8211; looks a lot like the finished product.<\/p><\/div>\n <p>Even at this point, I\u00a0was having doubts about my idea, but feeling very good about the scope of what I&#8217;d taken on and my ability to complete it for the compo. In my past three tries at Ludum Dare, I&#8217;d aimed at the compo each time but taken on too much, so my games were only finished in time\u00a0for the jam. This time, I put the project to bed for the night with a clear vision of what was required to finish, and a positive feeling that I would be able to finish in time for the 9pm deadline.<\/p>\n <p>My final commit went in at 3:29AM, as I went to sleep with visions of the finished game in my head.<\/p>\n <h2>Sunday<\/h2>\n <p>If Friday was a sprint, Saturday was a marathon, and Sunday was a mad dash. My band typically rehearses on Sundays for a few hours, and Ludum Dare weekend is no exception, so for most of the day I had that looming over my head &#8211; being away from the project for two hours in the final stretch of the compo was not something I looked forward to. On top of that, sleep deprivation started to catch up to me &#8211; while I aimed to be awake at 9 and get right down to work, I actually slept in to almost 11.<\/p>\n <p>Thankfully, none of this was\u00a0actually a problem, and while I didn&#8217;t feel good about my prospects when I left the house for the practice, taking the time off really let me focus on what was actually left and I came back with less than three hours to finish, but with confidence that I&#8217;d be able to do so.<\/p>\n <p>The list of things I did on Sunday is a bit smaller, because I only had 10 hours to work less the two hours I was away. Before the rehearsal:<\/p>\n <ul>\n <li>More balance tweaking: made some of the levels a bit easier, and made the landing a bit more forgiving.<\/li>\n <li>Prepared the title, level clear, game over, and win screens, with all the control code to move between them. At this point, things were really a game!<\/li>\n <li>Made some crappy music, just to get the logic to have it playing in place.<\/li>\n <li>Realized that I had controller support the whole time, thanks to how I&#8217;d implemented the controls in Unity.<\/li>\n <\/ul>\n <p>And after the rehearsal:<\/p>\n <ul>\n <li>Actually wrote music I was happy with. I came across an iPad app called <a href=\"http:\/\/sidtracker64.com\/\" target=\"_blank\">SidTracker64<\/a>, which was easy enough to learn to use and fit the aesthetic perfectly, as it emulates the sound chip in a Commodore 64. I had aimed for at least two songs (one main theme, and another game-over theme) but ended up only having one.<\/li>\n <li>Added two more levels &#8211; level 5 was actually made in the final 10 minutes of the compo.<\/li>\n <li>Packaged it up and submitted it!<\/li>\n <\/ul>\n <p>If you want to see what the game looked like at the end of Sunday, you&#8217;re in luck &#8211; it&#8217;s <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-34\/?action=preview&amp;uid=39055\" target=\"_blank\">right here<\/a> on the Ludum Dare website!<\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/compo\/\" rel=\"tag\">compo<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld34\/\" rel=\"tag\">ld34<\/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\/unity\/\" rel=\"tag\">unity<\/a><\/p>","time":"December 19th, 2015 6:41 pm","title":"Xtreme Crop Duster Simulator \u201982 \u2013 A Post-Mortem"}