{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/title.jpg","local":"\/data\/posts\/2012\/05\/0ebaab20057430e422633ec6abc29ff3.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/wat-550x309.jpg","local":"\/data\/posts\/2012\/05\/2c2ae3320c10d02425237bb0f9cdefcd.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/ballpool.jpg","local":"\/data\/posts\/2012\/05\/6e79f00ace91fff49177cf7138f2bc22.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/04\/overpopulous_cutscene_02.png","local":"\/data\/posts\/2012\/05\/38159bfc7d567b788d6c8c60b9f6640e.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/lies.jpg","local":"\/data\/posts\/2012\/05\/3c63a3c90e97bc327baded2b84003c91.jpg"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/art-550x270.jpg","local":"\/data\/posts\/2012\/05\/85e328290950811d0c130020b32ed16f.jpg"}],"author_link":"author\/make-a-game\/","author_name":"Make A Game","cat":"LD #23","categories":["LD #23"],"comments":[],"epoch":1336564560,"event":"LD23","likes":13,"metadata":{"p_key":"77862","p_author":"Make A Game","p_authorkey":"0","p_urlkey":"286872","p_title":"Overpopulous Postmortem","p_cat":"LD #23","p_event":"LD23","p_time":"1336564560","p_likes":"13","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1334880000","event_key":"10","event_name":"LD23"},"source_url":"2012\/05\/09\/overpopulous-postmortem\/","text":"<p><em>[My name is Carlos Leituga and I\u2019m a Game Designer \/ Implementer in a Portuguese company, where I\u2019m working on a _NEW_ Hidden Object Adventure. That one is going to take a bit to finish, so I\u2019m back again helping the Make A Game team to create a game in 72 hours for Ludum Dare #23.]<\/em><\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><img alt=\"\" class=\"aligncenter size-full wp-image-144262\" height=\"322\" src=\"\/data\/posts\/2012\/05\/0ebaab20057430e422633ec6abc29ff3.jpg\" width=\"550\"\/><\/p>\n<p>\u00a0<\/p>\n<p>\u00abThat\u2019s a wrap!\u00bb, we said when \u201calone I art\u201d was submitted, \u00abWe\u2019re not going to do another Ludum Dare before making full games out of this and Eggscape, okay?\u00bb<\/p>\n<p>We all agreed, until seconds later someone reminded us that the next Ludum Dare was going to mark the 10th Anniversary of the competition.<\/p>\n<p>\u00ab#&amp;$*@!\u00bb, I said, before blacking out and waking up four months later and right when the theme was announced.<\/p>\n<p>\u00abThe theme is Tiny World?\u00bb<\/p>\n<p>\u00ab#&amp;$*@!\u00bb, there, I did it again.<\/p>\n<p><span id=\"more-140183\"><\/span><\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/wat.jpg\" target=\"_blank\"><img alt=\"\" class=\"aligncenter size-large wp-image-144313\" height=\"309\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2012\/05\/2c2ae3320c10d02425237bb0f9cdefcd.jpg\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/wat-300x168.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/wat-550x309.jpg 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/wat.jpg 1024w\" width=\"550\"\/><\/a><\/p>\n<p style=\"text-align: center\"><strong><em>What\u2019s the theme again?<\/em><\/strong><\/p>\n<p>\u00a0<\/p>\n<p><strong>The Idea<\/strong><\/p>\n<p>Here\u2019s something crazy: we were going to do a game about a father searching for his kid inside a maze-like McDonald\u2019s park. Complete with tight tube slides, a huge ball pool that would act as quicksand, monkey bars and ropes, other lost kids, and even puzzles involving wooden tic-tac-toe panels and chimes. It would be a metroidvania game with upgrades that would allow you to progress further into this claustrophobic attraction. There\u2019s just this one thing\u2026<\/p>\n<p>We couldn\u2019t do it in time.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><img alt=\"\" class=\"aligncenter size-full wp-image-144259\" height=\"413\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2012\/05\/6e79f00ace91fff49177cf7138f2bc22.jpg\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/ballpool-300x225.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/ballpool.jpg 550w\" width=\"550\"\/><br\/>\n<em><strong>Save us<\/strong><\/em><\/p>\n<p>\u00a0<\/p>\n<p>The 72 hour constraint was hovering over our heads. Nearly four hours had passed and we were still struggling with finding a solid idea. We needed either a puzzle or an arcade game, something quick to prototype and fill with polish. Most of the team had gone to sleep before the rest of us finally settled with the Overpopulous idea.<\/p>\n<p>We were feeling a creative block due to the figurative nature of the theme but oddly enough we opted to go with its literal sense. Sure, the \u201ctiny world is overpopulated\u201d idea isn\u2019t original, so we had to make sure we did it differently.<\/p>\n<p>It\u2019s always amazing (and also really confusing) to look back and try to figure out how we ended up with the final concept of any game, and Overpopulous is no exception. We started discussing a game that mixed billiard mechanics with pinball feedback. Our initial idea wasn\u2019t about colonizing other planets, but to smash through or into them and acquire more mass. It would play like a billiards game where instead of aiming balls into holes, you\u2019d be partially absorbing them. Then we added the colonization mechanic and eventually dropped the mass thing altogether.<\/p>\n<p>\u00a0<\/p>\n<p><img alt=\"\" class=\"aligncenter size-full wp-image-133265\" height=\"322\" src=\"\/data\/posts\/2012\/05\/38159bfc7d567b788d6c8c60b9f6640e.png\" style=\"text-align: center\" width=\"550\"\/><\/p>\n<p style=\"text-align: center\"><strong><em>Here\u2019s the plan<\/em><\/strong><\/p>\n<div>\n<p>\u00a0<\/p>\n<p><strong>What went right<\/strong><\/p>\n<p>\u2013 Cool story, meng<\/p>\n<p>Initially the player was going to control a shuttle in outer space, bumping uncontrollably into planets and satellites. But then we thought, \u00abit\u2019s the first time these guys are going into space, what if they figured everything out but the position of the rocket? They would accidentally propel their whole planet!\u00bb<\/p>\n<p>We started planning on making this a surprise for the player, the intro cutscene wouldn\u2019t reveal this till the very end. Even when it was time to make a tutorial for the game, we wrote it as if it was a briefing for the space mission crew, completely unaware of things to come.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><img alt=\"\" class=\"aligncenter size-full wp-image-144263\" height=\"322\" src=\"\/data\/posts\/2012\/05\/3c63a3c90e97bc327baded2b84003c91.jpg\" width=\"550\"\/><br\/>\n<em><strong>Don\u2019t believe his lies<\/strong><\/em><\/p>\n<p>\u00a0<\/p>\n<p>\u2013 Sounds like a looker<\/p>\n<p>Graphics and sound really came together this time around. The art style was on the spot in the early steps of the project and helped us set up the mood and context of our game\u2019s plot.<\/p>\n<p>A storyboard of the intro cutscene was made to make it easy for the programmers to animate, along with descriptions and mask placement of each scene. The referential humor from \u201calone I art\u201d also came back in the form of multiple planets for you to smash into.<\/p>\n<p>We had our share of sound problems with \u201calone I art\u201d so we made sure it wouldn\u2019t happen again. We tested multiple downsamples of the game\u2019s music to keep the mp3 files small enough and to avoid any embedding issues, while maintaining a certain quality.<\/p>\n<p>Music was downsampled to 64kbps Mono, except one track that needed to stay Stereo (96kbps) to avoid losing some effects, all at a sample rate of 44kHz. Sound effects were downsampled to 192kbps Mono because anything made in SFXR changes pitch when below that value.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/art.jpg\" target=\"_blank\"><img alt=\"\" class=\"aligncenter size-large wp-image-144321\" height=\"270\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2012\/05\/85e328290950811d0c130020b32ed16f.jpg\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/art-300x147.jpg 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/art-550x270.jpg 550w\" width=\"550\"\/><\/a><\/p>\n<p style=\"text-align: center\"><strong><em>Don\u2019t need to squint, click it<\/em><\/strong><\/p>\n<p>\u00a0<\/p>\n<p><strong>What went wrong<\/strong><\/p>\n<p>\u2013 Blasted particles<\/p>\n<p>Working with a custom framework made by the team has its advantages, but we had a lot of trouble with the particle system.<\/p>\n<p>At first the system was being made so that it would be rendered through Flash\u2019s Display List, but our engine had a canvas notion for each entity. Since none of the particles would have a defined position, the particle canvas had to match the size of our map, which was 4096\u00d74096.<\/p>\n<p>Integration wasn\u2019t the smoothest, with performance problems due to the bitmap scaling when rendering the particles. But if we made a smaller canvas that followed the camera, the particles would also move with it. Basically, the rocket flames wouldn\u2019t leave a trail, they\u2019d simple move along with the camera.<\/p>\n<p>We decided to go with a plan B and make an animated sprite for the rocket blast.<\/p>\n<p>Eventually we bent the framework to our will and solved the problem, by converting each particle\u2019s coordinates. We could draw 1000 particles a keep a steady framerate. Unfortunately, the particles were being affected by our other major problem\u2026<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><img alt=\"\" class=\"aligncenter size-full wp-image-144328\" height=\"97\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/rocket_planet.gif\" width=\"430\"\/><\/p>\n<p style=\"text-align: center\"><em><strong>Blast processing<\/strong><\/em><\/p>\n<p>\u00a0<\/p>\n<p>\u2013 Measuring the universe<\/p>\n<p>When we started making the level art, we weren\u2019t quite sure what the scale of our space would be. We ended up planets with twice the resolution that we needed.<\/p>\n<p>This happened due to a problem we encountered with Box 2D, where any physics body with a scale bigger than 1 would screw up the physics. So our whole game is scaled down beyond belief.<\/p>\n<p>Even after fixing our particle issue, these were being rendered nearly the size of the game\u2019s viewport.<\/p>\n<p>\u00a0<\/p>\n<p><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/NFTaiWInZ44?feature=oembed\" width=\"500\"><\/iframe><\/p>\n<p>\u00a0<\/p>\n<p><strong>What\u2019s missing<\/strong><\/p>\n<p>This time we decided that we would merge all of our work\u00a0a hour before the submission time ended, so we could solve any conflicts and have a stable version of our game ready to be uploaded. After that we kept working on bug fixes, but there were still things we couldn\u2019t finish in time.<\/p>\n<p>The above mentioned particle effects were sadly left out, along with local and online leaderboards, a proper end game if the player managed to find all 40 planets, and some additional mechanics that we planned, like black holes and nebulas that would affect speed and score multiplier values.<\/p>\n<p>The intro is also missing some animations and apparently all natural satellites are made of cheese.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center\"><img alt=\"\" class=\"aligncenter size-full wp-image-144282\" height=\"322\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2012\/05\/win_screen.jpg\" width=\"550\"\/><br\/>\n<em><strong>Victory!<\/strong><\/em><\/p>\n<p>\u00a0<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>A week before this Ludum Dare, I started getting pretty worried. I wasn\u2019t feeling very creative and feared that we wouldn\u2019t deliver something as good as our previous entries, or at least I wouldn\u2019t be much of a help to the team.<\/p>\n<p>Truth be told, this is the most complete and polished game we made for the competition and that is mostly due to the experience from our past entries. We stocked up properly and planned a lot ahead of time.<\/p>\n<p>Hugo Damas joined our team, ready to pop his game jam cherry helping the other programmers with HUD and score implementation. Pedro Gon\u00e7alves manned the gameplay mechanics and physics. Daniela Fontes animated the intro, prepared the menu structure and planet generation. Frederico Freitas took care of the particle system, tutorial and sound effects. Tiago Franco made all the art, except for the planets, which were made by Manuel Correia, while he was talking to other participants on Twitter (which got us into <a href=\"http:\/\/www.youtube.com\/watch?v=PpvjE35k4kw\">these<\/a> two <a href=\"http:\/\/www.youtube.com\/watch?feature=player_detailpage&amp;v=oCpFY0_Ygqg#t=570s\">videos<\/a>) and helping me with the design. I drew mockups and storyboards for the game, created the HUD, and occasionally <a href=\"http:\/\/audioboo.fm\/boos\/768089-the-sound-of-ludum-daring\" target=\"_blank\" title=\"The Sound of Ludum Daring\">recorded the team snoring<\/a>.<\/p>\n<p>We had a <em>blast<\/em>!<\/p>\n<p>\u00a0<\/p>\n<p>You can play \u201cOverpopulous\u201d at <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-23\/?action=rate&amp;uid=5631\" target=\"_blank\" title=\"Overpopulous @ Ludum Dare\">Ludum Dare<\/a> or at <a href=\"http:\/\/makeaga.me\/overpopulous\/\" target=\"_blank\" title=\"Overpopulous @ Make A Game\">http:\/\/makeaga.me\/overpopulous\/<\/a>.<\/p>\n<p>Have fun and don\u2019t forget to rate. \ud83d\ude09<\/p>\n<p>\u00a0<\/p>\n<\/div>\n<p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/2d\/\" rel=\"tag\">2D<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/72h\/\" rel=\"tag\">72h<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/jam\/\" rel=\"tag\">jam<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld23\/\" rel=\"tag\">ld23<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld72\/\" rel=\"tag\">LD72<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/make-a-game\/\" rel=\"tag\">Make A Game<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/overpopulous\/\" rel=\"tag\">Overpopulous<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/tiny-world\/\" rel=\"tag\">tiny world<\/a><\/p>","time":"May 9th, 2012 11:56 am","title":"Overpopulous Postmortem","title_was_empty":false}