Game Editor Download

Game Editor Screenshot

What does it take to make a game editor for designers and other game content creators? What tools must the software developers provide? How do the software developers provide these features?

Following is a list of user interface features that may be required by the content creators.

  • Consistent File Handling - the open/edit/save cycle should apply to all files that the game editor works with, whether a level or a particle effect.
  • Full Editing - the full suite of edit commands (undo, redo, cut, copy, paste, delete) should be supported where appropriate.
  • Macros - the user should have the ability to record sequences of operations that are commonly performed, so they can be performed by pressing a single button or via a shortcut.
  • Selection-Sensitive Editing - the items in a file are single- or multi-selectable and the editing functions should operate on the currently selected item(s), when appropriate.
  • Customizable Menus, ToolBars, and Windows - a docking interface should be supported that allows the user to place the ToolBars and Windows and any location in the main window, leave free-floating, or close. The configuration should always be saved upon closing the editor.
  • Consistent Editing - a consistent editing interface should be presented to the user when editing similar elements. For example, when a timeline and keyframe editor window is appropriate for an item, the same editor window should be used for all other cases where timeline and keyframe editing is required.
  • Context-Sensitive Double-Clicking - double-clicking an element in a file should bring up the appropriate editors for that element.
  • In-Editor Running - this is the ability to run the level/particle effect from within the Game Editor. Stopping the run may be required to continue editing some properties (e.g. adding a spawner to the particle effect), but perhaps not for others (e.g. editing the spawn rate of a spawner in a particle effect).

Following is a list of some developer-oriented features that may be required in order to provide the previously listed user interface features. This list assumes an object-oriented language and framework is used.

  • Rtti (Reflection) - the ability to determine an object’s type at runtime; including the enumeration of all supported properties and interfaces.
  • Object Serialization - the ability to write/read the contents of an Object to/from a file, memory, or a network connection. This feature is dependent upon Rtti. Also, copy/paste uses this to clone objects.
  • Document Model - the ability to open/edit/save various types of game content.
  • Component Model - the decomposition of the system into functional and logical components with well-defined interfaces. Components typically communicate by passing messages.
  • Component Composition - the ability to group two entirely different components together to form a new component.
  • Command Pattern - all operations that the user performs are encapsulated within a Command Object. This gives the ability to perform undo/redo and create macros.

The download here is a demo of these features in action. Complete code and an executable is provided. Microsoft .NET 2005 Express and Qt 4.2.0 was used.

Play around with it. It has a good collection of examples of these features.

Try typing “help;” and pressing <Enter> into the Command View’s edit box. Then, try selecting the “help;” text displayed in the Command View and right-click the selection. The Create Macro item will place a new Macro onto the Command ToolBar. The selection may contain multiple commands.

Try creating some Components, editing their properties, and saving the resulting Component tree. Then reopen the file.