- Highlighted cells for shooting/throwing. When selecting a cell to shoot at, or throw an object at, eligible cells based on the shooting/throwing range are now highlighted.
- Fleshed out effects design. Effects (poison, invisibility, paralysis, etc.) weren’t completely or cleanly implemented. I needed to think through all the ways effects will work in the game. Effects can be caused by using an item (quaffing a potion), in combat (stabbing a target with a poisoned blade), or by moving onto a cell that causes effects (a paralysis trap). They can last for a specific number of turns, or only while the actor is standing on the cell causing the effect. Also, I had “cell effects” like fire and poisonous gas that caused effects on actors but also behaved like actors (fire can spread to adjacent cells with flammable contents). After filling in the gaps in my understanding about how effects work, I was able to clean up and complete the effects code.
- Synchronized attack and damage animations. Combat animations didn’t feel right. I recorded some combat and watched it back in slow motion. I discovered the issue: the damaged animation didn’t start until the attack animation finished. The problem with this is that the point of attack in the attack animation is in the middle of the animation sequence. I had to reduce the damage animation delay so that it started in the middle of the attack animation. Another issue was that actors that were just hit were starting their own attacks while their damage animation was still playing. This didn’t look right and caused combat to play out too quickly to discern the sequence of events. I fixed this by preventing the next actor from acting until the damage animation finished. Now combat looks much better.
- Basic object interaction AI. An unintended behavior was occurring where actors were interacting with objects as they moved. For example, a skeleton archer in pursuit of the player would stop to smash a pile of bones. I think actors should be able to interact with some objects, but AI needs to dictate which objects an actor will choose to interact with. I implemented a simple check (“if object = X, don’t interact with it”) to control which objects an actor can interact with. I’ll add more intelligence later on. For now, I just needed to prevent actors from getting distracted.
- Design incorporated into iterative coding and refactoring. I’ve written a design document for Legend but it’s not complete. It’s more of a semi-organized collection of ideas. At some points during coding, I get stuck because I haven’t fully thought through the design of a particular feature. As I’ve done with refactoring, I’ve started to incorporate game design in an iterative manner. I step away from the code editor, open up the design document, and write out a detailed design for the topic in question. My new process is small cycles of design, refactoring, and coding. It’s not quite Agile Software Development, but it’s similar.
- Ranged combat improvements. If arrows hit a target that they can’t damage, such as a stone wall, they now hit the wall and land on an adjacent cell. I also added minimum ranges to prevent arrows from being shot at point-blank range.
- Minor code clean up and bug fixing.
Next week, my main goal is to finalize the scope for Release 2 and work on the todo’s within that scope. Release 2 won’t be a public release, but I’ll share some gameplay footage.