
Responsibilities
- Implementing core engine structure.
- Implementing the scene editor (hierarchy and properties panels).
- Implementing mouse picking.
- Implementing gizmos.
- Implementing the 2D animation system.
Game Programmer and Composer
IGArt is a custom 2D engine focused on platformers, with the ability to create other 2D games. It features: a component system, multiple scenes, a scene editor, parent-child relationships, gizmos, a spline tool, a behaviour tree editor, a particle editor, a terrain tool, and much more. The engine runs on PC and PSVita.
Role: Engine & Editor Programmer
Development Time: 14 Weeks
Team Size: 9
The scene graph in IGArt is a tree representing a set of parent-child relationships. At the top of the tree are the parent-less objects, or those that are direct children of the scene. Parents have a pointer to their children, and every frame, the tree is recursively walked, updating the transform matrices of any entities marked by the dirty flag pattern. The code for this can be found in the Github link above.
The editor of IGArt has a simple class structure. The main editor class contains a vector of EditorWindows, a base class for any window to be shown in the Editor. The Editor class iterates through this vector each frame, and each EditorWindow subclass executes it’s own functionality from there. For the GUI, we made use of ImGui, as it’s simplicity matched our designs. Likewise, we used ImGuizmos for gizmos.
The sprite animation component in IGArt takes a sprite sheet and atlas file output from Spine, and parses at run-time in the editor. The relevant data is serialized along with the scene when it is saved, excluding the texture. When the data is loaded along with the scene, the animation component requests the engine to load the texture, and then allows for animation playback.