Refactor Magic
I have discovered the refactor tool in Eclipse. I seriously never actually bothered to find out what it did prior to a week ago, and for that I feel kinda silly. My outlook on package structure in Java has done a complete 360, as I can now start developing willy-nilly with the knowledge that I can always rearrange things later as the project comes into focus somewhat better.
Why, Java, you ask? Yes, my games are coded in C++, but I like making my tools in Java. The language as a whole, and especially the garbage collector, just lend themselves superbly to tools creation, tools which require large amounts of data to be thrown about, added, changed, deleted, etc. The garbage collector lets me get around all of this happily, as I can just do all of the above without ever having to worry about any memory escaping out into the raging wilderness of my computer and eating up my precious memory, starving out the poor denizens of my address space. Also, Eclipse
In this particular case, I’m developing a successor to SplashMap. I was really happy with the way SplashMap turned out, it allowed me to create some maps (which never saw use in any games) very easily, but it’s just not quite enough. I want to be able to create entire games from my editor, not just maps. Thankfully, I did a fairly decent job of laying my class design out for SplashMap, so the new program (not sure what it’s going to be called, maybe I’ll just go for obvious and name it SplashMap 2) can be built off of it fairly easily.
So what are the planned features? Here’s a sample:
- Project-based editing as opposed to Map-based editing. You now create a project that will encapsulate all of your scripts, maps, sprite textures, entities, and scenery objects into a single coherent whole.
- Hierarchy: Everything in a project is the child of something else. This allows you to create some very complex objects quite easily. Want to design a roving super-robot with articulated limbs (each limb is a sprite), well now you can.
- Redesigned file format. Designing my own text format was just plain stupid. New version will use XML. XPath makes it happen :).
- Unified entity/tile design. Tiles and entities are effectively the same thing, except that entities have names so you can access them. You will now be able to right click on any tile hierarchy and convert it to an entity, or vice versa.
- Integrated Lua scripting: Now we get to the real meat of the changes. Every map has a looping Lua script, every entity has a looping Lua script, with the C++ engine providing enough glue (collision detection and such) that there is no need to touch the C++ at all, or minimally at best. I’ll be able to build apps like lightning.
So there you go, those are the major changes on the burner right now. It looks like a lot, but I’d be surprised if it takes me longer than a month to finish them all up.
And yeah, I realize that there are a lot of programs out there that do very similar things, such as Gamemaker and Multimedia Fusion. I thought about just using those, but there are a few reasons that I want to make my own engine. Reason number one is, I enjoy it. Making editing tools is strangely relaxing for me. Reason number two, I don’t want to lose platform independence. I’m designing both the tool and the engine to port without effort to Windows, Linux, and MacOS, or pretty much anything else that supports OpenGL and SDL, something that the commercial game editing packages don’t really seem to provide. And the final reason is, I want the control. By making my own tools, I can design them around the way I work, and maximize my own productivity for the small upfront cost of the tool development itself. It doesn’t need to be everything to everybody, just everything to me. Of course, I’ll try to keep things fairly intuitive anyways, on the chance that somebody should find it useful. So both the editor and the engine will be freely available here when they are complete. I don’t know if I’m going to release the source or not, but the binaries will most definitely be free for all to use.
After that, it’s back to game development. Stay tuned.
Leave a Reply