Gii is a game development framework.
Gii is mainly written in BlitzMax, a wonderful programming language targeting game creators.
It's designed to be working with Lua, a simple yet powerful scripting language.
The design of Gii is greatly affected by Unity3D , which is one of the most popular game authoring toolkit nowadays.
Like Unity3D, Gii uses a component-based mechanism, and features a powerful scene editor.
The main features of Gii is listed below:
Framework Feature:
- signal style programming support
- tree hierarchy object management
- object layer support
- object & asset tag support
- tree hierarchy asset management
- json/lua(compiled/plain) object persistence, customizable through metadata
- full object hierarchy clone
- prefab support
- cross-platform support: Win32/Linux/Macos
- Unicode
Editor Feature:
- Common:
- preview within editor. Support suspend & step over.
- Object editable in preview
- customizable asset importer
- automatic asset reimport when file get modified
- child assetnode can be created for package asset type
- editor canvas base support
- selection base support
- undo/redo base support
- WxAui based dockable/persistable UI
- easy menu/toolbar item creation
- Object property editor:
- generate from metadata or customized
- builtin field editor: Int/Float/String/Color/Bool/Object Reference/Enumeration/Bitflags
- generic table editor (Hashtable, Lua Table)
- prefab modification affects instances instantly
- Other:
- hand-crafted icons/cursors
- console supports script execution
Sub Systems:
- Common:
- Tree hierarchy transform
- Lua:
- OO style code
- Bmax object exposure through Nilium's LUGI
- Lua object/table edit/persistence/copy through virtual reflection
- Lua method invoking through signal
- Automatic script reload when modified
- wxScintilla based script editor, with project/debugger support (wip)
- Max2D
- OpenGL based.
- Camera supports perspective projection
- Grid based culling
- Image / AnimSprite / TextBox
- Particle: builtin/ Magic Particle
- Sprite animation assembler
- PSD import through libPSD
- Transform editor handle
- Selection/Navigation tool
- GUI (wip)
- Hybrid api (IMGUI/RMGUI)
- Skinnable
- Builtin Scheme/Style Editor
- Box2D:
- Body/Shape/Joint
- PhysicMaterial
- Builtin shape/joint editor
- Audio:
- 2D Sound
- 3D Sound Listener/Emitter
- IrrKlang driver