In Tempoland, all things move to the rhythm. Lorem is a young girl living in Tempoland who dreams of visiting the travelling carnival. Her dreams are shattered when she realizes the journey to the carnival is not as easy as it seems. Help Lorem traverse the many obstacles she faces as she embarks on this fascinating journey through the wonderful world of Tempoland.
As the technical lead of this project, I implemented the core functionalities of the custom game engine, renderer, tools and editor for the designers and a pipeline for the audio team to sync audio in the game.
Managed and developed the core game engine. This includes programming the following
• Modern OpenGL based 3D renderer using GLSL Shaders.
• Comprehensive ImGUI based Level Editor for the game’s designers to use.
• Integration of an efficient Art and Audio Pipeline into level editor.
• Custom Post Process shaders
As the technical lead for this project, I was tasked with developing the core game engine in order to support the gameplay and experience designed by my other group mates.
The first order of business was to set up a renderer for the game. OpenGL 4.5 was chosen as the graphics API a simple render was developed.
The team lacked a strong technical background being made up of mostly designers and artist. As such, designer friendly tools had to be created in order to enable efficient creation and modification of game levels.
WYSIWYG Level Editor
I developed a what you see is what you get level editor, allowing level designers with no experience in programming to easily and efficiently create and modify game levels.
Interface design was simple:
- Tree structure of entities in the level on the left – Entities could be parented and unparented by simply dragging them onto one another.
- Performance graphs for logging performance, broken down into their various systems – AI, Graphics, Audio, etc.
- Entity Editor for adding and removing components via an intuitive Entity Component System.
- Viewport allowed designers to click to select objects then translate, rotate and scale objects via the widgets that appeared.
Designers were able to create, combine and save entities into a group known as an archetype. This then allowed them to quickly place these archetypes in the level saving a tonne of time.
A robust dynamic reflection system allowed the designer to open the editor at any time in the game to view/edit the values in the editor. This automated serialization and dynamic reflection made debugging much simpler.
Levels are stored in a serialized XML file format, making everything easy to read if required. This also made loading and saving of levels became a breeze.