Origins of this game engine come from uni where we were taught the basics of OpenGL and shaders, which are programs that run directly on the GPU. Back then, the rendering of models involved something that lacked textures, that lacked animations and didn’t have terrain. It was indeed very basic, but a small accomplishment for myself given the difficulty in graphics programming. That rendering engine evolved into a game engine then written in C++ and in the interlude graduate years since 2016 had fallen into disrepair due to ageing of code and external dependencies not being upgraded. To that end, the game engine sported the following renderable features:
Since the pandemic, I had taken unto myself a challenge to port that rusty game engine over to Golang, still utilising OpenGL. That has been a remarkable feat as there wasn’t much help to receive as to the hows and whats of graphics programming in Golang. But, thankfully there was a Golang binding for OpenGL with the same interface as in C++. It first began with the model loader, then the skybox, then sprites and also the text. In time new features were added, for in addition to the previous, we now also have: