I'm currently writing a protection layer between user input and the rest of the engine, so the engine is rather dumb when it comes to user input, it asks for binding states and the input module returns the state of the key that the binding is associated with, the engine can then use that state with whatever action is associated with it.
So now I'm having to finish implementing the server-side to test this stuff through a live-console (Which will help with a hundred other things) and writing a config system that will read bind commands as a script.
I could do this in the same way that the map format is read, but that doesn't let the user make mistakes in their config file, I want to be able to cope with user's writing configs with poor syntax, such as: bind "x" "jump"
as opposed to the syntax of bind"X" "jump";
I'm going to have a data-embedded config that will bind all the default keys on launch, which are then over-written by a user's autoexec config that will replace binds, so that will involve some detection on if a bind has already been used.
I've also decided to not use a scripting engine for the game core, I'll be building a static object of "Game" that will be compiled.
I have plans to release an open source template Game.dll/Game.so so people can create their own games and mods with my RPG engine, but designing the inner-workings of this may take some time.
I'll need to move all this input I've been writing into that module.
Oh man, I just think as I do, I've been coding this input and as I've been doing it I've been noting down the problems and building a to-do list, all those years of experience are paying off.
I always think HK sized things would be better done using actual pieces/body parts manipulated by a script over time, like a sort of faux 3D rather than a set of sprites, but that wouldn't work well with pixel art for the rest of the game.
You mean a skeletal animation system, I wrote a lovely LUA implementation of this sort of animation system for work, it had child-parent relations and I even wrote a hilarious auto-lipsync system that took written-sentences, analysed the phonics and produced animation sprite sheets of what mouths to display for the sentence.
Was very proud of it and Castlevania shows that it does work amongst standard pixel-art of an entire game, as long as the body parts are pixel-art sprites as opposed to vectors or sprites with alpha transparency for anti aliasing.
EDIT2: Also figured out I'm going to have to use function pointers so the Game.dll's routines are accessible from the map format itself, registering function names would be the hard part, I'll have to make a Game.dll function where the developer can define which functions they want accessible to the map.
I guess one obvious benefit of the Game.dll module is that all file saving data would be contained in this single dll, so a complete dump of it's state should be fine for save data writing.