Our "Procedurally Generated" Game World
Hello there! In this post, we’re going to dive into how we used "procedural generation" to build out our game world. Procedural generation is an incredibly useful tool in game development, allowing us to generate large, intricate worlds with relatively little manual work.
If you haven’t checked out our game yet, give it a shot!
First things first, we needed to generate a noise map to create the base for our game world. We used a tool to do this, and then drew the main path of the game on top of it. We never got to randomly generating the path, so it's not true procedural generation (hence the quotes). Here’s what the texture looked like:

We actually ended up using only half of the generated map because we didn't have enough content to fill it out. We did, however, tint the texture to match the color of the ground and used it for shadows underneath the objects.
Next up, we defined map objects to spawn within a specified grayscale value of the map texture. Each object had other parameters that allowed us to tune its placement. This gave us control over the placement of all the objects in our world. Additionally, map objects had variants to prevent uniformity. Here’s what it looked like:

We had plans to use a secondary texture to spawn enemies of varying difficulty, but alas, we ran out of time. The resulting map was very large and couldn’t be loaded all at once, so we had to build a chunk loading system. This allowed us to load in the objects one at a time every frame, which helped eliminate stuttering issues. Here’s what the final result looked like slowed down:

All in all, procgen was an incredibly powerful tool that allowed us to create a fairly large world with minimal effort. We hope this post has given you some insight into how we did it, and maybe even inspired you to try it out yourself!