netradiant-custom/docs/mbspc.html
2021-05-24 20:23:09 +03:00

248 lines
9.0 KiB
HTML

<!doctype html public "-//w3c//dtd html 3.2//en">
<html>
<head>
<title></title>
<meta name="keywords" content="">
<meta name="Generator" content="HTMLpad">
</head>
<body bgcolor="e2e2e2" text="000000" link="0000ff" vlink="800080" alink="ff0000">
<font face="Arial,Helvetica,sans-serif" size="4">
<center>
<h2>MBSPC -- BSP converter and editing utility</h2>
<h3>Copyright (C) 2004-2012 Laszlo Menczel (laszlo.menczel@gmail.com)</h3>
</center>
<p>
This program is distributed under the terms of the GNU General Public
License version 2 as published by the Free Software Foundation. A copy of
it is in the file GPL.TXT. This program comes with ABSOLUTELY NO WARRANTY.
<h3>Introduction</h3>
<p>
This program is based on version 2.1 of the BSPC utility (part of the
toolkit created for the Quake series of games). Originally it used to be
a MAP to BSP converter. For Quake 3 it is mainly used for the creation of AAS
file from BSP files. An AAS file is a file containing area information
used by the Quake III Arena bots to navigate and understand a map.
<p>
MBSPC is a modified (enhanced) version of this utility. I have (re)added
some functions that were either not present originally or were removed
from this version for some reason. So you can also do the following tricks
with MBSPC:
<ul>
<li>
convert BSP files to editable MAP format
</li>
<li>
extract the entity list from a BSP file to a text file (new)
</li>
<li>
create a list of the textures used in a BSP file (new, only for Q3A at present)
</li>
</ul>
<p>
When MBSPC is used for converting BSP files to MAP files, the correct
texture name is written for every brush side. However, correct texture alignment
info (shift, scale, rotation) is not written to the MAP file, when converting Quake 3 maps.
As for Quake 1/2, SiN and Half-Life, alignment info is half right for regular map format (-bsp2map)
and is correct, when using Valve 220 one (-bsp2map220).
<p>
<h3>Usage</h3>
<pre>
<tt>
bspc -option [ -option ... ] input-file
</tt>
</pre>
<p>
At least one option must be given to specify the desired action. The
rest of the option(s) within the brackets are optional. Examples:
<pre>
<tt>
mbspc -bsp2aas d:\quake3\baseq3\maps\mymap?.bsp
mbspc -bsp2aas d:\quake3\baseq3\pak0.pk3\maps/q3dm*.bsp
mbspc -bsp2map -output d:\tmp d:\quake3\baseq3\maps\q3dm1.bsp
</tt>
</pre>
<h3>Options</h3>
The first section in the table contains obligatory options, i.e. one of
them must be specified so that MBSPC knows what to do. The second section
contains optional parameters that modify the way the action is done. The
third section contains options that are useful only if you want to use
MBSPC for compiling a BSP from a MAP. These are kind of obsolete because for
Quake 1/2/3 there are now better compilers (e.g. q3map2), so MBSPC should
not be used for this purpose.
<p>
List of options recognized by MBSPC:
<pre>
<tt>
option argument explanation output
---------------------------------------------------------------------------------------
bsp2map file.bsp create MAP from BSP file.map
bsp2map220 file.bsp create Valve 220 MAP from BSP file.map
bsp2aas file.bsp create AAS from BSP file.aas
reach file.bsp compute reachability and clusters file.aas
cluster file.aas compute clusters file.aas
aasopt file.aas optimize aas file file.aas
aasinfo file.aas show AAS file info
entlist file.bsp extract entity list file.ent
texinfo file.bsp extract texture list file.txi
---------------------------------------------------------------------------------------
output output-path set output path
threads N set number of threads to N
cfg file use configuration data in 'file'
noverbose disable verbose output
---------------------------------------------------------------------------------------
optimize enable optimization
breadthfirst breadth first bsp building
capsule use spherical collision model
nobrushmerge don't merge brushes
freetree free the bsp tree
nocsg disables brush chopping
noliquids don't write liquids to map
forcesidesvisible force all sides to be visible
grapplereach calculate grapple reachabilities
</tt>
</pre>
<p>
Several metacharacter may be used in the paths of the input file:
<pre>
<tt>
* match any string of zero or more characters
? match any single character
[abc...] match any of the enclosed characters; a hyphen can
be used to specify a range (e.g. a-z, A-Z, 0-9)
</tt>
</pre>
<p>
.pk3 files are accessed as if they are normal folders. For instance
use "d:\quake3\baseq3\pak0.pk3\maps/q3dm1.bsp" to access the
map q3dm1.bsp from the pak0.pk3 file.
<p>
Multiple files may be listed after the switches bsp2map, bsp2aas, reach,
cluster and aasopt.
<p>
If a BSP file is being converted to an AAS file and no output path
is entered on the command-line then the AAS file will automatically
be stored in the same folder as the BSP file. However if the BSP file
was stored in a .pk3 file then the AAS file will be stored in a folder
with the name 'maps' outside the .pk3 file.
<h3>How updating the entity lump affects the AAS file?</h3>
<p>
If an AAS file is already available for a BSP file and you ONLY change
the entities inside this BSP file then you only have to recalculate the reachabilities.
This way you can move items, platforms etc. around without the need to
recalculate the whole AAS file which can save quite some compile time.
You can recalculate the reachabilities as follows:
<pre>
<tt>
bspc -reach file.bsp
</tt>
</pre>
<p>
where 'file.bsp' is the updated BSP file. 'file.aas' must exist and must
be in the same folder as 'file.bsp' or in the output folder specified with
the '-output' option.
<p>
<b>Note:</b> the option '-reach' does not work on optimized '.AAS' files.
<p>
Keep in mind that as soon as ANY geometry in the map changes the whole
AAS file HAS to be recalculated in order to play with bots.
<h3>Testing AAS files</h3>
<p>
One of the easiest ways to test the AAS file is to load the map in
Quake3 in teamplay mode (type /set g_gametype 3 on the console before
loading the map). Enter a team and add a bot to your team. Use the
team order menu (by default bound to the key F3) to command the bot
to follow you. Walk around the map and see if the bot is able to
follow you everywhere.
<p>
Map bugs can sometimes cause certain places in the map to show up
'solid' in the AAS file. The bots cannot travel through these 'solid'
areas. To test for these 'solid' places set the cvar bot_testsolid
to 1 on the console. (type /set bot_testsolid 1) The map has to be
started with devmap instead of map before the cvar bot_testsolid can
be set. When the cvar is set to 1 then either "empty area" or
"SOLID area" will be printed on the screen while traveling through a map.
<p>
Several map bugs can cause these 'solid' places in the AAS file.
<pre>
<tt>
- Sometimes microscopic brushes are left over after a brush CSG. Search
for such brushes in the problem area and delete them.
- Tiny brush faces (not curves) can also cause problems. Due to vertex
snapping in the q3map tool those tiny brush faces can be snapped out
of existence. Such faces will not show up in Quake3 and you'll see
tiny peek holes or slits where you can view through the geometry.
Align vertexes of and edges of adjacent brushes to remove and avoid
such tiny faces. Placing a clip brush in front of the face that is
snapped out of existence will also remove the 'solid' area but ofcourse
it's much better to remove the peek holes and slits.
- Another cause could be a brush with a collapsed side. Check how many
sides a brush has and how many sides actually have a surface. Rebuild
brushes with collapsed sides.
- All faces contained within liquid brushes using a shader without
"surfaceparm trans" set will be removed. Those contained surfaces will
not be visible and can cause the lava to appear "solid" in the aas file.
</tt>
</pre>
<p>
Clusters can be tested with the cvar bot_testclusters.
(type "/set bot_testclusters 1" on the console)
<p>
Jumppads can also be tested. Type the following on the Quake3 console
before loading your map:
<pre>
<tt>
/set bot_maxdebugpolys 1024
/set bot_visualizejumppads 1
/set bot_forcereachability 1
</tt>
</pre>
<p>
Now load the map. A counter will be shown and goes from 0% to 100%.
When the counter has reached 100% type /set r_debugSurface 2 on the
console. For every jumppad the default arch of travel (without using
air control) will be visualized.
</font>
</body>
</html>