Robot Dungeon Takedown

Solo Project

Hectic local multiplayer dungeon crawling in randomly generated dungeons!

Robot Dungeon Takedown (RDT) is the result of my graduation project at IGAD .
I wanted to create a 3D local multiplayer dungeon crawler type of game which would showcase as many advanced programming and design skills as possible within the timeframe. Currently, the major feature in the game is the generation of random dungeons in which the action takes place. Below you can read more about the generation techniques or you could take a look at the project and code, yourself (RDT Github).

Special thanks to Sandra van Gasteren who provided me with the models and textures for the project!

Quick example of the generation techniques in action (slowed down for viewing purposes).

The generation of the dungeon levels is done with a self-developed technique that takes various (simplified) steps:

  • First we generate a set amount of randomly sized cells (within specifications) on top of each other, after which they are spaced until no overlapping occurs.
  • We make a list of the large rooms (minimum size can be specified), every other room gets disabled.
  • We loop the list and draw lines from the center of a large room, towards the center of the next room in the list. At the end, every large room will be connected to other large rooms. During the drawing, the lines are checked on the x and z axis for intersection with smaller rooms. If an intersection with a small room occurs, then it will be enabled again and added to a list containing all of the active rooms.
  • Once every intersecting room has been enabled and added to the list of rooms, we activate the digger. The digger will make sure that every room will be connected by creating openings and corridors where needed. Ideally, it gives every room a few openings and corridors if possible.
  • When the digger is done creating the hallways, we generate the actual blocks (prefabs such as floor or wall tiles) upon a grid which takes information from a 2D array which we filled during our previous steps.
  • We run a cleaner to check for any bad spots, generally replacing blocks when needed.
  • Lastly,¬†we can start spawning the enemies/props/items and determine the special rooms according to some algorithms.