~Monthly update: The ECS refactor is coming along nicely.
So far things and surface animations have been made entities. Basically what this means is that JK things and surface animations are both now considered 'things' in the Gorc sense. This has some nice consequences, e.g. verbs like destroything() and stopanim() are synonymous, with the code behind the verb doing the correct thing automatically. There has also been a lot of work decoupling gameplay code through an event interface. The short-term plan is to also refactor key animations, sounds, and cog timers as entities.
Thing behavior is being slowly split out into components (the whole reason for this refactor in the first place). The old character controller has been split into new character, soundclass, and puppet components, with corresponding aspects/systems, while fixing a number of bugs along the way. Component initialization and destruction has also mostly been refactored into event handlers. If you look at
src/game/world/components/thing.h it will give you some idea about how much work is left to do here, since this class should be empty.
My rough plan after this work is done:
- Revisit renderer and physics code to smooth out some minor perf issues caused by this refactor.
- Set up a Windows build machine. I have a Linux 64 build server running for code coverage, but I'd like to be able to do regular Win64 builds for two reasons: one, so I know when I accidentally break Win64 support, and two, so I can make regular Windows builds available for people to try. I develop on Linux so it's not really practical to do by hand right now. The last Windows build was last year, which is a little crazy. If anybody wants to volunteer to do this, just go ahead.
- Savegames (gamestate serialization). Best to do this now, because it'll only get harder later. Big job because it has to include serialization asset references.
- Possibly some work on a multiplayer prototype, if it still sounds like fun when I get here.
- Continue gameplay reverse engineering.