This engine was made for a university assignment, for which I achieved a grade of 77.

It features a full scene graph where each object has a parent and can have children, where the children can be positioned and rotated local to their parent. An Entity Component System (ECS) was also implemented, where each object can have a number of components, such as a script, mesh renderer, or camera. All of the graphical behaviours are using OpenGL and GLM.

The main feature is the integration of Lua as a scripting language. This allows the game objects to have custom behaviour that does not require the entire engine to be recompiled for every change. In fact, an entire game could be created without having to compile the engine again.

The Lua script for the camera

The Lua script for the camera

The game constructs the scene using another Lua file. This Lua file can create the game objects and their components, as well as place them around the scene.

The Lua script responsible for loading the scene

The Lua script responsible for loading the scene

The engine exposed many bindings to the Lua environment to handle creation and initialisation of game objects, so that simple behaviours like movement, rotation, and spawning could be handled. The next step would be to add a physics system, which would allow for a player to exist in the world, and things like triggers to change the game state.