The Quake III Arena BSP-to-AAS compiler, extended to compile .aat files: bot navigation for Trinity that teaches bots to travel with the grapple.
Run make with gcc. On Windows, build from an MSYS2 MinGW shell.
bspc -bsp2aas maps/mymap.bsp -forcesidesvisible -grapplereach -optimize -output out
This writes out/mymap.aat. The map can also be read straight from its pk3:
bspc -bsp2aas mymap.pk3/maps/mymap.bsp -forcesidesvisible -grapplereach -optimize -output out
Proving grapple routes is slow: a small map takes under a minute, and a large one can take several hours. Without -grapplereach the compiler writes an ordinary .aas file.
Put the file in your map's pk3 as maps/mymap.aat, beside the map's .aas. Trinity loads maps/mymap.aat when it exists and uses the .aas otherwise. Other engines never look for .aat files, so the same pk3 works everywhere.
A .aat belongs to one build of a map. Compile it again whenever the .bsp changes.
Usage: bspc [-<switch> [-<switch> ...]]
Example 1: bspc -bsp2aas /quake3/baseq3/maps/mymap?.bsp
Example 2: bspc -bsp2aas /quake3/baseq3/pak0.pk3/maps/q3dm*.bsp
Switches:
bsp2aas <[pakfilter/]filter.bsp> = convert BSP to AAS
reach <filter.bsp> = compute reachability & clusters
cluster <filter.aas> = compute clusters
aasopt <filter.aas> = optimize aas file
aasinfo <filter.aas> = show AAS file info
output <output path> = set output path
threads <X> = set number of threads to X
cfg <filename> = use this cfg file
optimize = enable optimization
noverbose = disable verbose output
breadthfirst = breadth first bsp building
nobrushmerge = don't merge brushes
noliquids = don't write liquids to map
freetree = free the bsp tree
nocsg = disables brush chopping
forcesidesvisible = force all sides to be visible
grapplereach = calculate grapple reachabilities
grapplerecheck = re-verify stored reaches still deliver where they promise
-grapplerecheck flies every stored grapple route again and logs the result. It changes nothing in the output and adds to the compile time.
Built on TTimo/bspc, which carries the compiler from id Software's Quake III Arena source release.
This program is licensed under the GNU General Public License v2.0 or any later version. See LICENSE.