The Black Sheep Wiki
The Black Sheep Wiki
Ued3 | Unreal Editor Beginner Tutorial Part Four

The contents of this tutorial were written by Rachel Cordone at

By now you should know enough to make all of the geometry for your level, and light it up properly. In this part of the tutorial we are going to make a simple path network to teach the bots how to navigate your level, and add weapons and items.

Player Starts and Items

Up until this point you have been unable to test your level, if you try it gives you an error telling you that there are no Player Starts. Let’s go ahead and add those now. Open up the Actor Browser and go to NavigationPoint >> SmallNavigationPoint >> PlayerStart. Right click in your level and select ‘Add PlayerStart Here’. If you rebuild now you might get an error message saying “Navigation point not on valid base, or too close to steep slope”. This is caused by the PlayerStart actor being too high off of the ground. To have the editor correct it for you, right click on the PlayerStart and hit Align >> Align To Floor.

The PlayerStarts are directional, when you select one you can see the red arrow pointing from it. When a player starts at this location they will be facing in that direction, so it is a good idea to point them away from walls etc. One player start will not work for a multiplayer game, so we need to add a few more. Think about how many players you are designing your level for, then add a few more player starts than you need and spread them around the level. Try to start them in out of the way places so they don’t start in high traffic areas where they can be spawn-killed easily.

Now we need some weapons and ammo. For the weapons, add an xPickUpBase >> xWeaponBase to your level. Open up its properties, and in the xWeaponBase tab is the selection box for what weapon it is. If you don’t like having the base itself there, you can simply move it slightly underneath the floor. Also, if you don’t like the sparkly effect coming from it, you can open up the PickUpBase tab and set SpiralEmitter to None. All of your ammo can be found in the Actor Browser under Pickup >> Ammo >> UTAmmoPickup, while things like Adrenaline and Shield Packs are under Pickup >> TournamentPickUp. Try not to add too much or too little ammo, and definitely do not overuse weapons like the Redeemer or items like Shield Packs.

This is enough for human opponents to be able to play your level, but bots will stand around for the most part, unless they see a weapon or item nearby. Computer AI is not smart enough to be able to figure the level out by itself, so we need to tell it how to navigate our level. More complicated things like Jumpspots and elevators will be not be covered here, but I will show you how to make a simple path network for the bots to follow. The actor we will be using is a NavigationPoint >> Pathnode. They use an apple icon (Don’t ask, I have no idea either), and should be placed at intersections along the paths you want them to follow. Items and Weapons act as pathnodes as well, so you do not need to place one on top of them. In the following example picture, I have labeled the Player Starts purple, and the weapon, a rocket launcher, red. To make the bots able to run through all of the passages, I would place Path Nodes at the points marked by a green dot.

Once you have your nodes in place, either do a Build Paths or a Build All for the editor to create the path network. Once it is done, you can see the path network by right-clicking on any of the viewport toolbars and selecting View >> Show Paths. Do not worry about the color of the paths for now. If any of them do not connect, make sure they have a good line-of-sight to each other and that they are not too close to any walls. Let’s take a look at how my example path network turned out:

Notice that the paths go through all of the passages in the level. When building your path network, you want the bots to act human, so place the Path Nodes how you would run through your level, not just right along the center of every hallway. If you would run from one corner of a hall to the opposite corner because it would be faster, put the Path Nodes so the bots will do the same thing. Do a lot of testing with your path network in place to make sure the bots do not get caught up on any of the level geometry or do not go down certain paths. You might have to move or add Path Nodes to fix any problems with your network.

Advanced BSP

For the last section of this tutorial, I will cover some more things you can do with BSP. We already know how to use Add and Subtract in that section of the toolbar, now let’s see what else we can do.

Intersect and Deintersect - The two tools below Add and Subtract can be used to manipulate the Active Brush. To see the effects, create a small cube and place it at the corner of one of our pillars.

Pressing Intersect gets rid of all parts of the Active Brush that are in empty space:

Deintersect gets rid of all parts of the Active Brush that are in solid space:

This can be used to make complicated shapes with the Active Brush that we can use in other parts of the level. Note that any surface of the resulting Active Brush in contact with the level’s geometry will keep the texture and texture settings of that surface even if you have a different one selected in the Texture Browser. You might need to change them once you add or subtract the Active Brush if it is not the one you want.

Add Special - Mostly unused, the only thing we are going to look at is Zone Portals. Let’s take a look at our example map again, this time I’ve added a hallway and another room to the end. Press the Zone/Portal View button in the 3D viewport toolbar and you will see that the entire level is all one color group. The engine sees the entire level as one zone.

Zoning off a level helps the engine render BSP faster by helping it figure out what polygons it has to display. Zone sheets should be kept as small as possible, they should not be used in wide open spaces much. Good places for zone portals are hallways or doors between rooms. Create a sheet large enough to completely cover our hallway, then click the Add Special button. Select Zone Portal from the scroll box and hit Ok. The sheet will be displayed as a green brush. Click the Build All button and take a look at our level again:

Zoning off a level helps your level run a little faster in UT2k3/4, but the majority of optimization comes from Antiportals, which will be discussed next.

Add Mover - Movers are a topic all their own and will not be discussed in this basic tutorial.
Add Antiportal - In UT2k3/4, BSP does not occlude, meaning that although the player can not see through walls, the engine does, and it will render every mesh in the player’s view even if it is in another room. To prevent this, we use Antiportals. Putting Antiportals in walls prevents the engine from seeing meshes in another room, although if any part of a mesh can be seen, the entire mesh will be rendered. Let’s take a look at our example map, where I’ve added a tank mesh at one end of the room:

If we create a sheet with the Active Brush large enough to cover the entire mesh, it will disappear when we add an Antiportal:

Antiportals should be created as sheets. They are kind of picky, sometimes when you add them they won’t block anything. I found that adding them right next to the surface of walls works good, also inside large static meshes to block ones behind them. Be careful not to add antiportals where they would block a mesh that the player is SUPPOSED to see, for instance in a doorway. As the player passes through the door, all the meshes on the other side would suddenly appear, which wouldn’t look good. Also, remember that it takes time for the engine to calculate which meshes would not be seen, so make sure that using an Antiportal would be worth it. You would not want to use an Antiportal to block just one mesh with 8 triangles, for instance.

Add Volume - Volumes are used in UT2k3/4 to change the physics in an area, or just to let the player know where they are. Volumes can be any shape. They will not be discussed here.

You now know enough to start making basic levels. In general you want to minimize using BSP, some levels only have the main subtraction brush with the entire level built from Static Meshes inside it. You want to keep your poly count as low as you can, this can be viewed by typing STAT RENDER in the Command line in the bottom toolbar and looking around your level in the 3D viewport with Realtime Preview on. The numbers you want to look at are BSP >> Render ms and StaticMesh >> Triangles ms. Using the same Static Mesh over and over takes less time for the engine to render than a lot of different static meshes with the same number of triangles, keep that in mind when making your levels. Use Antiportals to optimize your level after you have all the geometry finished to keep the framerate up.

There are plenty of tutorials out there that cover more advanced topics, take a look at my other tutorials to give you an idea of some things you can do in the editor. Keep practicing and you will be able to make great levels pretty quickly. If you are serious about game design, don’t get discouraged at first. Above all, don’t fall into cliches. Keeping your own style will set your levels apart and give the community unique maps to play. I hope this tutorial was helpful, if you have any questions feel free to email me. Good luck!

Page last modified on November 11, 2005, at 11:00 PM