Ludum Dare 24 was a great experience and I am happy that I finished with a playable game. I’m glad that I decided to participate and look forward to doing it again.
The gist of the game is that you are a virus and you float around infecting cells to reproduce while dodging white blood cells and antigens. After you have infected enough cells you get to chose how you want your virus to evolve, which boils down to some pretty simple buffs. Meanwhile you can watch your “children” float around and infect other cells and get wiped out by the immune system.
The most challenging programming problem I ran into was how to have the sprites wrap around to the other side of the map and still have them be drawn in the correct place and have culling and collision checks working properly. I had never done anything like this before. I figured out the drawing and culling problem but the collision issue is left outstanding for another day.
The toolchain I used is as follows:
- C#/XNA Framework/Visual Studio 2010
- BFXR for sound effects
- Paint.NET for graphics
- Autotracker Bottumup for music
- Base engine code that I had previously written
What Went Right
It’s very crude but given my skills I am pleased with how it looks. All of the sprites were drawn by hand in Paint.net. Also I decided to add some 2 frame animations to the virus and antigens, which was well worth the effort.
I was hoping to do a piano and drum track, but given that I have no skills in music production I had to resort to tool-generated music. I think it sounds good and I’m glad I added it. I’m especially happy that I was able to add a special track to play when you beat the game.
I was able to implement a map 5000×5000 pixels across that wraps the player around to the other side when they cross the boundaries. I had never implemented a map like this so it was a fun challenge. I almost had to abandon the idea when I realized that I would have trouble with drawing when the player is near the edge of the map due to the fact that I would need to render something at the other end of the world as if it were close to you.
What Went Wrong
I really need to figure out an efficient algorithm for collision checking. Normally efficiency is far from my mind, but when an algorithm is running 30,000+ comparisons 60 times a second efficiency is extremely important. Because collision checking took so much system resources, I was forced to abandon some of my gameplay ideas. If I continue to work on the game after the competition this will be the first area I address.
It’s more of an extremely casual simulation than a game. It’s trivially easy to beat, and you probably won’t die a single time unless you try to. I’ve learned from my other game experiments that getting fun gameplay is the hardest part of game design, and that remains true here.
Things That Were Cut
- In-Game Tutorial
- Additional spawning of enemies and cells to make the game harder as you progress
- Ability to name your virus
- I wanted to make the cells wobble
- Animations for virus birth
- Collision between cells
- AI for virus/enemies (white blood cells should seek out viruses)
- Background texture with parallax scrolling
- Alternate textures/rotations for cells so everything doesn’t look identical
- More evolution paths (including the ability to infect white blood cells)
- Different cell types (tissue, blood, and nerve)