Week 9:
Improved enemy spawning: 3 hours
Total: 3 hours
This was a light week for me (and the other programmers) because of the CS 451 project due on Tuesday. I made improvements to enemy spawning: we can now configure how many of each type of enemy spawn in a room. By setting a max spawn count on each enemy type (shown below), we can control enemy variety even better now. For example, we can ensure that only 1 Taurush enemy spawns in a room, or that 2-3 hellbats/steamons spawn alongside Asmodeus.
I also went and converted these parameters into ScriptableObjects. They used to be a set of parameters on each Room class, but it became tedious to modify the values on each individual Room prefab when many rooms shared similar enemy variants. Now multiple rooms can use the same enemy spawn settings via a reference to the ScriptableObject. This will make it much easier to prepare the remaining levels for gameplay, as we won't have to set enemy spawn settings on each Room (of which there's about 40)
This is my first opportunity to make my own ScriptableObjects, and I wish I'd tried them out earlier (they'd work great for each Tactic instance).
Oh wait this was supposed to be a postmortem oops
Post-Mortem
In terms of my performance...
Things that went well:
I wrote very robust code (much better than previous projects)
My Enemy AI systems held up pretty well (despite not having a Combat Manager, they were designed to function without one)
I learned to depend on my teammates when needed; you can't make everything on your own
Things that didn't go so well:
I worked myself to death
I spent too much time refactoring/rewriting sections of our codebase
I didn't have time to implement a proper Combat Manager as planned
I'm proud of the work I did on this game, but I'm frustrated that the game didn't coalesce into what we'd envisioned. In fact, I don't think we had a very good vision for the game from the start. Designers seemed to have varying/conflicting ideas for progression. In the end, we spent the majority of our time making the game "just work". My main focus, programming enemy behaviors, required me to rewrite all enemy code from scratch. This limited my ability to put in new enemies; after re-implementing the existing enemies, we were only able to create 1 of the 3-4 new enemies we'd planned. As a result, our artists saw their assets canned after spending hours making them. We also struggled with communication; oftentimes leads would fail to communicate tasks clearly to the team, leading to situations where 2 people work on the same task (i.e. wasted time).
In hindsight, I think this game could have become something much greater if not for 3 things: our lack of a clear vision for the game, our codebase being in a terrible state, and our failure to communicate.
Comments