{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/gamemaker.jpg","local":"\/data\/posts\/2013\/05\/edc86c7269493f462e4d968bbc3cba6b.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/goals.jpg","local":"\/data\/posts\/2013\/05\/e9909182b7c460e9a36ca452796c3c7c.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/groke.jpg","local":"\/data\/posts\/2013\/05\/cb7e7b40c32f427c1d7c510b40319227.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/gtesting.jpg","local":"\/data\/posts\/2013\/05\/d8556e66883c2b1134eaa3ab25dc1816.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/gkilled.jpg","local":"\/data\/posts\/2013\/05\/51caf7ab1d371b13190fc5053eaa6735.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/Sequence-01.gif","local":"\/data\/posts\/2013\/05\/ee1b1f392fdd13e60214cbd3d88c9b27.gif"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/gplayers.jpg","local":"\/data\/posts\/2013\/05\/73a9ebfe3a5b8c82cde2f14c7e3c9614.jpg"}],"author_link":"author\/kyyninen\/","author_name":"kyyninen","cat":"LD #26","categories":["LD #26"],"comments":[],"epoch":1367814960,"event":"LD26","likes":5,"metadata":{"p_key":"80672","p_author":"kyyninen","p_authorkey":"0","p_urlkey":"289789","p_title":"Ginnungagap post-mortem","p_cat":"LD #26","p_event":"LD26","p_time":"1367814960","p_likes":"5","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1366934400","event_key":"16","event_name":"LD26"},"source_url":"2013\/05\/06\/ginnungagap-post-mortem\/","text":"<p>After making two <a href=\"http:\/\/bit.ly\/16Lbz2V\">post<\/a>-<a href=\"http:\/\/bit.ly\/10hnHS6\">compo<\/a> releases of my <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=21389\">Ludum Dare 26 entry<\/a>, I think time has come to take a step back and have a long, hard look at the fruits of my labour. It\u2019s kinda hard for me to be sure what went right or not and where, so I\u2019m just going to list some stuff I did and didn\u2019t do and let you be the judge!<\/p>\n<h2 style=\"text-align: center\">What I did<\/h2>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256865\" style=\"width: 355px\"><img alt=\"gamemaker\" class=\"size-full wp-image-256865\" height=\"215\" src=\"\/data\/posts\/2013\/05\/edc86c7269493f462e4d968bbc3cba6b.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">ihavenoideawhatimdoing_dog.jpg<\/p><\/div>\n<h3 style=\"text-align: center\">Use familiar tools<\/h3>\n<p>This is my second game jam. First one was Global Game Jam, where my team made <a href=\"http:\/\/globalgamejam.org\/2013\/syke\">a puzzle platformer<\/a> about E.T. type of dude who could suck the energy out of things and use it elsewhere and there were dead animals\u2026 Oh, just check it out if you\u2019re least bit interested, I\u2019ll wait. It\u2019s pretty short and ends in a cliffhanger. I was the programmer, and with no game making experience of any kind I quickly decided to use the program I had heard was friendly to beginners: <a href=\"http:\/\/www.auntiepixelante.com\/?p=1240\">Game Maker<\/a>.<\/p>\n<p>It really was an eye opener. Suddenly the little JavaScript and C I had teached myself over the years (but never enough to start a career in web development) became immensely useful, since GML is pretty much based around them. The finished product has it\u2019s quirks, but it mostly works as intended and I was incredibly proud of managing to program it.<\/p>\n<p>So there really was no competition. I\u2019ve dabbled with Unity, but found it dense and since I was going to make 2D game anyway, I thought that time spent learning it\u2019s ins and outs could be better spent elsewhere.<\/p>\n<h3 style=\"text-align: center\"><\/h3>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256868\" style=\"width: 355px\"><img alt=\"Looks like city building to me!\" class=\"size-full wp-image-256868\" height=\"215\" src=\"\/data\/posts\/2013\/05\/e9909182b7c460e9a36ca452796c3c7c.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">Looks like city building to me!<\/p><\/div>\n<h3 style=\"text-align: center\">Have a set of goals<\/h3>\n<p>They were simple, but they were there:<\/p>\n<ol>\n<li>Finish the game.<\/li>\n<li>Have AI that interacts with the world somewhat immersively independent of player input<\/li>\n<li>Some kind of city builder would be nice!<\/li>\n<\/ol>\n<p>It\u2019s pretty debatable if I achieved any of these goals, but they shaped the decisions I made during the compo from the start.<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256872\" style=\"width: 355px\"><img alt=\"The key\" class=\"size-full wp-image-256872\" height=\"215\" src=\"\/data\/posts\/2013\/05\/cb7e7b40c32f427c1d7c510b40319227.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">The key<\/p><\/div>\n<h3 style=\"text-align: center\">Work with what I got<\/h3>\n<p>So, about those goals. It became clear pretty quickly (about that time when I had spent six hours trying to get little dudes to stay inside their huts at night) that I wouldn\u2019t be able to make an engaging strategy experience in the timeframe given. That goal had to go. But I had no time to start from scratch, so I had to do something with the stuff I already had \u2013 somewhat working villager AI, handful of sprites depicting said villagers and their\u00a0environments. There was some element missing.<\/p>\n<p>It was only when I first drew that crude monster sprite I realized what this game could be about: stalking villagers and snatching them in the night. That felt\u2026 right. Like I had worked towards it all the time. All design became about making that experience more true, more fun, more varied: bigger levels, staying still (and later moving slowly) to be invisible, speed boost for panicking villagers, towns springing up overnight, hunters and their traps\u2026<\/p>\n<p>This is truly a game that wouldn\u2019t exist if it weren\u2019t for Ludum Dare. The idea didn\u2019t even occur to me until I was halfway through building another game!<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256878\" style=\"width: 355px\"><img alt='\"If you ask me, this game could do with a bit more woof\"' class=\"size-full wp-image-256878\" height=\"215\" src=\"\/data\/posts\/2013\/05\/d8556e66883c2b1134eaa3ab25dc1816.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">\u201cIf you ask me, this game could do with a bit more pant pant grr woof\u201d<\/p><\/div>\n<h3 style=\"text-align: center\">Get feedback early<\/h3>\n<p>I\u2019m\u00a0privileged\u00a0to have a friend (not pictured, though you can see the actual chat window on the screen!) that tirelessly tests and gives feedback on anything I might be working on. The game would most likely be unplayable, unoptimized mess if they hadn\u2019t pointed my attention towards stuff that simply didn\u2019t work.<\/p>\n<p>Also I am lousy at naming projects. Current title was my friend\u2019s suggestion, and it stuck. Still, now I\u2019m kind of vexed that I didn\u2019t think of using <a href=\"http:\/\/yaamboo.com\/suomipelit\/index.php\">the classic Finnish shareware game naming practice<\/a>.\u00a0M\u00f6rk\u00f6 Mets\u00e4 (Spook Forest) would have been a\u00a0<em>glorious<\/em> title.<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256898\" style=\"width: 355px\"><img alt=\"Alas, poor Yorick!\" class=\"size-full wp-image-256898\" height=\"215\" src=\"\/data\/posts\/2013\/05\/51caf7ab1d371b13190fc5053eaa6735.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">Alas, poor Yorick!<\/p><\/div>\n<h3 style=\"text-align: center\">Kill my darlings<\/h3>\n<p>This goes hand in hand with previous item. In it\u2019s earlier incarnations game featured wind, which changed the speed of tree animations, and tracks, which villagers left behind everywhere they went. Both were poison to performance.<\/p>\n<p>I think the original idea with the tracks was that you could follow them back to the villager\u2019s home and go full fox-in-the-hen-house, but since it was already pretty fast to scout the whole level, it became purely cosmetic. Wind was also just fancy way of adding some variety to visuals but it was so pretty! Yet when my tester started to complain about frequent slowdowns they both went. I miss them dearly.<\/p>\n<p>\u00a0<\/p>\n<h2 style=\"text-align: center\">What I didn\u2019t do<\/h2>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256903\" style=\"width: 355px\"><img alt=\"gplanning\" class=\"size-full wp-image-256903\" height=\"215\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/gplanning.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">Text file where you try to decipher the code you wrote a couple of hours ago probably doesn\u2019t count.<\/p><\/div>\n<h3 style=\"text-align: center\">Have programming planned beforehand<\/h3>\n<p>Making AI is hard. It\u2019s especially hard if you have no idea what your long term plan with it is. Currently villager needs a host of functions, alarms and other objects to make it behave as intended. I feel that this is needlessly complicated and could be written exponentially simpler, if planned ahead. This is where I feel that making a simple map of all actions any given NPC can take could have saved time and made the game run much smoother in the long run.<\/p>\n<p>Then again\u2026 when I started making the AI I really had no concrete idea where I was going with the game. Some stuff became apparent only when I thought I had finished it and started on working with other aspects of the game. It\u2019s a feedback loop. Perhaps the only way to make a good AI is to make a full game featuring a shitty AI, and then rewrite the AI.<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256910\" style=\"width: 355px\"><img alt=\"Bonus points if you can make out what songs I skip outright.\" class=\"size-full wp-image-256910\" height=\"215\" src=\"\/data\/posts\/2013\/05\/ee1b1f392fdd13e60214cbd3d88c9b27.gif\" width=\"345\"\/><p class=\"wp-caption-text\">Bonus points if you can make out what songs I skip outright.<\/p><\/div>\n<h3 style=\"text-align: center\">Set priorities and schedules<\/h3>\n<p>Towards the end of compo I chose the way I spent the time poorly. I implemented ambient wind sounds for the latest release without much effort and what a difference it made for the mood! I could have easily made them during the compo and leave the still hopelessly broken villager AI as is.<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256911\" style=\"width: 355px\"><img alt=\"They are completely right, of course.\" class=\"size-full wp-image-256911\" height=\"215\" src=\"\/data\/posts\/2013\/05\/73a9ebfe3a5b8c82cde2f14c7e3c9614.jpg\" width=\"345\"\/><p class=\"wp-caption-text\">They are completely right, of course.<\/p><\/div>\n<h3 style=\"text-align: center\">Have variables exposed to player<\/h3>\n<p>Balancing the difficulty is a daunting task, and it cannot be done without a large amount of varied player feedback. The few testers that I could muster did their best, but the real trial by fire only came when submissions ended and rating started. The game was way too easy, and by then it was too late to do anything about it. However\u2026 if I had left a players some way to change the variables that controlled the aspects contributing to game\u2019s difficulty (enemy spawning rate, health, amount of healing, day length, villager speed\u2026) maybe they would have found it a bit more engaging?<\/p>\n<p>Next time I\u2019m participating in a game jam I\u2019ll put all the variables that make any sense to modify into an ini-file that can be adjusted to suit player\u2019s needs.<\/p>\n<h2 style=\"text-align: center\">Conclusion<\/h2>\n<p>Wow, word count totally spiraled\u00a0out of control! I didn\u2019t plan at all to write this long post. I\u2019ll at least end it quickly: I\u2019m still planning on expanding the game, but for the next update I\u2019m writing the AI system completely from scratch. It can take a while! I\u2019ll be posting any updates on <a href=\"http:\/\/gamejolt.com\/games\/adventure\/ginnungagap\/14389\/\">Ginnungagap\u2019s Game Jolt page<\/a>\u00a0and my twitter, so if you\u2019re at all interested on seeing how this develops, check them out once in a while.<\/p>\n<p>And if you have not yet rated my entry, <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=21389\">please do!<\/a><\/p>\n<p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ginnungagap\/\" rel=\"tag\">ginnungagap<\/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><\/p>","time":"May 6th, 2013 4:36 am","title":"Ginnungagap post-mortem","title_was_empty":false}