UnrealEd 3.0

Advanced Brush Techniques

By now, you should have a general understanding of how Binary Space Partitioning (BSP) brushes are created and used in level design. In this section, you will supplement that knowledge by learning a variety of advanced techniques to take full advantage of BSP.

This section also covers Intersect and De-Intersect brushes and the 2D shape editor, which is an invaluable tool for those without access to a 3D application like Maya or 3Ds Max. Next, you learn how to save the brushes you create for future use and how to export your brushes from UnrealEd.

This chapter coverage focuses on helping you understand how the geometry of your levels works so that you can make your levels operate more efficiently and complete them in a more timely fashion. For example, when building objects in your levels from BSP brushes, you can use just simple brushes and primitives, but this method could create unnecessary detail in you level. For example, say you wanted to create a pillar with crossbeam's supports coming out of it.

For this example, a cylinder primitive was used for the central pillar and added to the level with an additive brush. For the crossbeams, you could simply make them with additive brushes as well so that they intersect not only with each other, but also with the central pillar.

This method might seem to work but it's actually creating unnecessary geometry which could eventually result in BSP errors, such as a Hall of Mirrors (HOM) effect. A little bit extra about BSP can be found in this FAQ


The problem is that the lines inside the cylinder shouldn't exist because separate pieces of world geometry shouldn't be allowed to pass through each other. To fix this, you can perform an action called Intersection, which modifies the Builder brush so that the additive geometry of the crossbeams doesn't' pass though the cylinder.

This technique might look more visually complex, but it's actually easier for the computer to calculate because of the nature of BSP.

 

Brushes from other brushes

When creating your levels, at times you need brushes with special shapes that you can't produce by using simple primitives. Say, for instance, that you need a half sphere brush. The primitive brushes have no setting for this shape, but often, you can achieve unusual shapes by basing your brush on geometry already in the level.

The Intersect Tool


The Intersect tool removes all areas of your Builder brush that are not inside solid geometry. The following figures demonstrate how this tool works.

Before intersection
After intersection

Your Builder brush is now a quarter-cylinder. Keep in mind that you Builder brush has been modified, nothing else. At this point, you're ready to create an additive or subtractive brush to build geometry based on the new shape. To see what happens when you use the Intersect tool, try it out on a simple box-shaped room.

The De-Intersect Tool


Think of the De-Intersect tool as the opposite of the Intersect tool. As with intersecting, the operation edits the shape of the Builder brush. However, the resulting shape is is calculated by removing the area of the Builder brush that's inside solid geometry and leaving the rest. Using the previous example,

Before De-Intersection
After De-Intersection

 

Adding Static Meshes

Now, for a topic that many of you, I'm certain, have been waiting for: including Static Meshes in your level.

Static meshes play a very important role in this build of UnrealEd as well as in the game as a whole.

Complex BSP-based geometry can slow down the game engine considerably, which results in vastly reduced framerates that adversely affect the playability of a level. Static Meshes, take very little overhead to render.

Essentially, a static mesh needs only be rendered once, and it is stored in the memory of your video card for quick and painless display later. This means that if you have the same static mesh displayed 20 times in your level and varied by size, it's only stored in memory once. There is much more to the definition and explanation behind the differences between BSP-based geometry and static meshes, but for now just know that using static meshes will greatly enhance gameplay framerates by reducing overhead on your computer as well as expanding the visual interest of your level.

So, what can we use static meshes for? The answer to that is about as varied as the type of geometry you can include with static meshes. Basically, static meshes can be anything from simple decorations such as the picture to the left or they can serve a function such as a highly detailed bridge that allows the player to cross a river. With that in mind, a static mesh will always block a player—that is, they will be solid in the game so that a player can walk across it, bullets will hit as if on walls, etc.—unless certain properties are set to allow a player to pass through.

Another noteworthy element of static meshes is that they can safely overlap the BSP-based geometry without causing errors in your level. This is to say that a static mesh can safely cross over into solid space without affecting the computation of the BSP. On the otherhand, if you were to add a brush and overlap that brush into solid space, the potential for BSP errors is greater, which could result in holes in your BSP geometry (believe me, BSP errors are very common, that's why I stress this all the time).

Lastly, one final note: overlapping a static mesh with another static mesh could cause undesireable results. If the face of a static mesh is perfectly aligned with the face of another static mesh, a shimmering effect might occur as, essentially, the two overlapping faces attempt to render at the same time. (I'm sure there is a more technical explanation on this...)

 

Scaling, Texturing and Packaging your map »»