Making DM-Reverence: The Mentality of Level Design in UnrealEd
![]()

![]()
Hello there! Before I get into the guts of things, I should point out that this is not a tutorial on the ins and outs of UnrealEd. I’ve spent the past two months browsing such tutorials across the web, and most are far more comprehensive than I could hope to be — especially given my limited experience. In fact, if you’re looking for a top-notch series of tutorials, I have to recommend Hourences.com. Sjoerd De Jong is a professional FPS level designer (hands-down the best I’ve ever seen), and his articles are extremely comprehensive.
However, I’ve come to realize that there are a lot of small things about UnrealEd I had to figure out for myself through a prodigious amount of trial and error. Try as I did, I simply couldn’t find explanations of things like how to kill players that fall off the level (which, as it turns out, is as easy as adding a “UTKillZVolume” with the “Add Volume” button in the toolbox). It’s obvious to me now, but it wasn’t then, and I’m willing to bet that others could find themselves in similar situations.
That’s where this article comes in. I’m going to talk about how I put together my map, DM-Reverence, and along the way, I’ll point out things that are helpful to know. The bulk of it will be quite theoretical — what to think about when placing items, jumppads, and so forth. But this isn’t a reference tool; it’s designed to be read start-to-finish. Hopefully, if you’re just breaking into level design for Unreal Tournament 3, it’ll give you a good idea of the overall process.
Still with me? Awesome! Here we go, then.
![]()
Part 1: Preparation
Go play Unreal.
Really! I mean it. If you’re going to be making a level for Unreal Tournament 3, then you’d better have a solid grasp of what’s important in UT3 gameplay. It’s not enough to say that you have played it, or even that you play UT3 all the time — although that is, of course, incredibly helpful. Duh. But you should still go and play every official multiplayer map for whatever gametype you’ll be creating.
In my case, it was Deathmatch maps, because I wanted to make a Deathmatch map. When it comes to shooters, Deathmatch is about as pure a gameplay experience as you can get, and since I was just starting out, I figured I’d start with the basics. I spent about twelve solid hours of my first week on this project, playing and playing, because I wanted to know what really MAKES a UT3 Deathmatch map. What I came out with was that:
- Maps can be surprisingly big, even when they’re designed for 2 to 4 players. Players like to have places to go and space to move around. It helps to pace gameplay.
- Every room has a purpose, and that does not include “getting to the next room.” Hallways connect rooms; rooms have items. UT3 is all about resource management, and items are the resources of the day.
- Players need to be given those items right off the bat. Spawn points should be positioned close to weapon factories so that players can get right back into the fight. Sure, the best weapons might not be so easily reached, and you can even make popular pickups like the Rocket Launcher tough to reach or heavily contested. Just don’t force players to use the Enforcer.
- Different players like different guns, so make sure you’ve placed weapon factories for all of them (the reasonable ones, anyway). I absolutely hate the Biorifle, but I still put it in DM-Reverence. If players don’t have their favorite weapons, they aren’t going to play your map.
- Good maps tie back on themselves; essentially, they’re all big circles. If you have a dead-end, make sure you have a good reason for it, like a big powerup.
![]()
Part 2: Layout
In all honesty, if you’re planning on making a map, I hope you have some idea of what you’re looking to create. That’s not to say you have to have a mental blueprint of every nook and cranny, but even a theme is a good start. For my part, I wanted to create a space map in the classic vein of Quake 3’s “The Longest Yard”: q3dm17. I’d also played many a custom Quake 3 space map, and most of them (especially the ones by my favorite designer, Nicolas “Nunuk” Bouvier) centered their action around a giant, central jumppad that players could bounce up and down on. So I started with that, and then just kept drawing:
My initial layout wasn’t all that complex. I wanted to keep things symmetrical, and I wanted the central jumppad to be the lowest part of the level (which changed later on, but I’ll get to that). Since space maps tend to have perches, I decided to create two that were raised and separated from the central platform.
Those simple perches were all it took to make me realize the most fundamental component of my level’s design: risk vs. reward. I cannot overstate the importance of this concept enough: Everything players do in your map must come back to it. Is height an advantage? Make getting high difficult or dangerous. Is a powerup balance-shifting? Find a way to make getting it something players might choose not to do. In the case of the two perches in my sketch, I knew they’d be great places to snipe from, so I balanced that advantage with a risk: I put in redirectional jumppads to increase the amount of air time players have to survive before they get to the perches. The longer players are in the air where their character control is minimized, the easier it is for opponents to shoot them down.
Now, my design couldn’t all be separate platforms with jumppads between them; classic UT3 gameplay is very run-and-gun, and breaking away from that mold ignores a lot of what makes UT3 fun to play. Thus, even though I raised the two rounded platforms on the north side of the dais, I kept them physically connected to it with the branching stairwell. But I’d hit a snag: I’d forgotten about the importance of circular design.
Circular design doesn’t mean your map has to literally be a big circle; it just means it needs to be interconnected. My two rounded platforms were raised and provided the advantage of height over the central dais, but it was suddenly difficult to get from one side of the map to the other. Fortunately I was making a space map, which means long-range jumppads are a solid fix. You don’t want to overuse them, but if they help enforce good circular design, they’re doing their jobs. I ended up adding six more: two between the two perches, two from the perches to the platforms, and two more from the platforms back — to the opposite perches. The result? A sort of figure-8 design that keeps feeding players back to the dais.
![]()
Part 3: Basic Structure
Translating a 2D design to a 3D environment doesn’t always go as planned, and my layout was no exception. That long, curved pathway along the northernmost side of the map made sense to me on paper (after all, players need room to move around, and it appeared to provide a good amount of room), but I’d made little more than a very long and pointless hallway. When it came time to model it in 3D, I realized my mistake. It was time to improvise!
For the sake of “why not,” I chopped the pathway in half and disconnected them from the two rounded platforms. With them only accessible from the two perch jumppads, I had my first 3D draft:
I didn’t realize it at first, but I’d manage to build myself the perfect spots for a couple low-key powerups. Take a look at any out-of-the-box UT3 Deathmatch map and you’ll find that armor pickups and other, similar powerups tend to take some time to access, but are never more than a hop away from the action. The two platforms I’d created (which I nicknamed landing strips, since they’re accessed from the map’s biggest jumppads) weren’t connected to the surrounding geometry, yet players aren’t more than a double-jump away from the stairwell.
The lesson I learned? Play around with your mistakes. Sure, they won’t always lead to the best of results, but if you think a bit laterally, you can turn them into successes.
Oh, and as for that draft, here’s a better look at it:
![]()
Part 4: The First Real Test
So, you’ve got your layout, you’ve managed to translate it into the editor (remember, Hourences’ tutorials should be your first stop when you want to break into UnrealEd), and now you want to see how it plays. Well, no. Stop. Not yet. You’ve got some work to do first.
I had a lot of trouble getting my map to work right from the in-game menu the first time around, and I thought I followed numerous tutorials to the letter. Now, to be clear, there’s nothing wrong with those tutorials — I’ve looked over them again, and they’re telling you the truth. But just to keep you from driving yourself insane, don’t cook it just yet. Instead, once you’ve saved your map go to:
View -> World Properties
Click on the WorldInfo tab. Where is says Author, fill in your name, and where is says Title all the way at the bottom, fill in your map’s title. It seems pretty simple, but it’ll cover for a faulty or missing .ini configuration file and let you select the map from the in-game menu.

