Nova Engine

Overview

As part of the Game Engine Design course during an early semester of my studies, I worked on the development of a small first-person game and its underlying C++ / DirectX 11-based engine. The course combined lecture content on real-time rendering with a practical component focused on implementing core engine and gameplay systems.

Although the work was organized as a team exercise, each participant was required to implement the full project independently. My implementation achieved one of the strongest overall results in the course, and I extended the baseline requirements with several additional engine features beyond the core scope.

Data Generator

The project was divided into two main components: a resource and terrain generator and the game and engine runtime. For terrain rendering, the game required generated height, normal, and albedo maps.

The height maps were created using the diamond-square algorithm, after which normal maps were derived from the generated terrain. The albedo texture was produced by blending four source textures based on elevation and slope, allowing the terrain to vary visually according to its geometry.

The generated textures and additional required assets were then converted into suitable file formats and written to disk for use by the engine.

The generated output

Game & Engine

The engine was built on DirectX 11 using DXUT. The game itself is a simple first-person shooter in which the player engages enemy spacecraft moving across a generated terrain. The player can switch between a plasma gun and a gatling gun, while decorative scene elements such as bunkers and towers provide additional environmental structure.

The terrain is rendered first and uses Lambert lighting, while mesh-based objects use Phong lighting with support for specular, glow, normal, and transparency maps. Enemy shields were implemented using a depth pre-pass to produce glowing terrain intersections. Visual effects such as projectiles, explosions, smoke, and fire were rendered as billboard sprites, including animated variants where appropriate. The engine also includes a skybox rendered via cube mapping.

Gameplay entities such as enemies and projectiles were simulated using a simple physics and collision system. In addition, most parameters could be configured through a configuration file that served both as a settings file and as a lightweight scene description.

Conclusion

This project provided a strong introduction to graphics programming, real-time rendering, and low-level engine development. In addition to covering core concepts such as terrain generation, lighting, rendering pipelines, and asset handling, it gave me the opportunity to extend the engine beyond the required scope and explore more advanced implementation details independently.

The source code is available on GitHub. Although the project reflects an earlier stage of my development and I would approach some design decisions differently today, it remains a valuable example of systems-oriented graphics and engine work. A precompiled version is not available, as the project no longer runs reliably on my current setup.

Leave a Reply

Data protection
I, Alexander Epple (Place of residence: Germany), process personal data to operate this website only to the extent technically necessary. All details in my privacy policy.
Data protection
I, Alexander Epple (Place of residence: Germany), process personal data to operate this website only to the extent technically necessary. All details in my privacy policy.