Procedural Dungeon:

DirectX 11

My Role 

Individual Project

Tools:

Language: 

Libraries: 

C++, HLSL

Direct X 11

FreeCam6
FreeCam3
InGame4
InGame1
InGame5
InGame3
Lights in horizon
InGame2
FreeCam5
FreeCam7
FreeCam1
FreeCam2
FreeCam4

Description

The final project consists of a scene which loads into a dungeon generated with different rooms and connecting corridors.

 

The player is in control of a cube model which serves as a player character for the project. The scene is in a top-down perspective and the player is always visible in the center of the scene. The player emits a light of his own which makes only the environment around the player visible.

The player collides with the sides of the dungeon walls and moves on the surface of the terrain. All the collectibles in the scene are also lit up and the player can collect them while moving around.

The terrain is altered just before the generation of the dungeon. The terrain runs multiple algorithms to finally achieve a structure that resembles a smooth hilly region. (Faulting, Perlin Noise, Randomized Noise, Smoothing)

The terrain shader of the dungeon is also modified to have 3 different textures and a warm look to it. The rocks and the slopes are a different texture than that of the floor. There are patches of cracks and dried blood in various regions of the dungeon.

Along with that, the project also has implemented a post process effect of a radial blur and bloom on specific objects.

 

About The Project

 

The aim of this project is to demonstrate the use of direct x and create a procedural environment in 3D.

While always using game engines, my aim here was to understand how the rendering pipeline works underneath a game engine. This project also helped me understand how I could work towards building my own game engine in the future.

 

The entire system includes implementation of direct x, compiling shader files, writing shaders with HLSL, implementing different lights (directional, diffused, ambient and point lights), importing models(obj), creating meshes (terrains), implementing collisions and player movement.

To obtain a non-conventional pattern, this procedural dungeon is generated with a combination Voronoi diagrams and Delaunay Triangulation.

More details of the generation process can be found in the PDF File below.