|
Building
with Speed in Mind |
 |
How
QBSP and VIS work:
This is stuff you don't really need to know about when you are getting
started, however knowing how these programs work will improve your levels
as you start to make better and more complex levels.
These are two of the the three programs that compile your map into a playable
Quake level, "light" being the third. QBSP does the bulk of the actual
level work, a large enough map can require up to 130 megs of combined
physical and virtual memory to compile in QBSP.
VIS is what will make a properly made large map run smoothly. VIS takes
the portals data generated by QBSP and essentially looks at all of your
level from every possible angle and decides which areas can see each other.
It then puts this information into the .bsp file. Without information
the Quake engine will try to draw the entire this level at once, because
it doesn't know which area's see each VIS cannot be run on a level that
has leaks.
other. Essentially, a level which has not been VIS'd will not play well.
You will want to run VIS "FULL" (-extra in expert mode) before releasing
your level to the public. Running VIS on a large level can take between
30 minutes and 5 days! The more complex your level, and full of small
parts within your rooms, the longer VIS will take.
VIS however can not make up for maps which have layouts
which exceed the limits of the Quake engine. See the section below on
"r_speeds"
|

Hunting the elusive leaks, using "pointfile" !
Keeping "snap to grid" on while you do most of your editing will save
you a lot of leak hunting headaches.
|
Finding
Leaks:
Leaks are always very frustrating, but finding them quickly is
part of what defines a good level designer. With a little patience and
the right information you'll have them licked. When you have leaks, you
have spots in your map that are open to the outside space. You must find
the leaks or QBSP and VIS cannot fully process your level. In
Quake load the leaky level then type "pointfile" on the console,
this will cause a string of dotted lights to be visible within
your level, this trail should lead to your leak. Look all over your
level, if you can't find the trail, you may have to "noclip" outside
your level and look outside. You will likely get the message "not enough
free particles" from Quake when you type "pointfile", don't worry for
now. Try finding your leak first. If you can't find it, you will want
to increase the number of particles, by adding "-particles 10000" to
the command line parameters (you can try more, like 50000). This will
increase the number of particles in the level that will lead to your
leak. I always try it without the extra particles first, because then
the particle string will not be as long and confusing a trail to follow.
Once you find the leak, fix it in Worldcraft, and
process it again. If there are more leaks, you will have to repeat these
steps again.
|
!
You won't get a fully accurate reading of your r_speeds until you have
run a full VIS on your level.

Use "r_drawflat 1" to turn off the texturing in
normal Quake, and see the polygon blocks that QBSP has broken your level
up into.
|
r_speeds
This is one of the most important, and limiting factors in current
3D level design. To make a good map you must keep the r_speeds within
allowable limits. r_speeds dynamically measure various elements of a map.
Try typing "r_speeds 1"in the console and then moving
throughout your map (or any map). A series of numbers will begin to scroll
up the screen .
The third number is the one we are most concerned with, in the example
picture it is "378". This number represents the number of polygons being
drawn by the Quake engine in the current view. The present acceptable
limit for this value is 500. If that number hits 799, Quake will not draw
some areas, and walls will grey out, you may have seen this in maps which
haven't been VIS'd yet. Also, levels with more than 500 visible polygons
may not play well on slower systems, something every good level designer
takes into consideration. This
means that you have to limit how big your rooms are, or how much detail
they contain. To make things worse, rooms that VIS decides can be seen
by each other will add to each other's count. Knowing how these work,
how to block VIS, and planning your level before you start to build
it can help keep the numbers down greatly.
The sky's the limit:
Using a sky texture can also help bring down the polygon count because
the sky uses very few polygons. QBSP doesn't break sky into many smaller
polygons the way it does other surfaces. If not overused this is an
effective method of reducing your r_speeds.
Dynamic lighting:
As nice as those torches, flames and pulsing lights look, they are rendered
in real-time and can take their toll on the playability of your level
as a multiplayer level. Using them in low traffic, low polygon areas
is ok, otherwise, try to keep them in single player levels.
The
Forge's "tips and tricks" section has more info and links on r_speeds
in "Fight the Lag".
Also check Somberfire's WCU class on making faster levels, 03/09/97.
|

Use "r_draworder 1" to see what parts of your map
VIS can see too. This reverses the order thing are drawn, so the far things
are drawn on top of the near things. Everything you see is being drawn
by the game engine no matter which order they are drawn in. Wander around
a few id levels to get an idea of how VIS sees things.
|
Blocking
VIS
The main trick to keeping the r_speeds down is knowing how to
block VIS. After a while you should start to get a feel for how VIS works
and what it can see. The main way to block VIS is essentially by using
corners. There are two different styles of using corners to block VIS.
The other way to block VIS is water, but in this age of transparent water,
it has lost most of it's usefulness. See the next section "Transparent
problem" Corners:
Whenever you see a hallway that connects two rooms, and the hallway
goes around a corner, it's almost always done to block VIS .
VIS is not absolutely precise either, just because you can't see the
other room, it sometimes can, so you'll have to make up for that. If
VIS were that precise, it would likely take over ten times longer to
VIS your levels.
Big Wall: The big
wall just causes you to go around instead of straight through, and manages
to block VIS in the process providing the doorway is small enough. The
best example of this is DM3 .
The big wall there separates those two big rooms and blocks VIS. Without
that wall, both of those rooms would be quite laggy.
|
Transparent
problem: In the beginning, there was no transparent water, and
level designers used water in levels as a way to block VIS, because areas
in water couldn't see area's out of water and vice-versa. They would then
be two separate VIS area's. If your map is VIS'd for transparent water,
this will affect your r_speeds, no matter if you are using transparent
water or not. You will have to decide for yourself if you are going to
make your water transparent, but keep in mind that a lot of popular levels
are converted to transparent water after they hit the net, and could then
become a problem speed wise.
|
Multiplayer
Friendly: When making good multiplayer levels, keep in mind that
you as a level designer can influence how well your level will play, especially
over modem connections.
Processor lag is caused by poor level design, high r_speeds, and use of
too many different textures, or entities in a single area.
Net lag is caused by having too big an area where lots of action will
take place in view of lots of other action. If that action exceeds the
users bandwidth, chunks occur. (Don't confuse net lag with with latency
lag [high ping], however excessive Net lag can increase your latency while
in those big areas. It's bad enough fighting processor lag, throw in some
net lag, and you've got a slideshow.)
|
- Working
Neat: Try to keep all your brushes evenly lined up, it will
save you a lot of time searching for leaks and problems later on.
"Snap to Grid" will help a lot.
|
|
|