Mazeum was my entry for Search for a Star’s Rising Star 2021 programming challenge, where I reached the finals.
In Mazeum, you play as a thief trying to steal a high-value item from a museum. You can’t just walk in and take the item, but will have to sneak through the vents to get where you want to go. Not all vents are connected to each other, and not all rooms are easily accessible, so you’ll have to go in and out of the vents to find your way through the museum.
Procedural Generation
One of my goals for this project was to have procedurally generated levels.
Rather than setting up two stages for the procedural generation (generation and verification), I decided to go with a one-stage approach to save development time. I made this possible by having the procedural generation work with a ruleset that prevented the verification from being needed. While this kind of procedural generation likely has its limitations, I did not run into any problems with it for this project.
Research
For this project, I researched two reference games (Dreadhalls and Hitman 2) for their procedural generation and stealth mechanics, and looked into real-life museum structure to get inspiration for the layout of the museums in my game.
My research on museum structure lead to me to the conclusion that there are three different types of general museum layouts (though this is an oversimplification):
- Inter-connected rooms: One room leads to another, with no hallways between rooms.
- Separate rooms: Hallways connect rooms, and rooms have no direct connection to each other. The rooms fit around the hallway, not the other way around.
- Hybrids of the previous two types: Rooms can be accessed through hallways, but there are also doorways directly leading from one room to another.
Based on this research, I concluded that separate rooms connected by a hallway would work best for my game. Closing off individual rooms is easy, and can force players to find another way into the room (through vents), potentially making the museum feel maze-like.
The research (along with the rest of my documentation) can be found on the game’s itch.io page.
Reflection
If I were to work on a similar project again, I would go for in-editor procedural generation rather than runtime procedural generation. This would have allowed me to make the levels more enjoyable and diverse (even with a limited number of room templates), and it would have allowed me to do optimisation on the levels, for example by setting the lighting and most actors to static (rather than movable).
Something that I would do the same is using a Trello board (or something similar) to track my work. The board gave me a good overview of what I still had to do, and gave me some (short-term) project goals to work towards.
Additional Information
Team size: 1
Engine: Unreal Engine 4
Project Duration: December 2020 – January 2021 (70 hours)
Available on: itch.io, GitHub