This week was much better than last week mentally. Prioritizing based on the most essential features to improve gameplay (currently combat mechanics) put me back on the right track and able to make solid progress.
This Week’s Achievements
- Finalized combat calculations. The underlying calculations for combat had been a bit nebulous and only partially implemented up until this point. You could give and take damage, and kill and be killed, but combat wasn’t enjoyable due to lack of balancing and limited tactical options. This week I finalized the factors involved in determining when attacks hit and how much damage is caused. One of the ideas I went back and forth on was using armor class (AC) or damage absorption. The former was designed for tabletop RPG’s with the intent of simplifying mechanics by abstracting various aspects of defense. I chose damage absorption for several reasons, but primarily because it was the best fit within the overall combat system. Evasion and damage absorption effectively replace AC. Like AC, damage absorption is an abstraction; it attempts to model hits to both armor and areas that armor doesn’t cover.
- Implemented combat calculations. All of the combat calculations are working in the game. The key attributes in the calculations are chance to hit, chance to evade, damage caused, and damage absorbed. These attributes are affected by various factors including equipped items, status effects, terrain, and physical material resistances/vulnerabilities.
- Detailed combat logging. Every step of every calculation in combat is logged. Combat log messages are tagged so that they can be isolated from other log messages. This has been extremely useful for testing and troubleshooting.
- Unit tests for all combat calculations.
- Combat balancing spreadsheet. This spreadsheet contains most of the calculations. It’s been a great tool for fine-tuning combat variables. It’s much faster than changing values in the Unity editor and testing through actual gameplay.
Next Week’s Goals
Next week, I’m working on combat feedback – sound effects, blood splatter, etc.