Monday 12 October 2009

Scene editor progress...

So, I've decided to focus my spare time on a couple of projects rather than continually fiddling and investigating the source code with a myriad of OSS projects (Wine, notify-osd, ATI Linux drivers, etc. etc.) I've set myself an end goal: to write a decent 2.5D platform game.

There has been this idea for a game on my mind for some time (and I've blogged about it previously). I know how it's going to work, I know what/who the main character will be, I've thought about all the intricate details of the gameplay. So now, it's time to actually get coding on it. I decided to use Irrlicht as the graphics engine, but (as I've mentioned before) it wasn't long before I hit a little road block. Irrlicht's main scene editor is IrrEdit - a Windows-only closed source editor which unfortunately doesn't run under Wine. I did look at patching Wine, but it's not a trivial fix.

There are other methods of content generation for Irrlicht; Blender, Deled etc. But Blender was more complicated than I liked, and Deled suffers the same problems as IrrEdit.

So, I decided to brush off a project of mine that had stagnated a bit; my scene editor - Kazscene.

Previously I'd written it using wxWidgets, but I suffered quite a few issues with wx's GL canvas widget. So I ported it to Gtk+ and used GtkGlExt which is working like a charm, using Glade as a UI editor is awesome too and the whole application seems snappier in comparison to the wxWidgets version.

So, porting took quite a bit of time, but since I've focused on writing a lot of the underlying infrastructure, (re)organizing the code and coding features. At the current state the application is still essentially useless (it doesn't load or save yet). But at the moment it has the following:
  • A scene graph
  • Terrain generation from a heightmap
  • Cube creation
  • Rotation and translation of objects (still buggy)
  • Selection, mouse-over highlighting
  • A virtual file system (allows reading from directories or zip files, with help from PhysicsFS)
  • Smooth and flat normal generation
What I'm working on at the moment:
  • A texture manager and material editor
  • Python interpreter integration (using boost::python)
  • Ogre and Irrlicht file loading/saving
Here's a screenshot:

It's getting there, once I get material editing and scene loading working, it'll look more impressive :D