All set? Good. Next, click the blue down arrow next to the MyMapInfo row and select UTMapInfo. That’ll give you the same drop-down selections you see above, where you can make a few additional personalizations. The MapMusicInfo row can lend an instant level of polish to your map; pop on over to Hourences’ for full details. And, while you’re there, you might as well follow his instructions on setting up your custom .ini file.
Once you’ve gotten that far, you’re almost set. Now you just need to make sure you’ve got all 16 player starts in the game, and, no matter what, set up your bot pathing.
Do not, I repeat, do not skip bot pathing. It doesn’t matter if you don’t care about how well bots will play in your map once it’s completed; they are invaluable in early testing. I refused to design proper pathing when I was first building my level, yet when I finally did, I learned more about my map in 10 minutes than I had in four weeks of playtesting. It’s an excellent way to get a glimpse of just where the action will take place in your level. You see, bots won’t go where they don’t need to. If you don’t put a sexy pickup in every room (remember what I said about every room needing a purpose?), no-one’s going to bother with them in the heat of battle. Bots don’t need to explore; if there’s not a reason to go somewhere, they won’t go.
Plus, it’s not like it’s difficult. Hold down the “.” key, and click somewhere in your perspective view. Taa-daa! Instant pathing node. Building the map automatically chains them together, and the error screen at the end of every build will tell you what you need to fix. All you have to do is make sure there’s a node at the bottom and top of every stairwell, around the span of every room, and along edges you want bots to be able to jump down from. You don’t need to worry about jumppads, spawn points, or pickups — they’re all automatically integrated into the pathing network.
If you want to take a look at bot pathing at any time, select your perspective viewport and press the “P” key, and you should get something that looks like this:
The purple lines are jumppad paths — helpful, because you can change jumppad forces and watch those lines dynamically shift, making fine-tuning jumppad arcs a synch. White lines represent paths that that are wide, green lines that are narrower, and blue lines that are straight shots, which bots will follow precisely. Thankfully, you don’t need to worry about path types; in the process of building paths, UnrealEd will judge the surrounding environment and pick the best option to optimize things for you. Yes, sometimes UnrealEd is just awesome.
Oh, and if your screen looks a whole hell of a lot more packed with paths than mine, that’s just because I turned off calculation of long-range translocator/jumpboot paths. If you want to do the same, just head back to the World Properties window and under the WorldInfo - > MyMapInfo -> UTMapInfo tab, and uncheck “bBuildTranslocatorPaths”:

