I’ve gotten through those interfaces in GigaSun Jet that I mentioned a couple posts ago. The game now buffers its level data and loads from that instead of straight from XML objects. Since this buffer can now save its data back to XML, this has allowed me to start actual work on the in-game level editor.
I must say I’m pleased with how it’s going. I made the old level editor long ago as a stand-alone project. It is tile-based and pretty simple (and pretty ugly). The menus are not very well thought out, but they’re functional. Plus, the last time I touched the level editor code was to merge it with the main GigaSun Jet project.
After all the work I did to refactor the saving and loading, I knew that I needed to rewrite the level editor and make it fit the game better. What better way is there than to build it into the game itself? It’s been a long time coming, because I need more levels!
When playing a mission, you can press the special level edit key which pauses the game, clears away all the indicator clutter, and presents the level editing GUI. Just today, I got some of the object data into text input fields and, most importantly, it works. It already feels so much better than the old level editor. The interface is so much clearer and more intuitive. I’m also just using simple lines and shapes to indicate objects and it seems to work well. Once I get all of the object data into the GUI and add control to objectives and event triggers, I can just chop off the old editor code for good.
I’ve used Box2D and in-game level editing for two projects now. I’m a likin’ it.