As part of my coursework, I was tasked with combining middleware to create a Game Engine in C++.
I chose to use NVIDIA Physx and Irrlicht for my physics and graphics subsystems respectively. I also created a separate level editor, that allowed the user to move around the scene, adjust objects positions, and even load in new game objects by importing .obj files through a Windows Explorer window (Done via the Windows API). The levels were saved to a serialized file, meaning any changes made in the level editor were then reflected in the game.
The subsystem communicated with each other via an event queue, with the main goal of the project being to create a compartmentalized engine that allows for subsystems to be swapped out and changed without impacting the rest of the engines functionality.
For the level editor, I used IMGUI to create a basic UI that presented all available functions to the user.
As per the coursework requirements, I created a system for uploading the high score from the game. This worked by reading the current high score, compiling into a URL, which was then visited in a headless browser, where the website would then take the information supplied in the URL, and save it to an array of scores, before displaying them in a table that can be seen in a regular browser.
Due to time constraints I was only able to add simplistic game play, which involved enemy game objects moving in the direction of the player, damaging them if they get too close. The player could shoot the enemies, which would cause them to de-spawn.