Procedural Generation of Multiplayer FPS Levels

My Dissertation Project

My final year dissertation discussed the practice of Procedural Generation in games and how would it be applied to generate multiplayer FPS levels. The study required a full investigation into existing examples of FPS levels to analyse level design patterns and determine an effective algorithm to generate levels that conform to those patterns. I created an algorithm that can generate single floored arena style levels with designated team bases and respawn points.

An example of a generated level. The rooms are colour coded for what type they are and the blue dots are the placed spawn points.
An example of a generated level. The rooms are colour coded for what type they are and the blue dots are the placed spawn points.

A first person view of inside one of the generated levels

The levels could then be passed into Unity and generated into a full 3D environment to be used for playtesting. The levels would be playtested by volounteer participants who would rate the quality of their experience when playing a multiplayer game on the map.

An example generated level with it's heatmap rendered on top
An example generated level with it's heatmap rendered on top

Spawn points in these levels need to be placed in hidden or obscured parts of the room to reduce the chance of a player immediately being attacked by an enemy when they respawn. I implemented a system that can determine what a player can see when looking into a room. A heatmap is made of the level map which represents what a player can see when peering into a room through it's entrances. Using this generated map, the spawn points are placed in the safest areas in each room allowing spawn points to be placed dynamically in the map in sensible positions.

The source for this project is here: Github