When "notteam" is set to "1" only bots using the travel flag TFL_NOTTEAM1 will
use the entity or move through the area. When "bot_notteam" is set to "2" only
bots using the travel flag TFL_NOTTEAM2 will use the entity or move through the
area. These travel flags can be used in the game source code. Using this entity
key also only has effect if the mod the map is being made for supports team based
navigation for bots.
Testing AAS files
-----------------
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.
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.
Several map bugs can cause these 'solid' places in the AAS file.
- 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.
Allign 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 liquid to appear "solid" in the AAS file.
If you insist creating an AAS file for a map with bugs then the option
-forcesidesvisible can be used. This should fix all the problems with areas
showing up solid in the AAS file. However creating an AAS file with this
option takes a lot longer (often more than twice the normal compile time).
Clusters can be tested with the cvar bot_testclusters.
(type "/set bot_testclusters 1" on the console)
Jumppads can also be tested. Type the following on the Quake3 console
before loading your map:
/set bot_maxdebugpolys 1024
/set bot_visualizejumppads 1
/set bot_forcereachability 1
Now load the map. A counter will be shown and goes from 0% to 100%.
When the counter has reached 100% type /set bot_debug 1 and
/set r_debugSurface 2 on the console. For every jumppad the
default arch of travel (without using air control) will be visualized.
This only works if your .aas file is not optimized.
Error messages
--------------
Level designers should not worry too much about the following messages and/or warnings. The things reported are non fatal and won't cause any major problems. Some of the messages are just debug left overs.
"AAS_CheckArea: area %d face %d is flipped\n"
"AAS_CheckArea: area %d center is %f %f %f\n"
"AAS_CheckFaceWindingPlane: face %d winding plane unequal to face plane\r\n"
"AAS_CheckFaceWindingPlane: face %d winding reversed\r\n"
"area %d face %d flipped: front area %d, back area %d\n"
"area %d face %d is tiny\r\n"
"face %d and %d, same front and back area but flipped planes\r\n"
"AAS_SplitFace: tiny back face\r\n"
"AAS_SplitFace: tiny back face\r\n"
"AAS_SplitArea: front area without faces\n"
"AAS_SplitArea: back area without faces\n"
"gsubdiv: area %d has a tiny winding\r\n"
"AAS_TestSplitPlane: tried face plane as splitter\n"
"found %d epsilon faces trying to split area %d\r\n"
"AAS_SplitArea: front area without faces\n"
"AAS_GetFace: face %d had degenerate edge %d-%d\r\n"
When one of the following messages, errors or warnings is found then there is often something to be fixed.
"WARNING! HashVec: point %f %f %f outside valid range\n"
"This should never happen!\n"
While storing the AAS file some vertex was found outside the valid map bounds. When this happens some part of the map is likely to have badly aligned brushes or weird shaped curves. Clipping off or rebuilding complex shapes often helps.
"trigger_push start solid\n"
The trigger_push start point is in solid. Try making the trigger_push brush a bit larger or move it around a bit.
"trigger_push without target entity %s\n"
Could not find the target entity of the trigger_push with the target field %s.
"trigger_push without time\n"
trigger_push entity found without "time" field.
"trigger_multiple not in any jump pad area\n"
"trigger_push not in any jump pad area\n"
A trigger_push entity was found not to be in any valid jumppad area. (the message states trigger_multiple but it should have been trigger_push) Try making the trigger_push brush a bit larger or move it around a bit.
"trigger_multiple at %1.0f %1.0f %1.0f without target\n"
A trigger multiple was found at the given coordinates without a "target" field.
"target_teleporter without target\n"
A target_teleporter entity was found without target field.
"trigger_teleport at %1.0f %1.0f %1.0f without target\n"
A trigger_teleport entity was found at the given coordinates without "target" field.
"teleporter without misc_teleporter_dest (%s)\n"
The destination of a teleporter with target field %s could not be found.
"teleporter destination (%s) without origin\n"
A teleporter destination with the target name %s was found without origin field.
"teleporter destination (%s) in solid\n"
A teleporter destination with the targetname %s was found to be in solid.
"teleported into slime or lava at dest %s\n"
A player would be pushed into slime or lave at the teleporter destination with the targetname %s.
"trigger_multiple not in any area\n"
A teleporter trigger was found not to be in any valid area. Try moving the trigger around a bit.
"func_plat without model\n"
A func_plat entity was found without model field.
"func_plat with invalid model number\n"
A func_plat entity was found with the model field set to some invalid number.
"func_bobbing without model\n"
A func_bobbing entity was found without model field.
"func_bobbing with invalid model number\n"
A func_bobbing entity was found with the model field set to some invalid number.
"%s in solid at (%1.1f %1.1f %1.1f)\n"
An item with classname %s was found to be in solid at the given coordinates.
"empty aas link heap\n"
Some part of the map has some rather complex clipping. Reduce the geometric complexity or use clip brushes to reduce the clipping complexity.
"too many entities in BSP file\n"
There are too many entities in the bsp file.
"error opening %s\n"
Could not create a new AAS file. Hard disk might be full.
"error writing lump %s\n"
Could not write an AAS lump to file. Hard disk might be full.
Version Changes
---------------
2.1h (2001-03-28)
- fixed crash bug
2.1g (2001-02-18)
- added bot_notteam support on trigger_hurt entities
2.1f (2001-02-06)
- added some AAS statistics
- don't flood through faces when creating clusters
2.1e (2001-01-10)
- fix map size limitation
2.1d (2000-12-17)
- renamed "notteam" to "bot_notteam"
2.1c (2000-11-02)
- added fs_maxfallheight
- compiled with larger map size bounds
2.1b (2000-09-15)
- fixed cfg file loading
2.1 (2000-06-28)
- added model numbers for AREACONTENTS_MOVER
- added team based func_plat, func_bobbing, trigger_teleport and trigger_push reachabilities
2.0 (2000-06-21)
- fixed swim reachabilities
- fixed some reachabilities through cluster portals
- fixed jump reachabilities
- changed some start travel times
- added travel time settings to cfg
1.9 (2000-03-27)
- fixed func_bobbing entities with origin brush
1.8 (2000-01-14)
- fixed trigger_teleport bug.
- increased max map bounds to (-8192, -8192, -8192)-(8192, 8192, 8192)
- increased max points on winding
- made "HashVec: point x y z outside valid range" non-fatal
- fixed rocket jump reachabilities
- added force sides visible option
- increased simulated stack size for area traces
1.7 (1999-12-22)
- fixed ducked bounding box size
- fixed sv_maxsteepness being zero in aas configuration
- AAS files are now automatically stored in BSP file folder
- fixed crash bug caused by overflow of a simulated stack