For the enemies of Zirconia 2, they were originally ALL planned to be zombies. This was of course going to cause problems eventually, since there were 30 different kinds of enemies planned and there would be no way to possibly come up with that many different kinds of zombies! Towards the end of the project, 24 enemies made it in (a wide variety of things other than zombies) but zombies still made up about 40% of those enemies.
The Enemy class I used contained the usual member variables, like hp, attack power, and score value, plus the movement pattern of the enemy. This movement pattern can be one of 14 patterns I made up: do nothing, move linearly, use a sine wave pattern, a circular pattern, etc. There are no set enemy waves in the game, everything is spawned at random.
The combo system was not in the original design, surprisingly. It actually added a lot of strategy to the gameplay, as when you finish a combo, an appropriate number and type of enemies would spawn on the opposing side. You could purposely wait for a lot of enemies to spawn on the screen, then take them all out in a combo. You also have to watch your opponent's combo counter, so that you can prepare for some enemies to spawn on your side (and you can take all those out in a combo, and add more enemies to your opponent!). This was one positive thing that came out of the "feature creep" session I had during the halfway point of development.
There are over 300 cards designed for the game. Some of them are very simple effects, like power +1, and others are more complex attacks. In retrospect, I probably shouldn't have made so many cards, as writing the code for them was very time consuming. Also, each vehicle has a set of unique special weapon cards that are only available to a specific vehicle. This adds some replay value to the game, as you will have to beat most opponents to get all the special weapon cards.
Overall, this has been the most complex project by far I've worked on. Even though the game could probably use more polish, I am pretty satisfied with way it came out in the end. Some of the code was quite a mess unfortunately, looking at all of the 12K or so lines of it; I probably should've broken up my code into even more files. This concludes my Zirconia 2 postmortem, I will say more on my current project in the weeks to come.
Here is a small preview what I am working on, still in the beginning stages, just getting stuff on the screen: