An overview of some tools in Turbine

The Project

After completing OpenGL assignments when studying at university, I wanted to keep working with OpenGL in my own time. I decided that developing an engine could be an interesting way to achieve this. Taking what I had learned at Hallam and Reutlingen, I began building Turbine.

As my past experience of OpenGL was in the context of completing assignments, some of the ways I had implemented features were different from how I could implement them now. For example, I have swapped the Win32 library for GLFW, which is an API for creating simple OpenGL windows along with handling input from a variety of sources. I also implemented ImGui, a great lightweight UI library for debugging within the actively running OpenGL scene.

Goals achieved

  • Using GLEW and GLFW to create an OpenGL context to render to

  • Utilising the GLM mathematics library to handle 3D specific maths and data structures.

  • Implementing the ImGui library to include debugging UI in the scene

  • Implementing GLSL shaders, along with creating VAOs and VBOs to pass rendering data to the shaders

  • Implementing an entity based system to allow components such as cameras to be implemented into the object hierarchy

Planned Improvements

  • Possibly looking into ReactPhysics3D to implement simple physics into the scene

  • More lighting options and depth-based shadow generation

  • Message system to allow components to communicate cleanly, and broadcast message which can be received by multiple components in the scene

  • Build settings to allow for construction of scenes in Debug mode, but produce a clean working scene in Release mode

Current Progress

Currently Turbine is still very much in development, however features are being added essentially based on if I find the feature interesting to research/program. I hope to eventually have Turbine become a useable framework, even if it is just for me to play around with. For now I will be working on features and stability, mainly in the direction of being able to use Turbine to make small tools or small games.

 
Example editing
The ImGui library had made making debugging UI simple to intergrate into the project
 
turbine UML
As the project increases in size, the requirement to map out the design becomes essential