< < back
This week was pretty busy, but I still found the time to build a new overworld map. Here it is:

This is the Metal Maze Overworld, and you can probably tell by looking how it gets its name. To match the puzzle-y factory level I intend to connect it to, this world is composed primarily out of a very dense network of steel pipes. It is a cold place, inhospitable, and not arranged for easy traversal. Like many of these worlds, it's easy to get lost in -- especially because each room has so many entrances and exits. In addition, some parts of the map are gated behind switches which move platforms around, so it might not be obvious which sections are actually traversible. Lastly, there are teleporters in each corner that move you to the opposite end; however, one of them is broken until the factory level is completed (its corresponding teleporter leads to the exit).
It's weird for me to try and talk about the level design process, because a lot of it isn't totally conscious. Unlike writing or programming, which demand my full attention, drawing out these maps is a fairly mindless task. I put on some music, space out for three or four hours, and suddenly there's a bunch of new rooms. This is especially true for a map like this one, where it's more important that it be really really big than that it follows some particular metric of quality. If the maze rooms wind up seeming interchangeable, good! All the better to get lost in.
There are still some constraints I need to follow for a successful map, though. For example:
- I must be careful to avoid putting tiles right up against the screen edges, because the player won't be able to see them
- The player's maximum jump height is five tiles, so if I want an area to be reachable, it can't have a greater vertical gap than that
- The player's maximum horizontal jump height is harder to define and depends on a few factors, so if I include a big sideways jump, I need to test to ensure it doesn't go too far
- Verticality is "uneven" -- it's easier to go down than up -- so I need to make sure there are a fair number of pathways that cross all the way from the bottom of the map to the top, or else players will just spend all their time at the bottom
- NPCs and lore terminals need relatively large flat spaces -- usually around 8 tiles or so -- so I need to make sure I include enough of those, relatively evenly-spaced around the map
So, building the level necessitates staying, at minimum, awake enough to keep an eye on these constraints, plus a bit extra to plan around things like where the level exits are going to be (those are the colored-in parts jutting out the edges of the box) and if I want any secret areas.
Speaking of NPCs, coming up with these is my favorite part of building these overworlds, so I tend to do them first. This also helps me figure out the mood of the place. Our cast of characters this go 'round includes:
- Radial Hyperboloid
- Genses Inicqua
- Multithreadward
- 16 Tons/km^2
- Xclusive Orr
- ') DROP TABLE NPCs;--
- Strange Quark
- Bleisenkonstruktion
- NyptuneHole
Exploring around the map to find them will yield such insightful commentary as:

There are a couple more things to figure out before these overworld levels are done, namely, the visuals and music. I'm not worrying about foreground tiling for now, and I usually try to keep the backgrounds simpler than in timed challenge levels. After all, I'm not trying to distract you with them. This time, I went with a simple Perlin noise background. The shader I'm using (there are billions of them, it's a common stock effect) has multiple "octaves", and if I push each one to the side at different speeds, it creates a nice parallax wind effect, like so:

As for the music, I wanted to bring in a sample from Lou Reed's "Metal Machine Music"; it's what the map is named for, after all. But I didn't love the thought of dumping such a monotonous audio texture on the player unedited. I tried putting a drum loop behind it and playing around with a few effects sliders in FL Studio, and the two somehow transformed this notoriously unlistenable piece of music into something almost bouncy:
I'm not sure this is what I want, actually! "Bouncy" isn't exactly the right adjective for being trapped in an industrial pipe maze with a bunch of broken machines. I tried lowering the pitch in-engine, but the pitched-down drums produce a very recognizable "Undertale Genocide Route" effect, and that's not really what I'm going for here. I'll keep it as is for now, but consider a second effects pass later; maybe some sudden crashing and clanging noises will spice it up a bit.
Now the level is mostly done, but I've saved the programming for last. Luckily there aren't a whole lot of new mechanics for this one; the switches have appeared in previous overworlds already, and it's pretty easy to fashion a simple teleporter out of the parts I've already got. There are no non-Euclidean antics in this particular map, as there's plenty of room for that elsewhere. I did have to set up this rotating L-shape thing, which I think is pretty nifty:

That about covers it, but I also wanted to mention something related I did this week: I finally set up tiling with Godot's "terrain" system, which means I won't have to manually redraw every single map once each level gets real tilemaps. I was dreading the amount of work that would need to go into that, and knowing it's not necessary anymore is a huge relief. With a function to automatically replace generic tiles with terrain, all I have to do is push a button. Here it is applied to an earlier level:

Ahhh. Satisfying.