DirectX 11 Game Engine
Description
This engine was created for a university module I took called Advanced Graphics, to support implementing a wide array of graphical techniques I developed an Entity Component System based game engine. This allowed me to modularly build components which gradually add functionality to the prototype. The features of the engine include:
- Full entity component system, with every bit of functionality divided into seperate components avoiding coupling.
- Full Diffuse, Ambient and Specular lighting done in the pixel shader (phong shading)
- Normal and Parallax Occlusion mapping.
- Transparency and Blending.
- Multipass rendering.
- Shadow Mapping.
- Everything loaded from a custom formatted .scene file allowing for instant reloadable entity and shader configurations.
What I learnt.
Throughout this project I learnt a lot about 3D rendering techniques, ranging all the way from getting vertices rendered in normalized device coordinates to calculating tangents to perform parallax occlusion mapping doing all calculations in tangent space.
I also did a lot of research into game engine design and entity component systems, this helped me avoid a lot of the pitfalls such as tight coupling. Along with this I looked at how commercial game engines serialize their levels and implemented my own implementation using XML which lets me easily define the entities within the game and what components to put in them.
If I was to attempt this project again I would try and seperate the rendering and the engine logic even further, compiling the renderer to a dynamic link library which gets included into the core engine. This ensures that when I expand it for the physics engine I wouldn't have to interfere with the renderer and changes made to the renderer wouldn't break the physics engine and vice versa.