{"author_name":"AAGH Games","cat":"LD #33","comments":[],"epoch":1441205280,"likes":2,"metadata":{"p_key":"13093","p_author":"AAGH Games","p_authorkey":"504408","p_urlkey":"48344","p_title":"Persistence Pays Off \u2013 A Dial \u201cM\u201d for Monster Retrospective","p_cat":"LD #33","p_event":"LD33","p_time":"1441205280","p_likes":"2","p_comments":"0","p_status":"UPD5","us_key":"504408","us_name":"AAGH Games","us_username":"AAGH Games","event_start":"1440115200","event_key":"29","event_name":"LD33"},"text":"<p><img class=\"aligncenter wp-image-499083 size-full\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/dmfm-retro1.png\" alt=\"\" width=\"460\" height=\"113\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/dmfm-retro1-300x74.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/dmfm-retro1.png 460w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/>Heya everyone. I\u2019m Budaniel, the artist and programmer for AAGH Games, and this is a retrospective for our LD33 entry, <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-33\/?action=preview&amp;uid=38918\" target=\"_blank\">Dial \u201cM\u201d for Monster<\/a>. This was both the most challenging and the most rewarding Ludum Dare of the four we have entered thus far, so I&#8217;m going to tell our tale of troubled development in this <em>Dial &#8220;M&#8221; for Monster Retrospective<\/em>.<\/p>\n <p>This kind of going to be a long one, but hopefully it\u2019s an interesting read.<\/p>\n <p><strong>Friday: The First Night (and the days leading up to it)<\/strong><\/p>\n <p>I was psyched to get this Ludum Dare under way for a few weeks, but as the days counted down I got more and more distracted, to the point where, on the evening the theme was to be announced, I was so far from prepared that I was worried if we would get anything done at all. I usually have all of my tools ready and tested by that point and our live streaming setup has been configured already. This time I was scrambling to get it all in place by 9 PM that Friday.<\/p>\n <p>When the theme was finally announced, our live stream kicked off and we got to work brainstorming. I\u2019m personally of the opinion that the theme itself is never a hurdle \u2013 if you can\u2019t think of something interesting to go with a theme, you\u2019re not trying hard enough. In the first 30 minutes we rattled off a list of concepts what constitutes a monster, things like older\/younger siblings, politicians, aliens, dai-kaiju, and more. The concept we settled on was rather mundane (a monster lurking in the woods hunting survivors) but our ultimate goal was anything but \u2013 we wanted our survivors to collect tools and materials to build a shelter, all while trying to stay fed, hydrated, warm, and safe. This meant a working survivor AI, and that was something we \u2013 and I in particular as the programmer &#8211; had not done before.<\/p>\n <p>Things went about as well as you would expect from someone making an AI like this from scratch for the first time ever on a 72 hour deadline \u2013 progress completely stalled. The first four or so hours were making the survivors run from the monster, approach the fire, and locate nearby any food. We started with just one survivor for simplicity\u2019s sake, and even that presented so many challenges. We adjourned that night with little more than a monster that moved and caused survivors to flee, which was way less than we wanted.<\/p>\n <p style=\"text-align: center\"><strong><em>Progress at the end of Friday<\/em><\/strong><\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-fri.png\"><img class=\"aligncenter wp-image-499058 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-fri-300x199.png\" alt=\"Progress at the End of Friday\" width=\"300\" height=\"199\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-fri-300x199.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-fri-550x364.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-fri.png 572w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p><strong>Saturday: Long Days and Delirium<\/strong><\/p>\n <p>We picked back up late on Saturday because I overslept after the previous night\u2019s debacle. I spent the first hour or so making the survivors seek food and then retreat to the heat and safety of the fire. We \u2013and our viewers on the livestream \u2013 marveled at the sheer stupidity of our survivors AI, to the point that we were thinking of making that the selling point, thinking of names like \u201cDunces with Wolves\u201d and \u201cDarwin in Action,\u201d with the plot being that you\u2019re validated in hunting them because if they\u2019re stupid enough to wander into the woods without being able to take care of themselves, then they deserve what\u2019s coming to them.<\/p>\n <p>At the time we were using basic letters to signify everything from the fire to the trees. We talked about the graphics we were planning to replace them with, such as what kind of monster we actually were, when one of our viewers insisted that we keep the text-based aesthetic. After some deliberation, we agreed to keep it, but only after I touched it up some.<\/p>\n <p>Around midday I passed our project over to Floata, our musician\/level designer to lay out the map while I took a break and distressed. When I got it back that evening the map was complete, which was good, but now it was time to resume work on the gameplay, which was less so. We again live streamed our work, to an apparent vacuum. It was actually probably a good thing we didn\u2019t have a lot of viewers, because I was so tired that I was making dumb, sometimes crass jokes and Floata was mumble-grumping through most of it. We did manage to get the four planned survivors on the screen together at last, and we finally got them foraging for food and avoiding the monster. Unfortunately that was as far as we got this night before we had to call it until the next day.<\/p>\n <p style=\"text-align: center\"><strong><em>Progress at the end of Saturday<\/em><\/strong><\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sat.png\"><img class=\"aligncenter wp-image-499059 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sat-300x200.png\" alt=\"Progress at the end of Saturday\" width=\"300\" height=\"200\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sat-300x200.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sat-550x367.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sat.png 807w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p><strong>Sunday: Where It All Breaks <\/strong><\/p>\n <p>This was the day where I was sure that we weren\u2019t going to finish on time. We started early (skipping the live streaming since we were struggling so much) and the first thing we did was christen the game with a name. Since we were committed to the art style (and therefore the monster looking like the letter M), we decided to name it Dial \u201cM\u201d for Monster. Our original logo looked like this.<\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo1.png\"><img class=\"aligncenter size-medium wp-image-499043\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo1-300x198.png\" alt=\"logo1\" width=\"300\" height=\"198\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo1-300x198.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo1.png 523w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <p>We got to work trying to make the AI protect itself from the monster. We originally had the survivors hunting tools to make a gun but like so many other pieces of the project, that didn\u2019t make the cut due to time constraints, so they were all armed with knives and arrows instead. Way too much time was wasted getting the survivors to shoot at the monster (instead of every which way), but that was nothing compared to getting the survivors to explore more of the map. Originally there were just four survivors, and they were all grouped around the central fire, meaning that 90% of our huge map went largely unused. I decided to lay out a \u201cbreadcrumb\u201d trail for them to follow in the form of (invisible) dots that would guide them from place to place. It was terribly finicky to work with, placing them just right so they were neither too close to each other\/food\/fires or too far away to be detected, but I eventually got it working somewhat. What I really didn\u2019t want was for them to wander a randomly selected direction \u2013 I wanted them to follow the paths through the trees to more food or the next fire.<\/p>\n <p>That took most of Sunday, but once that was done, we figured we were in the clear as far as basic mechanics. Sure, we had to cut the survivor item collection and base building, and yeah they weren\u2019t as skilled as we would have liked, but we had the gist of our vision working. Or so we thought \u2013 it was at this point it all went to hell.<\/p>\n <p>Whenever we tried to rapidly attack a survivor, the game would lock up the browser, forcing us to crash said browser to get it to close. We figured it had to do with hammering on the spacebar, so we tried various fixes. We tried delaying the monster\u2019s attack speed to only accept attacks every 2 seconds. We tried changing the attack key to something other than spacebar. We tried removing the \u201cslashed\u201d hit animation on the survivors. We tried making the attacking happen on contact rather than via a button press. Nothing worked. Every time we aggressively attacked the survivors, the game froze. We didn\u2019t find any sort of fix on Sunday, so the problem had to get rolled over to Monday. The only positives from Sunday were a redrawn logo (to the one currently in the game), a working GUI and updated visuals (even if they weren&#8217;t in the game yet). Here\u2019s a comparison chart of the old graphics to the new\/current ones, showing the progress that was made (click the picture for full size).<\/p>\n <p style=\"text-align: center\"><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/DMFM-visualevolution.jpg\"><img class=\"aligncenter wp-image-499045 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/DMFM-visualevolution-142x300.jpg\" alt=\"DMFM-visualevolution\" width=\"142\" height=\"300\" \/><\/a><\/p>\n <p style=\"text-align: center\"><strong><em>Progress at the end of Sunday<\/em><\/strong><\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sun.png\"><img class=\"aligncenter wp-image-499060 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sun-300x201.png\" alt=\"Progress at the end of Sunday\" width=\"300\" height=\"201\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sun-300x201.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sun-550x368.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/ld33-sun.png 807w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p><strong>Monday: I Love It when a Plan Comes Together<\/strong><\/p>\n <p>Monday was another early start, and with just over 11 hours before the deadline, we had to get this crashing ironed out. While we brainstormed on how to fix it, I made the end credits and instruction screens (if there\u2019s one thing we\u2019ve learned over our years of making games, it\u2019s to never assume anything is obvious to the player, so explain as much of the game to them as possible), plus we finally got Floata\u2019s music in the game, complete with a mute button (another lesson we have learned is that a lot of people would rather listen to their own music &#8211; or the TV, or a movie &#8211; so always give them the option to silence the game).<\/p>\n <p>We fought the problem until after 4 PM, or five hours to the deadline, making no progress. I was getting frustrated and was just about to compile a playable copy for Floata and some other testers to try when I had an idea for one last test: remove the \u201cpanic state\u201d from the survivors that caused them to turn and run from the monster. I made the change without taking time to test it, compiled a build and sent it for testing before going to eat dinner. When I get back from dinner, Floata and our primary tester had both gotten back to me with the following update: the game wasn\u2019t freezing the browser anymore, but the survivors were now ruthless killers that stuck to the monster with a vengeance.<\/p>\n <p>The problem had been found \u2013 it was the survivors\u2019 panic state that caused them to try and flip 180 degrees and run. The issue was that as long as the monster was nearby &#8211; which it had to be to try and spam the attack command \u2013 the survivors were firing their panic state behavior every tick, and that was overloading the game in short order.<\/p>\n <p>It took us probably an hour to fully replace the panic state with something that didn\u2019t crash the game but didn&#8217;t have the survivors latch on the monster and murder it almost instantly, but now we had a working, non-crashing game. A last-minute decision was made to move from four, individually colored survivors to four packs of three single-colored survivor packs. We stuck them around different fires, colored the fires slightly to match their pack color, and took the game down to the deadline as I added one more small touch that I thought would look cool \u2013 the fires of each pack going out when you wiped out their entire group. This proved to be a challenge and I just finished it up with about 75 minutes left. Floata and I then played it through, beat it a few times, lost on purpose a few times, and agreed it was as done as it would get, so we sent it in and the rest is in the hands of all of you fine folks.<\/p>\n <p style=\"text-align: center\"><strong><em>Progress at the end of Monday<\/em><\/strong><\/p>\n <p><a href=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/flash-10-win-2015-08-24-19-22-29-88.jpg\"><img class=\"aligncenter wp-image-499064 size-medium\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/flash-10-win-2015-08-24-19-22-29-88-300x200.jpg\" alt=\"Progress at the end of Monday\" width=\"300\" height=\"200\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/flash-10-win-2015-08-24-19-22-29-88-300x200.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/flash-10-win-2015-08-24-19-22-29-88.jpg 808w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p>And thus ends the retrospective of Dial \u201cM\u201d for Monster. Give it a go, if you haven\u2019t already. We didn\u2019t quite reach our ambitious goals, but it turned out well and we\u2019re quite happy with the result. Thanks for reading!<\/p>\n <p style=\"text-align: center\"><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-33\/?action=preview&amp;uid=38918\"><img class=\"aligncenter wp-image-499047 size-large\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo2n-550x367.png\" alt=\"logo2n\" width=\"550\" height=\"367\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo2n-300x200.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo2n-550x367.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2015\/09\/logo2n.png 607w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><strong><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-33\/?action=preview&amp;uid=38918\" target=\"_blank\">Click to play Dial &#8220;M&#8221; for Monster<\/a><\/strong><\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld33\/\" rel=\"tag\">LD33<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-morem\/\" rel=\"tag\">post morem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/stencyl\/\" rel=\"tag\">stencyl<\/a><\/p>","time":"September 2nd, 2015 9:48 am","title":"Persistence Pays Off \u2013 A Dial \u201cM\u201d for Monster Retrospective"}