This was my first Ludum Dare (along with many others competing). Â It was a fun experience, and I learned a lot even with tech I thought I already had a good handle on.
My entry was a little game I call Beneath The Clouds.

Overall, I’m moderately happy with how it came out. I ended up wasting a lot of time during the second day, and the game suffers for it. But even so, I’m happy that I have something that can at least be considered “playable.” 😛
Pre-Development
Right before the competition began, I started on an engine, and it was very good that I did. It allowed me to accomplish quite a lot of the preliminary work fairly quickly, and so I know for future competitions I’ll be using my existing code base.
Development
First thing I did when the theme was announced was take a walk. It helped me think and come up with ideas. Some of them included:
-A zombie game where you play as the zombie and you have to drag humans beneath the ground to turn them into zombies and you amass a zombie army in this way
-A platformer where you play as a little gnome who jumps from rain drop to rain drop to get above rainclouds
-A shooter/platformer game where you grow plants to get above the clouds
I ended up going with a combination of the last two.  Going with plants, I could work with  genetic algorithms. An idea that I was already familiar with and knew how to use. Plus it was something I wanted to do should Generations been the theme.
My first 24 hours of development were quite productive. I managed to get most of the art assets finished, get sound effects and the background “music” done, implement a particle system to handle rain, and get the plants growing according to genetic rules. By the time I had gone to bed after being awake for 36 hours, I really only needed to implement reproduction on the plants, AI, and collision detection.
The second 24 hours wasn’t so smooth. Due to going to bed, I lost 8 hours of possible development time. Additionally, I had agreed to go to lunch with some of my classmates and lost an additional 4 hours. Â I was left with a narrow 5 hours to finish the rest of the game, plus two hours I had put in before lunch to implement reproduction. Those hours ended up playing by very quickly, and I had to cut out parts of the game, like certain plant types changing behaviour of enemies and such. Submitting the game and getting everything prepped was literally the last minute. Got it done, though.
Post-Development
The end result does suffer from time constraints. It functions well enough as a game, though I do agree with a lot of commentators in that the player doesn’t have a large amount of control over the world and how the plants grow. It is possible to win on a consistent basis, however I know I am able to do that because I have an understanding of how the plants work. Not so for anyone just playing the game, so it can be confusing if one doesn’t read the README or description.
On the positive side of things, a lot of people have been telling me that the idea behind my game is a really good done.  And that with a bit more polish and time in development, it could become a really good game. Additionally, it seems I created a good mood for the game. Instead of traditional music (which I have exactly 0 experience in making), I opted for just having rainfall. It’s a choice I’m glad I made, even with nearly giving myself a virus looking for a free rain generator.
What Went Right
I’m really happy with how the game looks. I have little experience with pixel art, but I feel I’m competent so long what I am working on is low res, like 16×16 as the game uses. I can honestly say, I did not expect the textures and such to turn out as well as they did.
I’m also happy with the rain effects plus the accompanying rain “music.” It really does feed into a relaxing atmosphere.
Finally, I’m happy with how the plants behave, for the most part. The way I handle the plants allows for a lot of emergent properties. For instance, a plant having a lot of flowers can help increase its chances of reproducing since it spawns off more seeds. Additionally, a plant with a lot of flowers is more likely to receive/provide pollen to other plants. While in the current system, this depth isn’t tapped into nearly as much as I would like it to be, it will be there for when I reinvent the game.
What Went Wrong
Beyond having to cut out features due to lack of time, a few other things ended up going awry or otherwise impacted development.
Throughout my development, one of my libraries (sfeMovie) required me to not only be limited to C++98 (and therefore VS2012), but also to develop in Release configuration. Running into the optimizer and having a lack of debugging information made fixing some bugs much more difficult than they should have been. Funny story, at one point in my debugging, I found that the optimizer made one of my for loops run in reverse.
I am also unhappy with some of the sound effects I made for the game. The jumping and shooting effects are a bit too loud and conflict with the calming atmosphere of the rest of the game.
I also ended up running into some of the nastier things that can happen with the C++ STD containers, like memory being reallocated and breaking pointers, iterators being thrown out of sync due to elements being removed, access violations…
What I Learned
I ended up learning quite a lot about C++ and how it handles things internally. I’ve been working with C++ for the last 5 years, so I already had a solid handle on the language and it’s quirks but Ludum Dare exposed me to a lot of areas I was unfamiliar with, such as how the linker works or some of the things the optimizer ends up doing. Coming out of this competition, I feel much more competent with the language than I already was.
I also uncovered some of the deficiencies in my engine, such as how animations are handled and the inefficient memory footprint the engine ends up making. It’s really shown me where i can improve on the code base and where I can make things easier to do, such as handling text drawn to the screen.
Planning for the Future
First thing I am going to do is improve my engine. I want to make it a generic game development engine that comes with a configuration using SFML, but can be ported easily to other libraries. This is simple in the MVC model it has, but in its current state it leads to tightly coupled code in some parts. I want to improve the engine to decouple as much as possible.
Beyond the simple code base, between now and next LD I am going to focus on learning music theory. Music is a part of games I have never explored and learned, and it very nearly ended up costing me dearly in my game.
Anyways, can’t wait for next Ludum Dare! 😀