So, as many of you know, I spent the majority of my 2012 holiday vacation heads-down working on Mythruna.
The visible results are that there is a shiny new menu system. That doesn't seem like much that got accomplished in 10 days so I thought some more explanation about the internals was worth posting.
When I first wrote the main Mythruna engine almost two years ago, it was in a frantic two weeks of coding. Some of those original structures live even today after four or five refactorings. However, the age of some parts of the engine clearly starts to show. New features or subsystems were added elsewhere and older code was not converted to use them, etc.. It is almost impossible for a two year old project not to accumulate this sort of stuff.
The physics and menuing system were both opportunities to freshen things up a bit. The physics system by its nature replaces some of the cruftiest systems. The camera control and large parts of the networking layer get whole-sale pulled out. As far as the menuing system goes, the framework I wrote to do user interfaces for that can be used for so many of the existing UIs... basically all of them. This will clean them up and make them more standard.
Rather than trying to retrofit all of this into an existing working engine, I chose to create a new project and then copy the stuff over to it. Some stuff (like the entity system) that is pretty solid gets copied over directly. Other things like networking, sound management, camera control, etc. get moved in pieces and cleaned up or just completely replaced with something new based on lessons learned and places I know I need to go. (Sound management being a good example of something that was going to fall over at some point.)
This also gave me a chance to start implementing the real plug-in framework. Any engine component I copy over now fits into this framework. This simplifies a lot of the code and makes it more modular/replaceable. (This also makes it easier for licensing total conversions down the road.) Many things I added later that should have replaced existing systems but didn't. The object actions were kind of a mish-mash of new scripting goodness and some old more hard-coded entity commands.
All of these things I get to readdress. I've written more design notes in the past two weeks than I had in the past 6 months, I think.
So, when you see a shiny new menuing system and a new starting dialog, it's important to remember that these things are also show-casing the plugin framework, new streamlined scripting layer, UI framework, etc.. I'm actually excited enough about the possibilities that it's hard not to waste time daydreaming about it.
That being said, there is still a lot of work ahead to finish.
The other positive thing is that I plan to leave some things completely by the way side. The current dichotomy of "build mode" and "game mode" will hopefully disappear. What constitutes "build mode" now will become some new undroppable inventory items (like a build wand) in what is now "game mode". The ability to place and move property may become a skill, etc.. All of these things will still be added by default to all characters on my server but it makes it more flexible for me to play with the real game mechanics. I may also get around to adding resource tracking (still with unlimited usage on my build server but it would be nice to track anyway) and things of that sort.
It's kind of exciting because I'll be forced to build some features that will pay dividends later. I mean, we are still no closer to AI but everything else gets closer... some so close I can taste it.
My current really aggressive schedule is to try to get the conversion done and releasable by mid February. This will be the two year anniversary of my original Mythruna release. It's kind of special so I'm going to try really hard to make it. If the slow conversion takes too long then I may just shoe-horn in some systems into the new plugin framework and replace them with better ones later. But I'm going to try to "hold the line" as long as possible.
Something for the social networking posts to pick up as a thumbnail...