{"assets":[],"author_link":"author\/andrewbc\/","author_name":"AndrewBC","cat":"LD  #18 - Enemies as Weapons - 2010","categories":["LD  #18 - Enemies as Weapons - 2010"],"comments":[],"epoch":1282626780,"event":"LD18","likes":0,"metadata":{"p_key":"77279","p_author":"AndrewBC","p_authorkey":"0","p_urlkey":"286003","p_title":"First Timer\u2019s Postmortem","p_cat":"LD  #18 - Enemies as Weapons - 2010","p_event":"LD18","p_time":"1282626780","p_likes":"0","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1282262400","event_key":"4","event_name":"LD18"},"source_url":"2010\/08\/24\/first-timers-postmortem\/","text":"<p>It\u2019s been more than a day since the end of my <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-18\/?action=preview&amp;uid=2578\">first ever participation<\/a> in the 48 hour Ludum Dare competition, and it\u2019s time to take a retrospective look at what I did. The goal here is to spot where I made mistakes, where I did well, and what I can do differently in the future.<\/p>\n<p>Let me start off by saying that I\u2019m already very proud of how well I did. This not only is the first ludum dare I\u2019ve done and completed, it\u2019s also the first non-trivial game project I\u2019ve undertaken and completed. That being said, there\u2019s still plenty of room for improvement. Let\u2019s see what happened after the bump\u2026<br\/>\n<span id=\"more-26952\"><\/span><\/p>\n<h3>What Happened<\/h3>\n<p>I started off this competition hatching out a lot of ideas in my notebook within the first few hours:<\/p>\n<ul>\n<li>Dwarf Mage Mind Control<\/li>\n<li>Bomberman Spinoff<\/li>\n<li>Sumo Vs. World<\/li>\n<li>World Domination (Political)<\/li>\n<\/ul>\n<p>The astute reader will note that my game idea is nowhere on there. What I ended up doing after I came up with that set, though, was ruled out ones I thought were too ambitious, or too uncreative, and revised some that sounded too generic. So Dwarf Mage Mind Control became Trance Cat, and the rest were ruled out, mostly due to overambition.<\/p>\n<p>I was planning on referencing Futurama\u2019s Hypnotoad by modeling the main character of the game after it. I quickly switched gears however, for a different idea. I wanted to insert some social commentary into the game by unsubtly using memes as the actual weapons of the game, and how memes would affect the enemies by turning them into enemies of your enemies. Thus, trance cat became lolcat.<\/p>\n<p>At this point, I had the basics of my game idea down. Everyone loves lolcats, I said, and these memes are also quite hilarious. The enemies would be zombies of various schools of thought, (an oh so subtle commentary here,) who are placated by \u201clolisms\u201d and other cute or funny moves that my cat would spout or perform, and would subsequently fight to protect their beloved lolcat. This was going to be a game about survival. If you beat the clock counting down from ten minutes, then you won. There was also to be an unlimited mode, where you just lasted as long as you could. As you played, the music would get faster and faster until it reached a nearly incomprehensible tempo, hopefully ratcheting up the tension as the enemies came at you faster and more often.<\/p>\n<p>So I began work on the first day, a mere 2 hours in, everything sketched out on my notebook or my whiteboard. (Sorry for the lack of pictures, I have no camera.) My first task was to make sprites for the cat. To do this, I decided to look for some rotoscoped cat animations and reference them in my sprite creation. For this purpose, I found <a href=\"http:\/\/www.youtube.com\/watch?v=Q6_MLFId4bA\">this little gem<\/a> that was most helpful. You might even recognize it  if you\u2019ve played my game and I did well enough in drawing.<\/p>\n<p>I think in retrospect that this was the first mistake I made, even if I still wonder what would have become of \u201ctrance cat\u201d a la Hypnotoad. I spent over half of my first day just getting the animations of my main character down. After that, I realized far ahead of my scheduled time that I would have to make feature cuts due to the amount of time left. I cut the number of attacks or moves that lolcat could do from 6 down to 1. I cut the number of types of enemies from 6 down to 1.<\/p>\n<p>Now I began setting up the code to make all this work, and by the end of the day I had a fairly reasonable beginning, and I was confident that I could still finish this. Happy at this point, I slept.<\/p>\n<p>When I awoke, I decided to get to work generating the attacks for lolcat\u2019s \u201clolisms\u201d that he would spout, his only surviving attack from the original 6. I generated 42 different known memes, meta-memes, or silly self-references in the form of words that would appear over the lolcat when he attacks. This was my second mistake, in my mind. I spent way too much time doing this, (probably about 3-4 hours), and even researched memes a bit when necessary from knowyourmeme. \u201cCheat! Charlatan!\u201d you say, well, you may be right.<\/p>\n<p>Now, armed with the attacks, I could finally have some integration in my game between the NPCs and the main character. I got the zombie placating working, and began to circulate my first \u201cplayable\u201d build. This is when the \u201cOh god the shit has hit the fan\u201d realization moment began to happen. I hadn\u2019t even begun to work on the game logic like winning and losing and even just making it fun, and we\u2019re well into the second day.<\/p>\n<p>To make things worse, the consensus was that the lolcat\u2019s attacks were not having the effect that I had originally hoped. A sharp player (MikeP from gamedev.net) noted that while these memes and such were funny, it was usually because they were in context, with an accompanying image, music, or some other media. He was totally right. Here I am thinking that just referencing the memes was funny, and my lolcat just looks like an idiot for it. Another smart playtester (Sargon, also from gamedev.net) noted that it would be funnier if the zombies went flying off after I attacked them, and collided with each other on the way. The message was loud and clear. The way it was now was too boring, and there was little time left for very radical ideas.<\/p>\n<p>So things had to change, and fast. There was just one problem. Actually, I lied, there were two problems. I still had to sleep soon, and I also had to do a few hours of Real Life Work after that. This was midway through the second day, so this left me about two hours to complete my game.<\/p>\n<p>Things were not looking very peachy.<\/p>\n<p>After I got back from work, I entered a frenzy the likes of which would make a salty sailor gape in awe. I had even less time than I had hoped, just about an hour and 40 minutes.<\/p>\n<p>In this time I altered my plan; I decided to leave music until the very end, and focused on getting the enemy vs. enemy collision working first.<\/p>\n<p>This was relatively easily done, considering that I was at this point writing desperate brute-force hacks at lightning speed.<\/p>\n<p>10 minutes later I had them simply canceling each other out instead of flying off all happy-faced and awesomely. This will have to do.<\/p>\n<p>I moved on.<\/p>\n<p>Now I had to have a new attack. I settled on something simple, and quickly drew up a little blood spouting out sideways.<\/p>\n<p>It looked like I had used MS Paint.<\/p>\n<p>I motion blurred each frame, made it work, and moved on.<\/p>\n<p>I had 15 minutes left.<\/p>\n<p>I quickly hacked up an endgame scenario. A \u201cYou died\u201d screen. I began to construct a notification of how long you lasted, and then\u2026<\/p>\n<p>Time\u2019s up!<\/p>\n<p>It was over. I was done. You couldn\u2019t win, but you could lose, and that would have to be all.<\/p>\n<p>I built my port with py2exe, submitted my build and source, and realized that in my last test of the end-game screen, the notification of how long you lasted hadn\u2019t even showed up. I\u2019d messed up.<\/p>\n<p>Too late now.<\/p>\n<h3>The Aftermath Inspection<\/h3>\n<p>I think that I made 2 key mistakes here. The first of which was spending an insane amount of time on doing the animation of the cat. It looks great, except for animation problems, (and a duplicating sprite bug that I wasn\u2019t able to track down before time ran out), but there was no real reason that it needed to be so detailed.<\/p>\n<p>The second problem was spending so much time on an ineffective attack, generating a bunch of images that I didn\u2019t even use. There\u2019s just no real reason to spend so much time on any one thing in a competition like this.<\/p>\n<p>These mistakes cost me precious bugfixing and polish time later on down the line, and in reality then were at least a double-whammy, especially if they were cut.<\/p>\n<p>I\u2019m sure I made other mistakes. I suspect that my idea was not funny enough. This will have to be worked on by improving my funny bone, or brainstorming process, or both.  I also don\u2019t like now that I\u2019d not had much of a base of code to work from, but this can easily be fixed over the coming months.<\/p>\n<h3>Speaking of Fixes\u2026<\/h3>\n<p>So what can I do next time, to do much better than I did this time?<\/p>\n<p>I\u2019ve decided to do the following:<\/p>\n<ul>\n<li>Build a Good Foundation<\/li>\n<li>Keep It Simple, Stupid!<\/li>\n<li>Practice Concurrent Time Management<\/li>\n<\/ul>\n<p>In order to build a good foundation, I\u2019m going to have to spend time between competitions polishing my existing code base, making it extensible, reusable, and of course free to use by others before the competition.<\/p>\n<p>In order to keep things simple, I\u2019m going to have to not go overboard in my planning stages. Deciding to try and capture the live movement of an animal by drawing each frame agonizingly in too much detail is murder on time. Having quantity over quality is a time killer, and makes for a shoddy product as well.<\/p>\n<p>In <a href=\"http:\/\/www.ludumdare.com\/compo\/2010\/08\/20\/ready-to-rock-2\/\">a previous post<\/a> made before the competition started, I laid out a sort of time-frame for working during the competition, compartmentalizing designing, working, analysis, fixing, and polishing.<\/p>\n<p>Things didn\u2019t happen even close to that after the first design then work stage, and the second day beginning analysis stage. I quickly found out that after I did something really stupid, I had to react immediately, and not just wait till the next analysis stage and plod along meanwhile as if everything was hunky dory. In this spirit then, I\u2019ve decided that while some of it was good for the initial planning and second day broad analysis, I\u2019m going to try and do more concurrent time management, or at least fake that by having more micro-cycles of design, implement, polish. In these micro-cycles, I\u2019m going to have to keep one eye on the big picture as well.<\/p>\n<h3>The Big Picture<\/h3>\n<p>Even after all this, I feel like I\u2019ve won simply because of what I\u2019ve learned, and the improvement steps that I will have to take before the next competition. The feedback I get now is just cake on top, even if they quite rightly call my game a hunk of shit. I\u2019m enjoying playing other peoples\u2019 games, and leaving some notes on my experience too, as that is broadening my horizons with regard to game design; This is altogether unexpected, but not unwelcome.<\/p>\n<p>If you\u2019ve made it this far down, congratulations, and I hope that you got some use out of what is a personal analysis for yourself. Thanks for reading!<\/p>\n<p>-AndrewBC<\/p>\n<p>P.S \u2013 Leave a comment if you have some useful tips, observations, rants, or some cookies for me!<\/p>","time":"August 24th, 2010 5:13 am","title":"First Timer\u2019s Postmortem","title_was_empty":false}