Movement Juice and Timing Woes
This was a more chilled-out week, crushing a few more bugs, some minor visual improvements, and being busy with some extra LifeRL stuff.
Movement juice
Most movement in the game so far was a simple linear interpolation between source-target positions, with some special cases for some rotating projectiles (e.g. throwing axes) or arrows, that need to rotate. I've refactored that code a bit and added support for a multitude of modes, including "walk", "fly", "swim" plus what was there before. This allows for funkier interpolation, which if you use your imagination a lot, might look like walking for bipeds!
During this refactoring I ended up freeing a few more bits for per-sprite properties, so now I have 8 more bits left per sprite, which is fantastic for any future scope creep! For example, to support up to 8 interpolation modes I need a 3-bit index per sprite.
Timing
I've been messing around with timing again because of bug fixing, and I can tell you I'm not happy with my timing code. It's a complex topic as it is, especially when animations and delays start getting chained, and my code doesn't help. So I'm fixing a few things and refactoring some others. I believe I'm improving the code, but I don't seem to gravitate to a simple-catch-all solution. I've been having naughty thoughts about making an animation dependency handler, the magical one-stop-shop for handling everything, but the design principles sound similar to parallelised job systems, and if you've heard of those, you know they're not exactly trivial matters, so I try to keep the fancy-system urges at bay.
Bugs
Besides timing-related bugs, I've been fixing a few more bugs, like some out-of-bounds tiles being available at some GUI-based skills, or magic missile auto-selecting entities that it shouldn't, or environment flames not rendering correctly in terms of occlusion. All of these are fixed, with plenty more in the backlog.
Holidays next week, so a slow week is expected. I guess, appropriately (for certain parts of the world), I'll have time to think what easter eggs I should be adding to the game.