A 3D endless runner built from the ground up using C++ and DirectX 11. Features custom rendering, collision detection, and player mechanics modeled after the mobile game Temple Run.
Key technical focuses included procedural road/terrain generation and rendering performance optimization.
The game world is dynamically generated using a tiled system that streams assets as the player progresses. Road and environment tiles are spawned ahead of the player and discarded once they exit the view frustum to optimize memory usage.
Since the base Overlord Engine lacked built-in support for instanced rendering, a custom instanced rendering solution was developed to efficiently draw the dense environment vegetation (grass, trees, flowers) and path assets without duplicating vertex buffers or draw calls.
I used Imgui to tweak the post processing effects
Main menu screen
For the terrain I used Tesselation combined with a noise map. The game is generated with Tiles. Each tile has a terrain quad. In the tesselation stage the quad gets subdivided, then gets an offset in the domain shader based on a noise map, which is sampled by the world position.
This noise map is then later reused by the plants and stones on the terrain, so they are rendered at the correct height to fit the terrain.
The plants wave in the wind, which is done in the vertex shader. The higher the vertex is above the terrain, the more wind they catch.
Terrain using tesselation and a noise map. Best visible in the fog at the right side of the screen.