{"author_name":"dekart","cat":"LD #27","comments":[],"epoch":1378225080,"likes":4,"metadata":{"p_key":"37970","p_author":"dekart","p_authorkey":"14826","p_urlkey":"73586","p_title":"Sky Trader Post-Mortem","p_cat":"LD #27","p_event":"LD27","p_time":"1378225080","p_likes":"4","p_comments":"0","p_status":"UPD5","us_key":"14826","us_name":"dekart","us_username":"dekart","event_start":"1377216000","event_key":"18","event_name":"LD27"},"text":"<p><a href=\"www.ludumdare.com\/compo\/ludum-dare-27\/?action=preview&amp;uid=14826\" target=\"_blank\">Sky Trader<\/a> is my third game made for LD48 and my first game of arcade genre. I only made point-and-click games before so making such game was a truly new experience for me. In this article I&#8217;ll try to describe what I&#8217;ve learned while creating the game.<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/pirate_base_0000\/\" rel=\"attachment wp-att-294663\"><img class=\"alignright size-full wp-image-294663\" alt=\"pirate_base_0000\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/pirate_base_0000-e1378231682321.png\" width=\"100\" height=\"100\" \/><\/a><\/p>\n <p><strong>Theme<\/strong><\/p>\n <p>Almost everyone who rated my game mentioned it doesn&#8217;t match the theme. I definitely agree with this. The only thing that somehow matches the theme is fuel &#8211; each can lasts exactly 10 seconds. But it&#8217;s definitely not enough to say that the game matches the theme. However, it can be easily explained: I tried to create a fun and interesting game first and make it match the theme later. Obviously, I failed to make it 10-secondish enough <img src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/simple-smile.png\" alt=\":)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n <p><strong>Skeleton App<\/strong><\/p>\n <p><img class=\"alignright size-full wp-image-294667\" alt=\"station_0000\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/station_0000.png\" width=\"100\" height=\"100\" \/><\/p>\n <p>During previous competitions I always started development from empty folder. I created Rails application, added all required libs, configured deployment, etc. it usually took from hour to several hours, depending on the weather.<\/p>\n <p>This time I decided to <a title=\"My HTML5 game skeleton\" href=\"http:\/\/www.ludumdare.com\/compo\/2013\/08\/23\/my-html5-game-skeleton\/\" target=\"_blank\">create a skeleton app<\/a> which already included a set of libraries I was going to use, tested deployment scripts, and some boilerplate game code I use for my other games. It took several hours on Friday to make this app usable and it definitely saved me a lo<\/p>\n <p>t of time and mental power to focus on the game itself. Instead of setting up the app I started coding the game itself from the first minute.<\/p>\n <p><strong>Coding<\/strong><\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/city_0000\/\" rel=\"attachment wp-att-294668\"><img class=\"alignright size-full wp-image-294668\" alt=\"city_0000\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city_0000.png\" width=\"100\" height=\"100\" \/><\/a>I decided to make the game with HTML5 and JavaScript using <a href=\"https:\/\/github.com\/GoodBoyDigital\/pixi.js\" target=\"_blank\">pixi.js<\/a> framework. I already had some experience with it so it was a good choice. Pixi.js is pretty simple and it doesn&#8217;t restrict you to a certain game structure, genre, or development cycle &#8211; it just takes sprites from you and renders them to the canvas with WebGL. It also automates some simple game routines such as sprite atlas loading, animation, rotation, and transparency.<\/p>\n <p>I began the development with some mockup arts and spent the whole first day implementing game logic &#8211; ship movement, clouds, pirates, fighting, viewport movement, trading with cities, etc. My coding skills are much better than my art talents, so I decided to make as detailed experience as possible and focus on the art later.<\/p>\n <p>At the end of day one I had fully working version of the game deployed to Heroku. Being able to test the playable version earlier helped a lot &#8211; I was able to submit the game as soon as the submission form was open.<\/p>\n <p><strong>Art<\/strong><\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/ship_squacco_0000\/\" rel=\"attachment wp-att-294672\"><img class=\"alignright size-full wp-image-294672\" alt=\"ship_squacco_0000\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/ship_squacco_0000.jpg\" width=\"70\" height=\"120\" \/><\/a>I was pretty much surprised that the art for this game got so many positive responses. I&#8217;m not an artist and I was extremely pleased to receive positive feedback. I&#8217;ll try to describe the art development process in details, probably it will help someone to succeed during the next competitions.<\/p>\n <p>Initially, I was going to draw everything in pixel art, but after trying to draw just one sprite I understood that it will take a day to draw the ship alone, not to mention animations, pirates, cities, and so on. So I decided to try something else.<\/p>\n <p>I started drawing simple sketches in Photoshop at 10x scale of the final image I would like to get in the game. Say, I want to have a city sprite 100&#215;100 pixels. I started drawing it 1000&#215;1000 pixels. Sketches were terrible, but they allowed me to draw images without focusing on precious details of every pixel. Here&#8217;s the sample sketch:<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/city-2\/\" rel=\"attachment wp-att-294654\"><img class=\"alignnone size-full wp-image-294654\" alt=\"city\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city.jpg\" width=\"300\" height=\"300\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city-150x150.jpg 150w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city.jpg 300w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <p>After drawing the sketch I started adding layers one by one, painting every surface of the object. I focused on colors, shadows, and texture, tried to use Photoshop effects where possible. Half-painted image looks like this:<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/city_half\/\" rel=\"attachment wp-att-294655\"><img class=\"alignnone size-full wp-image-294655\" alt=\"city_half\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city_half.jpg\" width=\"300\" height=\"300\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city_half-150x150.jpg 150w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city_half.jpg 300w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n <p>The final image at 10x scale looks terribly, but when scaling it down to the designated size it looks OK (large vs. final size in the top right corner):<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/city_large\/\" rel=\"attachment wp-att-294656\"><img class=\"alignnone size-full wp-image-294656\" alt=\"city_large\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/city_large.jpg\" width=\"300\" height=\"284\" \/><\/a><\/p>\n <p><strong>Animations<\/strong><\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/ship_sparrow_0000\/\" rel=\"attachment wp-att-294673\"><img class=\"alignright size-full wp-image-294673\" alt=\"ship_sparrow_0000\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/ship_sparrow_0000.jpg\" width=\"70\" height=\"100\" \/><\/a>After making a static version of the image I created a frame-by-frame animation by copying layers in Photoshop and adding motion blur effects. I had about an hour for each sprite, including animation, so I decided to add just one animated element per sprite &#8211; rotors for ships and cities, flag for upgrade stations.<\/p>\n <p>Even the simplest possible rotor animation for the main ship made the game much more live and visually appealing. I decided to add animated elements to every object in the game. But I had only few hours left before the compo submission is over, so I had to find another way to animate things rather than drawing everything in Photoshop.<\/p>\n <p>Pixi.js provides simplest API for object rotation and transparency &#8211; I decided to use them. Instead of drawing two separate states for static ship and flying ship I decided to simply change inclanation of the ship depending on its speed. It game perfect results &#8211; the ship started to feel like real, it got some kind of visual inertia. I decided to use the same effect for pirates, added tilting for bonuses, made cities float up and down.<\/p>\n <p><strong>Audio<\/strong><\/p>\n <p>I didn&#8217;t have enough time to make any sound effects or music for the game, so I decided to just skip this part. My skills with audio software are poor and I don&#8217;t think I can produce something satisfying in less than a day or two of trying. I should practice it outside of the competitions to be able to properly use the skills in the limited time frame. I think that the game could be much better with proper sounds and many voters think the same.<\/p>\n <p><strong>Conclusion<\/strong><\/p>\n <p>I think that I pretty much succeeded with the game &#8211; I made a game of a kind I never did before, its visually appealing, it feels good, and I&#8217;m even thinking about the post-compo version of the game.<\/p>\n <p>Here&#8217;s the short instruction I would recommend myself to follow during the next compo:<\/p>\n <ul>\n <li>Make a skeleton app with as many features as possible, excluding features specific to a certain genre or setting<\/li>\n <li>Try to stick to the theme &#8211; it&#8217;s one of the most important things to get good rates<\/li>\n <li>Art and sounds are crucially important and require at least 50% of the time limit.<\/li>\n <li>Good animations can be done with rotations, scaling, and transparency &#8211; and they&#8217;re very easy to do.<\/li>\n <li>Early feedback is very important. Show your game to your friends and family as early as possible &#8211; it will give you new ideas.<\/li>\n <\/ul>\n <p><strong>Vote!<\/strong><\/p>\n <p>I would be glad if you&#8217;d <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-27\/?action=preview&amp;uid=14826\" target=\"_blank\">check my game<\/a> and let me know your thoughts.<a href=\"http:\/\/www.ludumdare.com\/compo\/2013\/09\/03\/sky-trader-post-mortem\/health-2\/\" rel=\"attachment wp-att-294666\"><img class=\"alignleft size-full wp-image-294666\" alt=\"health\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/09\/health.png\" width=\"10\" height=\"10\" \/><\/a><\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/html5\/\" rel=\"tag\">html5<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a><\/p>","time":"September 3rd, 2013 11:18 am","title":"Sky Trader Post-Mortem"}