Week 12:
Hi there. Well, in the wake of Shogo's awesome "bootleg" movie release, I am scheduled to do a weekly update for Blood 2. Rather than trying to wow you with some cool screenshots or video trailers, I'm just going to keep it low-key this time and go over something which aspiring LithTech designers might find interesting... brushes! (applause, cheers)
There are a bajillion things you can do to brushes to make them work for you in LithTech. In the editor you can access a brush's properties via the "properties" tab.
I'll go over these options one by one.
The "name" property should be self-evident as to its purpose... this is simply the name by which the brush can be referred to by another object. "Pos" and "rotation" are both positional descriptors, which generally aren't messed with since they are automatically set when the brush is created. Pretty straightforward.
"Solid" tells the engine whether or not the player is obstructed by the brush. Setting little wall details to be non-solid is a good way to keep the player from becoming obstructed by them, which is especially important in bloodbath mode. "Nonexistant" does just that... nullifies the brush. Say you have a section of the level you don't want to process for a particular reason, or you have some brushes you just want as reference in the editor. Set them nonexistant and they won't show up in the game at all. "Invisible" brushes are a good way to streamline movement in detail-filled areas. By placing invisible brushes against a bumpy wall, you can make sure the player won't get caught on any of those bumps as he tries to out-run a Shikari.
"Translucent" tells a brush's textures to use their alpha-mask values for transparency / translucency effects. Glass, metal grates, forcefields, et cetera.
A "skyportal" brush will act as a portal to the level's sky-box. This is how you add skies to an open area or behind a window. "Fullybright" makes the brush's textures as bright as if they were lit by a white light (255/255/255) all across.
By using "flatshade" you can remove lightmaps from a particular brush or surface, which will greatly decrease the rendering time of that brush. In big, wide open areas you can set all the brushes to be flat-shaded, and then also mark them as "directionallight," which will cause them to derive their brightness / color values from a "sun object" that you can place in the world. This really works well on terrain maps, especially in combination with "skypan," which will map a pre-defined moving cloud-shadow lightmap to the brush.
Looks pretty cool, IMHO. You're probably asking, "What's the point of making a brush non-lightmapped for speed reasons, if you're going to re-add a lightmap at the end?" Well, the panning-sky lightmap simply isn't as expensive as a regular lightmap. :)
"Gouraudshade" and "lightmap" are two ways of shading a brush. Gouraud shading isn't quit as nice as lightmaps, but it's much less of a strain on the renderer. Just another way of speeding up complex areas in a pinch. "Subdivide" tells the world processor whether or not to break up the brush's surface into smaller polies for the purpose of lightmapping. If you have a flat-shaded or Gouraud-shaded brush, you don't need its surfaces to be broken up, so you can tag it as non-subdividing too. "Alwayslightmap" is an over-ride measure.
"Portal" is interesting and useful. By creating a zero-thickness brush, setting it "portal" and "hullmaker," and linking it to a door or lift, you can create a vis-list portal that opens and closes with the door. This gives the designer more freedom with layout in terms of which areas are visible from other areas at any given point. "Hullmaker" brushes are simply hints for the level processor during vis-time.
Last of the boolean flags is "nosnap." Sometimes we deal with weird geometry in LithTech, where the vertexes somehow end up on a grid system that is off the normal grid, even at the lowest scale. This can cause problems for the processor, so we have to mark the relevant brushes as "nosnap." This lets the processor deal with them properly. These problem brushes occur often with terrain mapping and angled geometry that has been hollowed out.
The "detaillevel" field lets us alter how the brush is treated by the vising process. At 0 it is a normal brush, at 1 it is not considered by the vis at all (for little details like light fixtures and supports), and at 2 and 3 it is just not drawn if you are standing far enough away.
The "effect" and "effectparam" fields let us do special movement effects with the textures on the brush's surface. Moving water and conveyor belts are the two most common uses of this. "Frictioncoefficient" describes how slippery the surface is, with 1.0 being normal.
Well, there you have it. If you ever plan on making Blood 2 or Shogo levels, copy and print this update for your own reference. It will come in handy. :) Feel free to e-mail me your questions if you are already using the LithTech editor. I'll try to answer them in my spare time.