How we are handling level generation in STRAFE
It was important to us that the player have an authored experience. We are deeply inspired by early id games and love the level of detail and love that they put into the their maps but we wanted to create a fun fast gameplay experience that you could return to after beating the game and not get sick of static levels. But at the same time completely procedural levels are often not fun to traverse or balanced, they work well in Minecraft but not in a game that would play like Quake so we are approaching it in an interesting way.
We started by creating a large collection of rooms that fit together like a puzzle and randomize every play. I build each room to have multiple entrances that the game will choose to plug or open depending on the generation.
To do this Steve created two door nodes that I can build into our levels. The pieces I have named simply the “door plug” and the “tile plug”. The door plug is a 4x4m node that will connect to other 4x4m nodes and disappear after connecting two rooms. It can also have geometry childed to it. This helps me gate off areas if the door is inactive to help keep the room feeling good. For example If a door is at the bottom of a set of stairs I can place a wall to block off those stairs if the door is inactive during that spawn.
The “tile plug” is really cool, I like it a lot. It’s a 8x10m tile that will connect two spaces and the purpose of this connection is to help change the feel of rooms and not just connect them at the doors. This can connect two smaller rooms making a larger one or it can add a smaller room onto different areas of a larger one.
After the map is created all of the content that the player will interact with is randomized within the environment. This includes: enemy placement, food dispensers, ammo, power ups, etc. Each of the assets are coded to follow a specific set of rules so that they will behave appropriately.
I really love secrets in games, and not lazy ones. I don’t think that an extra clip of ammo behind a staircase is a rewarding secret. I adore developers who spend time on content that will not be seen by a substantial amount of their players but will truly reward the people who dig in and dedicate their time. To me that shows passion because any company focused on their bottom line won’t waste their teams time on such content.
(The orange walls are moveable walls for secret rooms)
One of the staples of STRAFE is secret rooms (that is not our only form of secret) and monster closets. Much like the entrances there are secret doors littered throughout each room and the game decides a percentage that will be monster closets, secrets or inactive and then randomizes them throughout the level. This should keep the player on their toes even if they play the game enough to memorize all of the door placements.
There’s still a long way to go before I’m in a place where I feel good showing the game off but I wanted to share our level generation solution with you. I’ll write about my process in designing rooms next.
Thanks for reading about our development, we’ll be sharing more soon. You can keep an eye on our project via the links below if you aren’t already!
-Thom














