If you haven’t played our game yet I strongly encourage you to do so. We are hungry for feedback!
Well, ok, is time to do this; post-mortem time!!
Enter the team
I’ve personally been around since LD20. I participated for the first time with two friends from University (when jam entries were not rated) and we had a hell of a good time. Then LD21 happened, and I was alone, so I entered the compo. I must say that sometimes, working alone can be truly depressing, but may scale into an epic adventure. I skipped LD22, and -if I must be honest- I wasn’t quite sure if I would make something for LD23, after all, I’m a
kick-ass programmer but with little art skills.
My friend and jam mate (ilovepixel) is a completely different case. He knew of ludumdare, but never participated before. He is a hell of an artist and all-around creative guy. Since this was LD’s 10th anniversary, I asked my friend if he was interested on participating. He liked the idea, so -before I could fully realize the implications of it- the game was on and there was no backing down.
For this entry he was going to be in charge of the art, and I was supposed to take care of programming and music (given we had time to add such a thing to the game). His weapon of choice was Photoshop while mine were Notepad++ and Monkey.
The game is on …
We met online Friday night, about 20 minutes before the theme was announced. I was on IRC waiting for the life-deciding moment. After some technical difficulties, the irc bot finally announced the theme; the usual chain of events followed. Denial, anger, bargaining, depression, acceptance; we went through all of them in about 15 minutes.
We wanted to make something different (some forecasts were done in IRC about most entries being side-scroll platformers with small elements and creatures and with some linear combination of “tiny” and “world” as their name) so we first thought of a tower defense game.
To fit the theme we pictured small-scale organisms like protozoa, amoebas and that kind of living creatures. As I wanted to bring some emphasis into the “tiny” aspect, I envisioned the world to be limited by tight constraints, like a petri dish… or… a drop of water. We later found that you can actually fit a hefty number of bacteria into a drop of water so we went along with that.
At that point we already decided it would be a “player-vs-enemy” battle and we came up with the idea of the drop falling into ground and having the microorganisms to fight each other for survival. Since bacteria was going to be carried to the battlefield in drops of water, we decided to use that as a core restriction; the player won’t have the freedom to create units by accumulating points or resources, but rather he would receive a number of units after each drop reached the ground.
There was a problem with our choice of genre (tower defense) though; player units were required to be stationary while the enemy was supposed to move freely across the field. We then started thinking on ways of making our units to move, but it wasn’t easy to picture some unicellular organism moving on that scenario other than by drifting on the liquid surface with no input from the user.
Then I recalled Conway’s game of life, and although it’s not a game per se, there you have cells which “move” by death and spawn of new ones. The idea of fully implementing conway’s rules followed quickly, so we settled with making a playable version of Conway’s automata with the additional challenge of incoming waves of enemy cells.
With the basic game concept and mechanics decided, we called it a day and logged off so we could start working on the game the next day.
My mate came over to my house Saturday around 3:40 PM. We had things to do early that day so we started with more than half a day of disadvantage. My friend shown me some ideas he sketched on his pocket notepad related to the main game view and the intro, so we discussed them and settled with the general feeling of the game.
I had a few basic classes and components made as part of the warm-up weekend, so I didn’t have to code ABSOLUTELY everything from scratch (I had animations, tilesets and the framework for dynamic resource loading implemented) but I was still missing a few things (fonts, scene management, cameras, etc) so I ended up doing a lot of them during the compo/jam which drastically reduced my time.
I wasted some time experimenting a bit with zooming in and out of the field, but since I didn’t have a solid mechanism for camera control I discarded the idea and went ahead with a fixed zoom level (we will probably implement zoom on the post-jam version).
If you are curious, this was our inspiration for the general look and feel of the player’s units:
We stopped working around 5 AM and we went to sleep. We planned to rest for 4 hours but we ended up taking a 6 hours full nap. BAD.
We further discussed the game rules, basically if it was worth introducing new rules that took into account the fact that two different parties were in play but everything we tried completely broke the game. After realizing how truly wise Conway was, we decided to make no modifications to the standard rules. Well, to be completely honest, I managed to sneak a little modification: while the conditions of “overpopulation” and “loneliness” doesn’t take into account whether the cells are friend or foe, for breeding you NEED the 3 cells to be of your team (although we don’t explain that in game :/ ).
My mate made some tutorial screens explaining the rules and finished the sprites, which I later added the game. I worked into implementing individual sprites for each cell so they could display different animations (like “death” or “sprout”) instead of all the living cells displaying the same sprite and dead cells having no animation. This is where I came up with the current implementation which is most likely the cause of the performance drop the game experiences after a certain number of rounds. I knew it was going to cause problems but according to my calculations, there was no time to implement a dynamic sprite pool (and in fact, I didn’t have time to later rewrite this part) so every time a cell spawns, a new sprite is created in memory. Where is the memory freed? only god knows.
My friend left my house around 6:30 PM because he had things to do. At this point the game had no turn-based action and no way to remove cells once you placed them on the field. We also had no enemies although all the methods for adding and processing enemy cells were already implemented and tested (by manually placing enemy cells and watching them “live”).
I kept working on the game: Added the full set of animations my friend made, added a way to recognize cells placed by the player so you could remove them if you wanted, and had the basic turn-swapping mechanics in place. I also implemented a text box which could contain multiple lines of text which I used to signal the beginning of your turn. It was 00:00 AM, Monday, so I left the development and did my routinary sunday-night routine which involves preparing myself for the next day (which means returning to my day-time job). Went to bed between 3 and 4 AM.
Arrived home around 7:30 PM after an intense day at work. Jam deadline was due 10:00 PM so I only had 2 hours and a half to finish the game. I immediately resumed my work on the project. I kinda panicked since my mate wasn’t online and I needed a credits and game over screen as well as redoing the tutorial to have simplified instructions and reflect a change in the background color of the field. I also needed a story.
I decided I didn’t have time to sit and wait so I crammed the credits into the intro screen, used the handy textbox class I implemented the night before for recreating the tutorial screens together with a new set of screens I made . Then added a skip button I quickly created with one of the fonts we were using.
For the story, I wrote a short description of the game premise and stuffed it into another text box which I made scroll. I also added another skip button for that screen as well.
Finally I wrote the game-over condition test and abused yet again of my textbox to notify the tragic event to the player and display the survival stats.
My friend finally logged in, like 10 minutes before the deadline. Too late for redoing anything of what I needed, sadly. I polished a few details and started getting ready to submit. I launched the submission form and started filling what I could. I also ran filezilla and connected to my ftp.
It was 5 minutes before deadline and the game didn’t have enemies. I came up with some crappy AI which basically starts spawning cells after two rounds, trying to fit a few standard formations which give the enemy either a stable low population of cells, or some compact weapon (The glider, which you can try here). It didn’t test if the formation fits though, or if it causes to suddenly annihilate his entire army, so whenever the enemy runs out of cells, a new wave arrives.
I was finally done with the enemies and it was like 10:01 PM. I was off by 1 F*CKING minute!!.
I refreshed the ludumdare’s homepage and realized that the submission hour just started. I was then like “Damn right!! the submission hour! We are SOOO not screwed now!”. It was actually good that I forgot completely about the submission hour, because otherwise I may have worked without haste.
I then realized that our game didn’t have a name so I asked my friend to think on something. He came up with drop of life which I immediatly liked. I told him if he could integrate the title into the intro screen, I also uploaded the game to my server to show him the current status of the game. He luckily loved the result and the way I implemented the missing things and brought everything together (the last time he saw the game before leaving my house not all the animations and assets were in the game, mostly placeholders and the first animations he did).
He sent me the modified intro screen which I added into the game, rebuilt the project and uploaded everything to my server again. Filled the LD form and submitted….
IT WAS OVER
It was DAMN over. I was tired as hell… with a f*cking headache that words alone can’t describe…. but I was satisfied… and happy.
And so was my friend. I must say it was a real pleasure to work with him. He worked lighting-fast and delivered high quality assets for the game in jaw-dropping time. We both are proud of what we achieved; we came up with a nice game concept and we managed to develop the game entirely (well, not 100% complete but it’s playable and it looks damn good) in probably no more than 30 hrs. It doesn’t have music, it has a few bugs, and some screens are pretty generic but man, we love every damn bit of it.
So we would like to ask you from the bottom of our hearts: Play the game. We truly hope you enjoy it as much as we enjoyed developing it.
EDIT: Added the MOAR tag so this post won’t appear as the behemoth it is unless you click on (more…)
ERRATUM: I *think* I added a temporary form of credits on the intro screen on Sunday night but I’m not actually sure of it. Just wanted to add that clarification for the sake of accuracy.