Nine Day Game, Day 9 - Game Over
The beginning of Day 9 marked a change in our goal planning. Up until the end of Day 8, our development was still targeting the path laid out in our original design doc on Day 0. While we knew after about Day 5 that we weren't going to meet all our goals, it wasn't really until Day 9 that we stopped and talked about our revised target. Considering what we had (and more importantly, what we didn't have), we changed the core of our game to better suit our development timeframe. Instead of "evolving a powerful dungeon-crawling character", our game was going to be about "destroying as many enemies as possible before dying".
With that key change in mind, we set out our goals for Day 9:
- Get the in-game targeting system running for targeted spells
- Create some textures for the player, enemies, and items
- Develop a particle system to show spell effects
- Complete as many cool spells and abilities as possible
- Make some effort to balance the game (currently too easy)
Much of the targeting system was fairly straight forward. Thanks to the code cleanup I had done over the past few days, taking control of the camera independant of the player was pretty quick, and Ryan's code for managing input was easy to tie into.
Textures were a bit more challenging. I created a texture for a stone wall using The GIMP, but once I got it into the game, I noticed that it looked muddy when we weren't up close. I'm not an artist, so it is unfortunately probably the best we can hope for. When it came time to do textures for the player and enemies, we were getting close to midnight. Instead of creating them myself, I found a Creative Commons licensed texture set on Deviantart, and did a little bit of tweaking. I only created one texture for the enemies, but we got some colour variation in them by assigning them a randomly coloured material in OpenGL to tint them.
I also created a mesh for stairs - in the game, a set of stairs takes to up to a fresh batch of more skilled enemies. I defined the verticies of the mesh by hand since that was faster than creating them in a 3D modeling program and writing an importer for a file format like OBJ (though on reflection, I could have used the STL loading code from my 3dc project).
Ryan was able to get a handful of new skills implemented, such as drain life, eagle eye, cripple, and haste.
After finishing up those skills, Ryan moved on to some basic game balance. He started by decreasing the amount of health the player starts with - we originally had inflated it to help with testing. He also decreased the chance that a health potion will drop from 100% to around 10%, since they were far too easy to aquire. Around this time, he also implemented an leveling and experience system. For every enemy that the player kills, they get a small amount of experience points. When they get enough points, they gain a new level, which increases their basic attributes and refreshes their health and mana.
Day 9 is over, and so is our little experiment. It's been a great nine days, and I learned a lot. I'd even consider doing it again, though I don't think I would do it from scratch. It's a great way to learn, but if the goal is to build something awesome, I think it's better to start with at least a simple 3D engine. But these discussions are best saved for our wrap-up blog post - stay tuned for that!
Finally, here are links to the Linux binaries and the GitHub repository.