After starting to make in Flash, I realized I was rewriting a lot of code that can actually be re-used. I found out about game engines, and took many opportunities to try writing one, but were mostly utility frameworks (for Flash, OpenGL etc.). The dissertation project finally allowed me to write a complete engine from scratch, using only the rendering API.
For starters, my goal for the engine was to create a flexible engine, not just while using it to create games, but configuring its entire pipeline. While I only implemented a Direct3D 11 renderer and FMOD sound integration, the code was built such that switching them for another implementation (such as Direct3D 9, 10, 12 or Miles Sound System) was simple.
In addition, I wanted to create a GUI editor for designers and artists to interface with the engine, which I accomplished using the wxWidgets library (for cross-platform capability) and embedding the game's 3D view as a subwindow.
Finally, shaders make 3D games look gorgeous if written well, but this requires multiple shaders programmed by graphics engineers. While my basic modular shader implementation still requires engineers, their job is to configure the high-level properties of a material's shading, rather than having multiple permutations of shaders to cater to different surfaces.
The final deliverables were the engine library, the GUI editor and two demo games created using my game engine and the editor.
Platform : C++, DirectX 11 on Windows PC