{"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 😀", "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 ’82 – 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.) However, 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 good 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 was 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 for 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 actually 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 ’82 – A Post-Mortem"}