{"author_name":"dekart","cat":"LD #31","comments":[],"epoch":1418544300,"likes":3,"metadata":{"p_key":"21990","p_author":"dekart","p_authorkey":"14826","p_urlkey":"57354","p_title":"Snowman\u2019s Quest Post-mortem","p_cat":"LD #31","p_event":"LD31","p_time":"1418544300","p_likes":"3","p_comments":"0","p_status":"UPD5","us_key":"14826","us_name":"dekart","us_username":"dekart","event_start":"1417737600","event_key":"26","event_name":"LD31"},"text":"<p class=\"p1\">LD31 was my fifth\u00a0jam and it went in some ways better than previous jams, but I also experienced new issues I never hit before.<\/p>\n <p class=\"p1\"><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=14826\" target=\"_blank\">Snowman&#8217;s Quest<\/a> is a top-down survival shooting game with a little twist &#8211; in order to win you have also to collect carrots to beautify a Christmas tree. While doing so you have to protect the tree from lumberjacks trying to hit it.<\/p>\n <div id=\"attachment_427123\" style=\"width: 346px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=14826\"><img class=\"size-full wp-image-427123\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/video31.gif\" alt=\"Play Snowman's Quest\" width=\"336\" height=\"275\" \/><\/a><p class=\"wp-caption-text\">Click to try\u00a0the game<\/p><\/div>\n <p class=\"p1\"><strong>What went right<\/strong><\/p>\n <p class=\"p1\"><strong>Idea<\/strong><\/p>\n <p class=\"p1\">As soon as the first 4 rounds of the voting were finished I started thinking over an idea of a \u00a0snowman game. When the final theme was announced I found that my game idea fits it so I didn&#8217;t have to change anything.<\/p>\n <p class=\"p1\"><span id=\"more-427120\"><\/span><\/p>\n <p class=\"p1\"><strong>Art<\/strong><\/p>\n <p class=\"p1\">I don&#8217;t have much art in my game, only few objects which I had to animate. I drew all images by hand on paper, then made a picture with my tablet, and made final versions of the art in Photoshop on top of the hand-drawn drafts. All sprites are drawn in a significantly larger scale and then down-scaled &#8211; it is much easier to manipulate larger objects than object of a size of a pixel. In photoshop you can use smart objects to contain larger versions and resize them according to your requirements.<\/p>\n <p class=\"p1\"><strong>Coding<\/strong><\/p>\n <p class=\"p1\">This is my second jam where I use a base code with a very simple app skeleton and all necessary libs. This time it was even more useful than before &#8211; after previous LD it became much more solid, so I was able to start implementing actual game logic from the first minute.<\/p>\n <p class=\"p1\"><strong>Scheduling<\/strong><\/p>\n <p class=\"p1\">I planned my development in the following way:<\/p>\n <ul>\n <li class=\"p1\">Draw basic art with no animation<\/li>\n <li class=\"p1\">Code basic game logic using basic art<\/li>\n <li class=\"p1\">Add basic sounds<\/li>\n <li class=\"p1\">Deploy the game to make it ready for submission<\/li>\n <li class=\"p1\">Improve art by adding animation<\/li>\n <li class=\"p1\">Improve experience by adding particles, visual feedback of attacks, snowflakes, etc.<\/li>\n <li class=\"p1\">Improve sounds, add music<\/li>\n <\/ul>\n <p class=\"p1\">In the end didn&#8217;t have enough time to do the last task in the list, but it wasn&#8217;t mission-critical. I had a working game at the beginning of the second day and spent the rest of my time polishing it.<\/p>\n <p class=\"p1\"><strong>What went wrong<\/strong><\/p>\n <p class=\"p1\"><strong>Lack of drive in the first day<\/strong><\/p>\n <p class=\"p1\">Due to some personal reasons I wasn\u2019t that excited about the jam as I was during previous events. After thinking over the idea I started working on the art and coding, but everything had a slightly bitter aftertaste because I understood that I could\u2019ve done everything better if I had enough drive and passion for what I\u2019m doing. At the end of the first day I spent half of my time \u00a0 browsing LD website, reading status messages from other devs, and wasting time on trifles.<\/p>\n <p class=\"p1\">The second day started the same way, I didn\u2019t feel any drive. I forced myself to finish some, started working on animation &#8211; and it hit me! As soon as I made the simplest possible animation of the rabbit (<a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=14826\" target=\"_blank\">see it in action<\/a>) &#8211; the game came to life! I started working on it like mad, it was exciting again.<\/p>\n <p class=\"p1\"><strong>Audio<\/strong><\/p>\n <p class=\"p1\">My base code contained a library named <a href=\"http:\/\/www.schillmania.com\/projects\/soundmanager2\/\" target=\"_blank\">Soundmanager2<\/a> which I was going to use for audio. However, after trying it I found that it didn\u2019t provide the quality I was looking for. I used it for some projects before, but mostly for background music, so lags and long pauses when playing samples didn\u2019t bother me. In this project however it was a critical issue &#8211; I wanted to synchronize audio and animation. I decided to re-write audio effects using pure HTML5 audio tag but it seems that it provides poor API and requires some dirty hacks to make everything work smoothly, so I spent a lot of time and didn\u2019t manage to make it the way I wanted.<\/p>\n <p class=\"p1\"><strong>HTML5 technology<\/strong><\/p>\n <p class=\"p1\">Despite the fact I was using a pretty stable <a href=\"http:\/\/www.pixijs.com\/\" target=\"_blank\">framework<\/a> and a modern Chrome browser I hit a very strange issue &#8211; frame rate in my game was stable at 60fps and dropped down to 30fps when closing developer console. I didn\u2019t find any reason for this, not even clue. When playing in Firefox frame rate floated around 30fps with sudden drops to 15fps with no reason &#8211; I didn\u2019t have any processes running on background, no actives, nothing. For sure, such drops immediately broke synchronization between audio and animation, spoiled the experience, and made me mad. I was thinking about trying Unity for this entry, but decided to go with a technology I already familiar with, and now I see that by doubts had a reason. For the next entry I\u2019ll try Unity, definitely, since it\u2019s the most mature technology for indie development at the market.<\/p>\n <p class=\"p1\"><strong>Conclusion<\/strong><\/p>\n <p class=\"p1\"><strong>Choose technology wisely<\/strong><\/p>\n <p class=\"p1\">It\u2019s always a good idea to start with a technology you already know, but it doesn\u2019t mean that the technology you already know is the best suitable for the mission. If your current tool set doesn\u2019t allow you to make a game of a decent quality &#8211; it\u2019s better to spend some time to learn a new technology before the competition. Otherwise you may end up fighting bugs in a mediocre framework or hacking your tools to make it possible to implement your ideas instead of polishing your own game.<\/p>\n <p class=\"p1\"><strong>Have a base code<\/strong><\/p>\n <p class=\"p1\">Even simplest skeleton with vey basic things such as libraries you\u2019re going to use will save you some time. You\u2019ll also start your 48-hour journey working on your game, not setting up your work environment and tools.<\/p>\n <p class=\"p1\"><strong>Do something fun\u00a0first<\/strong><\/p>\n <p class=\"p1\">If you\u2019ll start with boring stuff &#8211; you can fall into a trap of lacking motivation. All boring stuff can be made at the end when you already have a working game with something that makes you excited about it, you\u2019ll be in a good mood to finish what has to be finished.<\/p>\n <p class=\"p1\"><strong>Deploy and test ASAP<\/strong><\/p>\n <p class=\"p1\">You may not notice certain flaws until you see the game in someone\u2019s hands, on a different machine, in a different environment. It is also very likely that at the end of the 48 hour race you won\u2019t have enough time to think about deploying your game. Now we have an additional hour for submissions, but what if something will go wrong and you won\u2019t manage to deploy your game in that time? It\u2019s better to think about submission upfront, at least few hours before the deadline. Deployed version of the game will also allow you to give it to other players, show it to colleagues and friends.<\/p>\n <p class=\"p1\">Hopefully this post\u00a0\u00a0will be helpful for your future developments and will give you some ideas how to improve your own workflow. What kind of issues did you hit in this jam? Please share!<\/p>\n <p class=\"p1\">Previous Posts:<\/p>\n <ul>\n <li class=\"p1\"><a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/13\/12-recommendations-to-get-higher-rates\/\">12 Recommendation to get higher rates<\/a><\/li>\n <li class=\"p1\"><a href=\"http:\/\/ludumdare.com\/compo\/2013\/09\/04\/you-have-to-continue-voting-heres-why\/\">You have to continue voting! Here&#8217;s why&#8230;<\/a><\/li>\n <li class=\"p1\"><a href=\"http:\/\/ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/\">Sky Trader Post-mortem<\/a><\/li>\n <\/ul>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a><\/p>","time":"December 14th, 2014 3:05 am","title":"Snowman\u2019s Quest Post-mortem"}