Hi!
For the a bit over a year I’ve been working on a data driven game framework built on top of jMonkey Engine 3 and a accompanying game editor. I think I’m ready to share with the community what I have managed to build so far.
From experience I know that a proper data driven work flow can significantly speed up game development process. Also I really, really wanted to rip-off the BioWare made Aurora Engine, so I figured I’ll just get to it. The result is the Zaria Framework, it’s not much of a copy of the BioWare tools anymore, but the inspiration is still there
Current features of Zaria Framework:
- All game object data is stored and loaded using a JSON derived text format - ZONE.
- Component based Entity system.
- Streaming Map system.
- Embedded JavaScript based scripting.
- In-game console.
- Dedicated debug console, with extensive exception logging.
- Various smaller helpers and utilities.
The main paradigm behind the framework is to have a Object - ObjectDefinition relation.
ObjectDefinitions are constant and serialized from disk. They are used to create appropriate objects (EntityDefinition creates an Entity). Multiple Objects can use the same ObjectDefinitions.
I wrapped most of jME3 classes that way (materials, post process filters, audio environment, etc.) That plus usage of a single text format for all ObjectDefinitions, significantly decreases iteration time and helps organizing data.
After making some smaller games using the framework I realized that although it helped me a lot, the lack of appropriate tools was still a cause of lost time and effort. I desperately needed a game editor. I looked for some ready 3rd party solutions but nothing fit the bill. Everything I encountered was closely tied to the engine it was built for. The best solution I could find was GtkRadiant, which although powerful and flexible can hardly be used outside id Tech. In the end it meant that none could be made to work with the jMonkeyEngine without heavy modifications.
I also looked into creating plugins for the NetBeans platform, but results were… unsatisfactory… and let’s leave it at that
So I decided to build a editor myself. The result is the Zone Editor. It is a separate application, written using Swing and can be used to create game data files for any project built with the Zaria Framework. The path to the jar with the game has to be given and the editor will load all necessary data - no recompilation required.
Current features of the Zone Editor:
Text Editing for the ZONE format, with validation.
The editor will check and highlight any problems with the game data while editing - both syntax and custom conditions that can be defined per game object class.
Visual Editing for the Zone format.
All of the data that is not possible to visualize is editable using a property view.
Both the text and visual editor have a palette on the right with all available game objects. So anything the game supports needs just to be dragged into the editing area.
Script Editing, with validation.
The scripting language is basically JavaScript with some minor additions (like imports). Also the editor will try to validate the script as much as possible during editing. Additional checking is available when packaging the scripts.
Map Editing, with lightmap generation.
The map editor currently supports most important features like placing and modifying geometry, area triggers, markers, lights and entities. It also uses the Sunflow Global Illumination Rendering System for baking lightmaps for all geometry and some entities. (I guess a lot of people here already know about Sunflow )
The map can be previewed using the integrated Map Viewer.
The latest thing I added is Entity Instance Editing, which enables editing of Entity data per instance from inside the Map Editor.
Everything is licensed under EUPL v1.1.
Project blog: Zaria Dev Blog
Project repository: Zaria Project