cod-sdk/Tools/docs/Compiling Maps.htm

346 lines
16 KiB
HTML
Raw Permalink Normal View History

2003-11-21 00:00:00 +00:00
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<title>Compiling</title>
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
/* Page Definitions */
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=EN-US style='text-justify-trim:punctuation'>
<div class=Section1>
<p class=MsoNormal style='text-autospace:none'><b><u><span style='font-family:
Arial'>Compiling</span></u></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>An
example map and compile batch file are included with these tools and can be
found in \game\main\maps.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>The
stages of a compile are as follows:</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>q3map mapname.map</span></i></p>
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
style='font-family:Arial'>builds the bsp</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>q3map -vis mapname.bsp</span></i></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> options
are <i>q3map -vis </i>or <i>q3map -vis -fast</i></span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span></i><span style='font-family:Arial'>vis info is used
for the server sending entity info to the client so multiplayer maps should use
<EFBFBD>vis but single player maps can just use <20>vis <20>fast</span></p>
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
style='font-family:Arial'>will not work if the map leaked</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>flare mapname.bsp</span></i></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> generates
the lightmaps</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> will
not work if the map leaked</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>CoDSP.exe +set r_vc_compile 2 +devmap mapname</span></i></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> generates
the vc log (see VClog section below)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>CoDSP.exe +set g_connectpaths 2 +devmap mapname</span></i></p>
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
style='font-family:Arial'>generates the path data for the AI (opens the game
and then closes it automatically after compiling)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><u><span style='font-family:
Arial'>Optional</span></u></b></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>q3map -info mapname.bsp</span></i></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> displays
data size information about your bsp</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>&nbsp;</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><u><span style='font-family:
Arial'>Flare</span></u></b></p>
<p class=MsoNormal style='text-autospace:none'><i><span style='font-family:
Arial'>flare args mapname.bsp</span></i></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where
args is 0 or more of the following</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-Verbose<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Turns
on verbose prints</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-Fast<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Use fast presets for several options</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-Extra<72><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Use
high-quality presets for several options</span></p>
<p class=MsoNormal style='margin-left:2.0in;text-indent:-2.0in;text-autospace:
none'><span style='font-family:Arial'>-MaxPolys<79><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Maximum
number of polys to use during light compile (can be used to increase the
default for larger maps)</span></p>
<p class=MsoNormal style='margin-left:1.5in;text-indent:-1.5in;text-autospace:
none'><span style='font-family:Arial'>-MaxVerts<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Maximum
number of vertices to use during light compile (can be used to increase the
default for larger maps)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-MaxBrushes<65><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Maximum number of brushes to use during bsp solid check</span></p>
<p class=MsoNormal style='margin-left:1.5in;text-indent:-1.5in;text-autospace:
none'><span style='font-family:Arial'>-MaxOccluders<72><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Maximum
number of occluders to use during light compile (can be used to increase the
default for larger maps)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-Visual<61><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Activates visual preview / debugging</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-DiffuseSun<75><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Forces diffuse sunlighting</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-NoDiffuseSun<75><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Doesn't do diffuse sunlighting</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-FastDiffuseSun<75><6E><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SampleDiffuseSun uses a single vertical sky trace</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-ExtraDiffuseSun<75><6E><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SampleDiffuseSun uses multiple sky traces</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-ModelShadow<6F><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Allows model surfaces to cast shadows</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-NoModelShadow<6F><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Prevents model surfaces from casting shadows</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-ModelAlphaShadow<6F><77><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Allows transparent model surfaces to cast shadows</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-NoModelAlphaShadow<6F>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Prevents transparent model surfaces from casting shadows</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-SunDiffuseSamples<65><73>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Hemicube edge size for SampleDiffuseSun (3N^2 samples) (Lower numbers
will cause extra ghost shadows from the diffuse sun. 6-10, even values are
recommended.)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>-DumpOptions<6E><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Displays current settings of most parameters</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>You
can see all the options to flare by running the program with no arguments.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><u><span style='font-family:
Arial'>VClog</span></u></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>&nbsp;</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>What is a VClog?</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Entites
(models, players, AI) in a map are lit by the lights in the map. In complex
maps (as opposed to small test maps) calculating which lights affect which
entities takes a lot of work. To prevent the engine from having to do this in
realtime, this information can be written into the bsp using a mapname.vclog
file. If a map doesn<73>t have a VClog, you will experience harsh hitches when
entering new areas where entities are now visible. These hitches feel like
texture thrashing. VClogs are needed for both single player and multiplayer
maps. Anywhere our example says <20>CoDSP.exe<78>, just replace it with <20>CoDMP.exe<78>
for multiplayer and the same process applies.</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>&nbsp;</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>&nbsp;</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>Creating a VClog </span></b><span style='font-family:Arial'>(visibility
cache data)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>This
log can be made once and forgotten about until you make a significant change to
geometry in your map which would allow models, players, or AI to exist in new
areas; it will still be valid after almost any tweak to geometry, including
those that&nbsp;alter shadows.&nbsp;The typical way to make this log is to set
&quot;r_vc_showlog 1&quot;, and then to run around playing &quot;pacman&quot;
trying to get rid of the green dots in areas where you expect players to
go.&nbsp;You still find visibility data when &quot;r_vc_showlog&quot; is 0, and
it runs a little faster, but it is easy to miss spots.&nbsp;&quot;pacman&quot;
mode only works if you have a viewmodel on-screen.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>You
must set <20>r_vc_makelog 1<> or <20>r_vc_makelog 2<> to enable making a log. A value
of 1 creates a brand new log, a value of 2 appends to an existing
log.&nbsp;&quot;r_vc_showlog&quot; is not all that useful with
&quot;r_vc_makelog 2&quot;, since any dots that were already in the old logfile
will never go away, no matter how many times you go near them.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>CoDSP.exe
+set r_graymap 1 +set r_vc_makelog 1 +set r_vc_showlog 1 +devmap mapname</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>You
can change the amount of dots you see in the map by changing the <20>r_vc_showlog<6F>
value.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Four
is a good value to use, but any of these are valid: 2, 4, 6, 8, 10, 12, 16</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>You
can bind a key to increase/decrease the value.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Example:</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>bind
F3 &quot;toggle r_vc_showlog 2 4 6 8 12 16&quot;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>bind
F4 &quot;toggle r_vc_showlog 16 12 8 6 4 2&quot;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>You
must NOT set &quot;dedicated&quot;, or you will not get the compiled visiblity
cache data.&nbsp;Setting r_graymap is not necessary but saves a little time by
not loading textures.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>Compiling a VClog</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Once
your map is basically geometry complete, make &quot;mapname.vclog&quot; by
going around your map with &quot;r_vc_makelog 1&quot;. From then on, you need
only compile the map with &quot;+set r_vc_compile 2&quot; as follows.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>CoDSP.exe
+set r_vc_compile 2 +devmap mapname</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>With
r_vc_compile 2 the game quits after compiling visibility cache data; 1 compiles
and finishes loading.&nbsp;Also, if you do r_vc_compile 1, then the compiled
visibility will not be available until you do a vid_restart or load the map
again.&nbsp;A map_restart or loaded savegame is not sufficient. Additionally,
CoDSP.exe is hardcoded to look for the .vclog file in the maps directory and
the CoDMP.exe is hardcoded to look in maps/mp/. Basically, the .vclog MUST be
in the same place as the .bsp.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-family:
Arial'>Confirming a VClog </span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>To
confirm whether or not the VClog has been compiled into a .bsp use the
<EFBFBD>r_vc_stats<EFBFBD> console command to see the performance statistics for the light
visibility cache. Load the .bsp in the game. Once the map has loaded, pull down
the console and type <20>r_vc_stats<74>. The VClog has been successfully compiled
into the .bsp if the <20>entries used<65> number is greater than <20>entries filled in
at runtime<6D>.</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Example:</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>light
visibility cache performance:</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>74606
entries used (28.5%)</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>21
max associativity</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>0
entries flushed</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>1216
entries filled in at runtime instead of read from disk</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>Note:</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-family:Arial'>If
the <20>entries filled in at runtime<6D> number is the same as the <20>entries used<65>
number, then the VClog has NOT been compiled into the .bsp.</span></p>
</div>
</body>
</html>