Huh, just noticed that last week’s devblog number and title were the exact same as the week before’s. I guess that’s what I get for trying to copy previous posts for convenience’s sake. Not that that stopped me from copying this one.
It’s been a weird week. Either taking a couple of days off has totally thrown my rhythm, or allergies are subtly sabotaging me, or I’m having a really hard time adjusting to a new schedule, or possible some combination of the above, but my motivation to get stuff done has been, well, not great. Since I haven’t had the precision of focus necessary to tackle any big changes, I’ve basically just been sorting through my code, rearranging it to make it more readable, and fixing things that cause problems where I find them. This actually feels pretty satisfying, like taking an editing pass on a novel you’ve been writing non-stop for a year and a half: It feels good to sort it out, take weird and overcomplicated schemes and bring them back into line with my current coding standards. Is it productive? Will it help the game? I honestly don’t know for sure, but it’s something I can focus on, and by bits and pieces shift everything towards where I need it to be before I begin work on the next major component.
The end goal of all of these changes, as well as general tidiness and readability of code, is to make it so everything is both centralized, using files to store re-used data so I can modify them in one place and have the changes represented throughout the game, and revertible, such that I can call one function and a room will revert to its initial state. The latter is fairly easy, though requires organizing data differently in many cases: The former, however, is a big change, a fundamental change, a change which I honestly should have thought of and prepared for months ago, so it’s not surprising that this is kind of a big deal.
So here’s what’s left to achieve on development of the engine, as I see it:
A) Centralize all re-used data to one file for each module (animation, entity)
B) Make it so game elements can both be reverted and have the revert-to state modified (found items, eliminated enemies, and scripted events don’t respawn)
C) Create a level detail editor
E) Entity interaction, particularly with regard to attack registration
Those should be all of the major engine components in place. From there it’s just debugging and creating behaviors for specific in-game entities. In some ways this is still a long way left to go, but in some ways it’s so close. I just need to keep working at it and, by bits and pieces, shift everything towards where I need it to be.