My final project will be a procedurally generated navigable maze built in Unity, and utilizing Google Cardboard. I have a preliminary demo with a pre-built maze, made from pre-built rooms that fit together.
My plan is to generate a maze from one of two methods. They have their benefits and drawbacks.
- Create a grid of rooms, and randomly connect them until all rooms are connected. The benefit here is that the maze will be of a predetermined size. The downside is that it is very regular and could be potentially expensive to create. However, with the small maze sizes that I intend to create, this likely won’t be an issue.
- Grow the maze by creating rooms based on random generation. The rough size of the maze would be determined by the odds of a new room being generated for each room. The benefit here is that the shape of the mazes would be more random. The downside is that there is less control over the size of the maze, and the maze could be potentially infinite. This could be accounted for by setting a maximum number of rooms.
Once the location and connections of rooms have been placed, the rooms themselves would be generated. Each room would be made from nine pieces: a center, four corners, and four edges. Each of the pieces would be randomly selected from a pool of viable candidates based on the connections to the neighboring rooms. This would ensure that each room is different, even if it is the same type of room (T, X, I, L, etc). Additional uniqueness can be generated by adding decorations to the rooms. This endeavor will require creation of the 3D assets needed, which would need to fit together seamlessly in many configurations.
MVP: The target goal would be to make the maze procedurally generated, so that it is different each play-through.
Target: There would be interactive elements to the maze, such as doors, keys, traps, and maybe even an antagonist that would chase the player through the maze.
Stretch: Several different “tilesets” such as a garden maze or a cave maze. This would require making additional assets.