Navigation Meshes (L4D)
Template:Otherlang2 Left 4 Dead uses the navigation mesh to spawn infected. The director uses the Navigation Mesh when deciding where to spawn infected as well as other factors such as light intensity and line of site. By altering the mesh, it is possible to change the type of infected spawning (such as hospital patients and so on) and the density of their spawn.

NOTE: This article was written with experimental information and may not be 100% accurate. This article also assumes that you have read and understood the Navigation Meshes article.
Marking
Marking is as important in Left 4 Dead than it is in Counterstrike. While in counterstrike it affects how bots behave, in Left 4 Dead it both controls how they behave and how they spawn. By marking an area with certain attributes certain spawning behaviours can be created. Marking is the same as in Counterstrike, except with extra attributes, such as:
Available attributes for marking areas in Navigation Mesh editing mode.
Attribute | Description |
---|---|
BATTLEFIELD | Designates a region where a planned crescendo event will play out. Infected spawning, except in Versus modes, will halt so long Survivors reside in it. Once the event starts, Mobs will spawn and swarm dynamically only inside this area; Infected spawning comes to a halt if Survivors manage to escape the region.
This should be applied to a large region of the map; capable of containing a |
BATTLESTATION | Indicates a strong defensive area for a panic event, usually next to supplies/weapons. Intended to be used only in areas containing BATTLEFIELD or FINALE attribute.
In |
BREAKABLEWALL | No effect, not used by func_breakable either. |
CHECKPOINT | Designates the start/safe-room areas of the map. The round starts when a survivor leaves this area, and ends when the door is closed at the ending checkpoint with only the survivors inside. Infected are prohibited from spawning inside this area at all times. |
CLIFF | Doesn't do anything. Used only by the nav generation system to keep a note on nav square edges. |
CROUCH | Cut down the navigation time needed for this mesh, as bots need to crouch here. Automatically added by anav_analyze session.
In |
DONT_HIDE | Marks areas that are not suitable hiding spots. |
DOOR | Marks areas in which a door is located, perhaps just for flow calculations.aA Automatically added by the game during a nav_analyze. |
EMPTY | Prevents wandering infected from being populated in this location. Useful for places outside the survivors playable area, or any other place you do not want wandering/sleeping infected to spawn (e.g. rooftops & surfaces infected fall off of).![]() |
ESCAPE_ROUTE | Basic guideline path of map from start to finish by linking spawns/checkpoints to the ending checkpoint/finale. This path helps the game/AI to make proper decisions based on routes and level progression. Marking areas with this should be left strictly for thenav_analyze command.
|
FINALE | Indicates a finale area. Has mostly similar characteristics toBATTLESTATION attribute, although doesn't mean one can replace the other. LikeBATTLESTATION/code>, this should be used extensively across your finale area, and contain a BATTLESTATION within it.
|
LYINGDOWN![]() |
Causes zombies to lie down when not aroused by player. Found inc2m1_highway (Dark Carnival - Motel) along the dead body piles at the freeway ramp, the motel pool of dead bodies, and the stream itself when on the way to Whispering Oaks.
|
MOB_ONLY | Only Infected mobs are capable of accessing this area.
This can't be set manually, and is only set by entities such as func_breakable with |
NOT_CLEARABLE | Prevents an area from being "cleared" by Survivors, and allows infected to spawn here indefinitely; Cleared areas are not used by the Director to spawn infected, and NOT_CLEARABLE modifies such a rule.
Used in the outer-most areas survivors are able to attack or have line-of-sight to, but can't really see (e.g. through fog). A navigation mesh is 'cleared' once survivors view the area, and remove them of all spawned infected. |
NO_MERGE | Disallows this navigation mesh being merged with other meshes. Only used during navigation mesh generation; trying to apply this otherwise has no effect. |
NO_MOBS | Prevents infected mobs from spawning in this location. Commonly used to help mobs spawn further away from survivors and in more secluded areas of the map.
Also used to keep sources of mobs from appearing unnatural or odd, such as spawning on rooftops of certain buildings. A clever example of NO_MOBS is in the "drainage" level of the Death Toll campaign. It is used in the long pipes so that infected must spawn in the upper areas and run at you down the lengths of the pipe, rather than just around the corners. |
NOTHREAT![]() |
Navigation meshes with this attribute will not allowTHREAT to perform its action when it is applied on itself.
|
OBSCURED | Affects the amount and manner of which infected can spawn. This is a very important navigation attribute, use both wisely and with caution.
There are two primary uses: Indicates that the area is not viewable by survivors, and allows the director to spawn flowing, or large waves of mobs. It is often used in blocked alleyways and other areas that survivors cannot view. The director can still create effective mobs without the use of OBSCURED, but they will usually be further outside the survivor PVS. Allows infected to spawn even when there is line-of-sight to a survivor. Useful in unreachable areas with heavy fog, or areas with props that don't block line-of-sight in the engine, but still obscure the survivors view on all sides (e.g. bushes & leafy trees). Bot line-of-sight is also blocked to prevent omniscient behavior.![]() |
OBSTACLE_TOP | No effect, not related to func_nav_avoidance_obstacle.
Can be found in Todo: Lacking in info! We need to find out more somehow.
|
PLAYERCLIP | Marked automatically if a brush with the Player clip texture is on it. Automatically considered blocked by Survivors, but infected will still use it - great for creating zombie spawn closets or infected-only ladders. |
PLAYER_START | This attribute is to be applied in the exact nav mesh area(s) that the players spawn in, so flow computing will work as intended. Only necessary for the first level of each campaign. |
PRECISE | Defines an area that requires precision to navigate properly. Bots will avoid having random variations to their pathfinding while on areas marked with this. |
RESCUE_CLOSET | Marks off the location of rescue closets inside the level. Automatically assigned during anav_analyze session.
|
RESCUE_VEHICLE | Marks where survivors should go to during rescue. Used only in a Finale sequence and remains locked until "FinaleEscapeVehicleReadyForSurvivors" is fired. Area covered in RESCUE_VEHICLE should be the location of the rescue vehicle once it is in position. In some cases, a lead-in must be made to make the path onto the vehicle navigable (see 'No Mercy' finale). |
STOP_SCAN | Function unknown. Todo: Properly document
|
STAIRS | Bots treat areas up to 180(?) H/Us high as flat ground; Useful in disallowing Commons from climbing or making Survivor Bots not jump. ![]() ![]() nav_check_stairs can be useful for reupdating the nav during editing. |
TANK_ONLY | All bots, but Tanks will only navigate through this. Thus the flow won't compute through navigation meshes using this attribute.
This can't be set manually, and is only set by entities such as prop_dynamic to |
THREAT | Acts as spawn area suggestions for Boss Infected (Tank & wWtch). Only nav areas along theESCAPE_ROUTE path are candidates forTHREAT attribute. If the respective portion of the escape route path has already been reached,THREAT will be removed automatically. Requiresnav_analyze to appear naturally.
|
UNDERWATER | Added automatically when a navigation mesh is created / generated underwater. Unknown if this does anything.. |
Obsolete Attributes
Attributes below are defunct leftovers from , but still available to use. They will have no effect on if applied, so the description applies only to
.