There's two design philosophies for what I'm attempting to do.
Extend the Scripting Language with modules from my engine, or Embed the Scripting Language and BIND functions from the engine to it.
They are both different enough that I can't suddenly drop and change mid-way through the project, so I have to decide now, before it's too late, which path I want to go on.
Currently, I've been going down the Embed route.. as I've written a rather unique engine, with scripting as it's own System. However, it's written in a way that I can rip the rest of the Systems apart and convert them into modules for the Scripting Language of choice.
I say "Scripting Language of choice" as I am still stuck on choosing between Python and Lua. I think I may go with Lua just now, as in
Game Programming Gems 6, there's a nice little article on writing a binder class. The way in which I'll be writing it though, will enable me to switch to Python quickly should I deem Lua not to be what I'm after. Since I'm slightly ahead in my time chart, I luckily have the time to do this, but I need to be very careful that it does not take up too much time, as I have a milestone to hit in just over a week, where I start doing engine tests, involving writing small demos to really stress test the engine - blitting masses of graphics on screen, hammering the event manager, and generating lots of noise by mangling the sound system!
What I'm hoping to have by the end of the week, is to just be able to call up a window and start up the other sub-systems via the script. If I can also load up a splash screen and display it, I'll be more than happy! I can then continue doing my barrage of engine tests while adding functionality between the engine and the script, before getting ready to start the multi-platform part of the project - which is currently going to be PS2 only at the moment, where others will be added if there is time. A hand-held would be nice just for fun - something like the PSP, but as I said, will have to see how quickly I can implement the PS2 stuff. Luckily I have already dealt with the PS2 via PS2Linux and have code already written to wrap SPS2 and SDL together, so I should have enough time to tackle another platform within the seven week timeslot I've allocated to doing the multi-platform part.
Either way though, by the end of the project the engine should support PC (both Windows and Linux) and Playstation 2 at the very least. It should also have support for the GP2X as it's just an ARM device that supports Linux and SDL, though with a 320x240 resolution and fixed controls, but that's cheating really, most of the work will already be done for that in the PC/Linux build ;)
So, I'll head back to writing binding functions for my engine just now.. I'm just binding the start-up routines, so I can judge between Python and Lua on how easy it is to call up custom code from my engine. Should I manage to write a Binder system that can change between script systems, I'm laughing! Means I really can just drop and change between Lua and Python later on if need be.
There'll be an update next week for definite, or maybe sooner if I manage to do something fancy :)