Introduction
to R-Speeds
The expression "r_speeds" is short for "rendering speeds".
Essentially, it is a measure of how much is being rendered (drawn) when
you are in any given area in your map. It is important to be aware of
the r_speeds in your map because they directly effect the framerate
and overall performance of the map on players' computers. What r_speeds
are acceptable depends on the game engine and the typical system players
of the game have. R_speeds include both wpoly readings-normal map brushes
and faces-and epoly readings-3D models like player models, item models,
etc. When people talk about r_speeds they are generally referring to
the former, as wpolies are usually where you run into trouble.
To
check your r_speeds you need the following commands enabled in the console:
developer
1
r_speeds 1
When enabled,
you will see a quickly scrolling readout in the upper left hand corner
of your screen. You will also notice that this readout may change drastically
as you move about your map. This is because, depending on what direction
you are facing and the layout of your map, different parts and ammounts
of your map are drawn from different spots in your map.
When you
compile your map, this is what the VIS tool does- it determines what
parts of the map need to be drawn from any given area in the map. Think
of it like this- if you are walking around in your map, the VIS determines
what areas of the map should be drawn and has the game/video card draw
only those areas (VIS tends to draw more than just what you can see,
and you sometimes need to make blockers more pronounced to "convince"
it to stop drawing around them). If not for VIS, your card would have
to draw the entire map all the time, which would be quite a burden!
This is
where "VIS Blockers" come in. This can be a hard term to explain;
what it really means is anything that prevents you from seeing from
one "area" of your map into another area. For example, if
you had two large, highly detailed rooms, you would not want to have
a direct line of site between them-were that the case, both would have
to be drawn at once, and your r_speeds would skyrocket! VIS blockers
often take the form of curvy corridors, or corridors that split around
a central wall and meet again on the other side (see pics below). Here
are a couple basic examples of how you might connect two rooms but still
block the VIS from drawing both:
VIS blockers
are the primary way you have to control your r_speeds, and can effect
the possible layout of a map. While there are many other tweaks for
r_speeds, they are just that- tweaks. If your map is not constructed
with proper VIS blockers, your r_speeds will be horrendous. Cutting
a few polies here and there by tweaking won't help if your card is drawing
half the map!
What are
acceptable r_speeds? There is considerable debate about this. When Half-Life
first came out, 600 wpoly was the recommended maximum. Because most
people have better computers than 3 years ago, 800 is probably a reasonable
maximum now, perhaps with a few spots that peak higher (like in the
corners of larger areas). 1000 is definitely getting a bit too high.
Note that these are the maximums we are talking about; most parts of
your map should probably average 400-500.
Also remember
that when your map is actually being played online the player models,
gunfire, explosions, etc. will also be draining the players' video cards
and resources. Thus, it's best to keep the r_speeds are low as you can
so that players will get a smooth game. Some mappers suggest that 1000+
r_speeds are acceptable, but finding a balance between the game's limitations
and your own aspirations is part of the true art of mapping. The best
mappers can make maps that are not only beautiful and detailed, but
which have excellent r_speeds and gameplay as well.
When testing
your map's r_speeds, you should walk all over your map, looking around
and keeping an eye on the readings. For example, test that there are
not angles of view where they peak very high because the VIS can 'see'
past an intended VIS blocker. Generally the highest speeds will be in
the corners of larger areas, so you will probably want to check those
spots first.
A few things
to know and remember about VIS:
*Entities do not block VIS-ie walls that are func_walls don't cut it,
nor do func_doors, etc. They will be 'seen through' by VIS.
*VIS will see through even the slightest cracks, such as a space of
1 pixel between a wall and the ceiling.
*Sky brushes (brushes covered in the texture named "SKY")
will block VIS as well (very important in some outdoor maps)
*If you run VIS with the -fast parameter, the readings will not be accurate,
and will be much higher. Only use -fast for testing other things in
quick compiles, never for releases and never to test your r_speeds.
For your final compiles, always use the -full parameter, which will
do a more accurate VISing than the normal VIS.