«That’s a wrap!», we said when “alone I art” was submitted, «We’re not going to do another Ludum Dare before making full games out of this and Eggscape, okay?»
We all agreed, until seconds later someone reminded us that the next Ludum Dare was going to mark the 10th Anniversary of the competition.
«#&$*@!», I said, before blacking out and waking up four months later and right when the theme was announced.
«The theme is Tiny World?»
«#&$*@!», there, I did it again.
The Idea
Here’s something crazy: we were going to do a game about a father searching for his kid inside a maze-like McDonald’s 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’s just this one thing…
We couldn’t do it in time.
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.
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 “tiny world is overpopulated” idea isn’t original, so we had to make sure we did it differently.
It’s 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’t 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’d be partially absorbing them. Then we added the colonization mechanic and eventually dropped the mass thing altogether.
What Went Right
– Cool story, meng
Initially the player was going to control a shuttle in outer space, bumping uncontrollably into planets and satellites. But then we thought, «it’s 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!»
We started planning on making this a surprise for the player, the intro cutscene wouldn’t 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.
– Sounds like a looker
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’s plot.
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 “alone I art” also came back in the form of multiple planets for you to smash into.
We had our share of sound problems with “alone I art” so we made sure it wouldn’t happen again. We tested multiple downsamples of the game’s music to keep the mp3 files small enough and to avoid any embedding issues, while maintaining a certain quality.
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.
What Went Wrong
– Blasted particles
Working with a custom framework made by the team has its advantages, but we had a lot of trouble with the particle system.
At first the system was being made so that it would be rendered through Flash’s 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×4096.
Integration wasn’t 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’t leave a trail, they’d simple move along with the camera.
We decided to go with a plan B and make an animated sprite for the rocket blast.
Eventually we bent the framework to our will and solved the problem, by converting each particle’s coordinates. We could draw 1000 particles a keep a steady framerate. Unfortunately, the particles were being affected by our other major problem…
– Measuring the universe
When we started making the level art, we weren’t quite sure what the scale of our space would be. We ended up planets with twice the resolution that we needed.
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.
Even after fixing our particle issue, these were being rendered nearly the size of the game’s viewport!
What’s Missing
This time we decided that we would merge all of our work a 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’t finish in time.
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.
The intro is also missing some animations and apparently all natural satellites are made of cheese.
Conclusion
A week before this Ludum Dare, I started getting pretty worried. I wasn’t feeling very creative and feared that we wouldn’t deliver something as good as our previous entries, or at least I wouldn’t be much of a help to the team.
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.
Hugo Damas joined our team, ready to pop his game jam cherry helping the other programmers with HUD and score implementation. Pedro Gonçalves 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 these two videos) and helping me with the design. I drew mockups and storyboards for the game, created the HUD, and occasionally recorded the team snoring.
We had a blast!
You can play “Overpopulous” at Ludum Dare or at http://makeaga.me/overpopulous/.
This article was originally posted on May 9th, 2012 at Ludum Dare.