![]()
Part 5: Leading Your Players
Encouraging bots to go places is one thing; encouraging players to move around is quite another. The rule to remember: If the player can’t see it, it doesn’t exist.
It’s just too easy to assume that because you know where to look, the player does too. My original design called for a section of the map I referred to as the catacombs: a compact, run-and-gun-friendly segment underneath the central dais. But when I built it and released the map to a small circle of friends, none of them — not a one — even noticed it was there. Access to it required dropping over the side of the dais, and you had to be looking for the access point to find it.
Now, you may think that having a “secret” or hidden section of your map is a nifty idea, but when it comes time to fight, that section becomes a waste of space, of rendering power, and of effort on your part. It just isn’t going to be used. So if you’re going to put time into producing part of a map, make it someplace your players will want to go and know how to get to.
Sometimes, though, you need to take things a step further than being visible. My jumppads, for instance, send players flying all over the map, and it quickly became apparent that I needed to clarify where each jumppad led. Thusly, I turned to particles:

While granted, it’s a little hard to see in a still picture, those orange particles stream out of the jumppad on the right, move up and to the left, and fade out towards its terminus on the left. The effect ends up being quite subtle in the heat of a fight, but it’s enough to show players where they’ll end up when they hop onto a pad.
And as for that problem with players finding the catacombs, I eventually fixed the problem… by adding a completely new section to the map. Sure, it might have been a bit of an extreme move, but it ended up turning the map from an interesting space romp to a surprisingly solid design:
![]()
The Next Step
So what happens now? Well, there’s still a lot left to do on DM-Reverence, just as there’s gonna be a lot left to do on your own map. All the art assets still need to be implemented — static meshes, textures, and all the little details that go into making UT3 maps truly next-generation. But that’s an article for later. Thanks for reading, folks!









