First, the bad news. I wrote in my last post that I’d worked out a new file format that could squeeze the heck out of sprite sheets. Turns out I hadn’t tested it thoroughly enough. The reason the file was so small was because it was losing a lot of image data. I had to rework most of the code. It’s stable now, and still a bit smaller than PNG or XYZ files, but not by such a huge margin anymore.
Now the good news. I’ve spent most of today building a framework for the plugin system that will manage TURBU’s various game engines, and I’ve gotten it to work. And in fact, the basic interface is so simple that I’ll probably be able to open it up for developers to build their own engines. The framework is based on a package of four simple files that define the plugin’s interface. Take that, drop a fifth file in that defines the basic interface for a game engine, (there will be separate ones for map, battle and menu engines, and a fourth generic interface called “minigame”), and proceed to roll your own engine.
This isn’t a simple task, of course. It’ll require heavy Object Pascal skills and knowledge of the SDL framework. But it’ll also make TURBU one of the most versatile engines around. By contrast, RPG Maker XP and VX allow for extensive modification of the engine through Ruby scripting. The problem is, Ruby is interpreted, not native code. (For the non-programmers out there, that means it’s not turned all the way into machine language; instead, it’s run through an “interpreter” program on the fly.) That has some advantages, but you sacrifice a lot of speed for it, which is why they tend to bog down if you put too many Events on the same map, among other things. The plug-in engines, by contrast, will be native code, running as fast as your CPU can handle.
I’ve already got plans to create several different types of map, battle and menu engines, but this will make it possible for progress to not be limited to my own (admittedly slow) pace. You want a tactical engine? Or a map/battle system that integrates with no transitions, like Chrono Trigger? Go ahead and build one, if you think you’re up to it. Heck, SDL is versatile enough to handle 3D, if anyone out there is that much of a masochist. 😛
I can’t wait to get this released. It’s gonna be great!
HOLYSHIT, you are actually doing this?
This is going to be absolutely fantastic!
Oh really, I also couldn’t wait for this to be released pure awesomeness..
Yes, I am actually doing this. It’ll take a while before it’s done, but yes.
And I think I’ll add data archives to the “customizable through plugins” list. Want to build your game with easy-to-share ZIP or RAR files? Or go the other direction and use some format you invented yourself for a commercial release you don’t want people poking around in? Then code the archive support yourself and as long as it’ll support four basic functions (new archive, open existing archive, read file and write file) it’ll work with TURBU.