Following my prior epithany that manegable code requires restructuring when faults are identified, I spent the last few days re-writing features I'd already implemented in a supposedly more sensible manner. In other words, I'm not entirely certain the rewrite achieved its best.
It's simpler, yes, since I added object support for specific tasks (e.g. picking up items, talking to people and other in-world interactions are handled by dedicated objects). But, on the other hand, the individual 'modules' are still bound loosely to their owner in specific cases. That isn't exactly what I'd hoped for. The original idea envisioned a system where individual modules would be entirely free of their owning elements - but that didn't work in practice. There are parts of the Engine which simply have to be accounted for (Objects not being allowed to interact with the wotld without an Actor to pipe their commands through being the key one) - and a few self-inflicted speed bumps I can't reasonably undo anymore.
On the upside, this modulized system offers an incredible benefit in maintainability and readability (though not transparency) of specific code bits. Tweaking specific behavior no longer means hunting through thousands of lines of code. And it isn't even that inefficient in the end. At least, with the game scope we have in mind, it won't make a noticable diference - which is a big yay. Unfortunately, fundamental changes to the system aren't any easier to manage. Hopefully we won't have too many of those once the engine moves into a 'productive' state.
Productive, yes, that's still a long way away. The basics are there, right now, and the model's in place. You can move, interact and set up a (horribly lacking) anim tree to match the intended ingame actions. But what happens next?
Way it looks, I'll be focused on the mundane bits which still need adding. Stackable items, ammo types, conversations and - last but not least - buying and selling are top on the todo list (or, to be precise, right after 'fix death anim' and 'code area damage'). The only thing I can say for certain is it'll be a long way to go before this mess becomes usable for anything close to a prototype. For that we still need a lot of bells and whistles - AI support being the key one. And, in the back of my mind, I'm haunted by little odds and ends which don't add anything code-wise but are needed for a reasonable user experience. There'll be hell to pay for that in future, I'm certain.
On the other hand, looking back, I'm really surprised how far I got in three weeks. Maybe I underestimated myself or I overestimated the complexity of UnrealEngine. Probably both. But the biggest accomplishment isn't the little bits and bytes turning into something that vaguely resembles a playable game. No, it's the feeling this brain-fart of an unterkating might actually be do-able.
Maybe that's naive. Maybe I'm too optimistic. Writing a custom game framework? Alone? Still sounds a bit crazy when I think about it. But I won't know until I try. Going back, giving up, isn't an option anymore. I'm not sure that's good for my overall mental and physical health but that's never been my concenr. And, despite all the frustration, I can't help thinking: this is gonna be fun.