Left 4 Dead 2

Left 4 Dead 2

View Stats:
Nav flow Issue (SOLVED)
Hi! I'm having a Nav Error "Map is Unplayable" on a map I'm working on.
For context, it doesn't have a checkpoint door at the start (this is the first map of the campaign) The start area is marked as PLAYER_START and CHECKPOINT. The safe area is marked as CHECKPOINT.

The bots seems to have no problem following me from the start to end.

Here's what I get with nav_trouble_report (It pretty much selects my whole navmesh except the Safe areas. I have no idea what to do please help


Orphan check passed
Missing Battlefield check passed
Missing Finale check passed
Missing Checkpoint check found 316 areas
Overlap check passed
Corner-to-corner connection check passed
Climb links from stairs check passed
Connection to overlapping area check passed
Long horizontal connection check passed
Double connections check passed
Floating/interpenetrating world check found 1 areas
Areas with non-walkable connections check passed
Long vertical connection check passed
Short vertical one way connection check passed
Disconnected ladder check passed
Overlapping ladder check passed
Non-climbable ladder check passed
Tiny nav area check passed
Selected 317 trouble areas
Last edited by Iyvanne; Jan 29 @ 1:56am
< >
Showing 1-8 of 8 comments
Originally posted by Iyvanne:
The bots seems to have no problem following me from the start to end.
Bots can follow you as long as there is a working nav for them to navigate on. Nav flow is used by the director to track progress through the level, determine which direction infected should come from, determine threat locations to spawn tank or witch, etc. Bots will also teleport over gaps in the nav (they are more likely to teleport with broken nav).

You can try running nav_analyze and see if it identifies the checkpoints during that. So run that, then check the trouble report again. Then make sure you run nav_analyze when you are done building the nav, and if you modify the nav in the future, run nav_analyze after you change anything on a working nav layout.

If that doesn’t fix it, then I’d suggest the following steps.

First thing to know is nav flow is generated backwards. Meaning it starts at the End Checkpoint, then attempts to flow (trace a path) to the start checkpoint. So if the end checkpoint isn’t being identified it can’t start.

The trouble report is not the best way to figure out what is going wrong in this specific situation (because it may highlight the end checkpoint, even if it is not the problem). You need to look at the nav flow numbers in the End Checkpoint.

Turn on nav_edit 1, z_show_flow_distance 1, z_debug 1. Then look at the nav flow numbers. -9999/-9999 is broken. -9999/X (any number other then 9999) means that the director believes that nav is outside the playable area for the survivors. X/-9999 means it can track to the end checkpoint, but not the start checkpoint (so the most likely issues is there is a break in the nav between this location and the start area).

So if you are in the End Checkpoint area and the numbers are X/-9999, you know the end checkpoint has been properly identified.

So all the nav in the playable area (where survivors can get to) should be X/-9999 if it’s working and -9999/-9999 if it’s broken. Once the working nav connects all the way to the Start area (if it’s correctly identified), the nav numbers will switch to being X/X in the playable area.

Note just because you don’t have orphans, doesn’t mean that there aren’t holes in your nav. It’s possible the nav is fully connected through areas only the infected can navigate (according to the nav), and hence there isn’t a valid path for the flow (because there is a gap in the nav where the survivors have to walk).

Things that may be blocking the nav flow:
  • Missing chunks of nav is the most common (if you walk past a missing chunk of nav with bots, they will just teleport to the far side). It’s very common for the nav on stairs to break, or places where survivors have to jump up or down to not be connected correctly.
  • Nav that is blocked (set to block nav flow). If you find a nav mesh piece with a light blue square inside it, and the nav is broken on one side but working on the other, then you have to look at what is causing this in hammer (and probably set it to not block flow).
  • Special conditions (like a fall that the nav believes is too far to be safely navigated, even if the map is setup in such a way that survivors can fall that distance safely) can also cause the flow to not travel through an area.

Then follow the path from the END to the beginning while watching the nav flow numbers. Whenever you find nav along the path that becomes -9999/9999 you know you lost the flow and something needs to be fixed between that nav and the last nav with X/9999.

After you fix something, you can use nav_recompute_flow (it will probably keep popping up the error message, but it should go to a further point before it breaks).

If you make it all the way to the PLAYER_START area and that nav in the start area is X/9999, run nav_recompute_flow or nav_analyze again. Then if it's still messed up the start area is missing some entities, so it’s not being properly identified as the start area.

For the PLAYER_START area you can use an info_player_start, but that shouldn’t be necessary. You need to have 4 info_survivor_position.
Name: Give each one a unique name: survivorPos_intro_01, 2, 3, 4 is typical
Survivor Name: filled in for the survivors you are using: coach, ellis, nick, rochelle or Bill, Francis, Louis, Zoey (That’s how the official campaigns mark them).
You can have more elements to make an intro to the level, but they aren’t necessary for the nav to identify it.

Having 4 health kits and an ammo pile inside the marked nav area can also help (for both a player_start area and a checkpoint). As that helps it decide where the exact start and end should be.

The nav should be marked PLAYER_START and CHECKPOINT, and should extend out a bit (so the director doesn’t spawn infected too close to where the survivors start. You may want to mark areas further away as NO_MOBS

But other than that, a PLAYER_START area on the first map doesn’t require a lot of entities.
Last edited by AlwaysToast; Jan 28 @ 10:19am
Iyvanne Jan 28 @ 10:54am 
Originally posted by AlwaysToast:
Originally posted by Iyvanne:
The bots seems to have no problem following me from the start to end.
Bots can follow you as long as there is a working nav for them to navigate on. Nav flow is used by the director to track progress through the level, determine which direction infected should come from, determine threat locations to spawn tank or witch, etc. Bots will also teleport over gaps in the nav (they are more likely to teleport with broken nav).

You can try running nav_analyze and see if it identifies the checkpoints during that. So run that, then check the trouble report again. Then make sure you run nav_analyze when you are done building the nav, and if you modify the nav in the future, run nav_analyze after you change anything on a working nav layout.

If that doesn’t fix it, then I’d suggest the following steps.

First thing to know is nav flow is generated backwards. Meaning it starts at the End Checkpoint, then attempts to flow (trace a path) to the start checkpoint. So if the end checkpoint isn’t being identified it can’t start.

The trouble report is not the best way to figure out what is going wrong in this specific situation (because it may highlight the end checkpoint, even if it is not the problem). You need to look at the nav flow numbers in the End Checkpoint.

Turn on nav_edit 1, z_show_flow_distance 1, z_debug 1. Then look at the nav flow numbers. -9999/-9999 is broken. -9999/X (any number other then 9999) means that the director believes that nav is outside the playable area for the survivors. X/-9999 means it can track to the end checkpoint, but not the start checkpoint (so the most likely issues is there is a break in the nav between this location and the start area).

So if you are in the End Checkpoint area and the numbers are X/-9999, you know the end checkpoint has been properly identified.

So all the nav in the playable area (where survivors can get to) should be X/-9999 if it’s working and -9999/-9999 if it’s broken. Once the working nav connects all the way to the Start area (if it’s correctly identified), the nav numbers will switch to being X/X in the playable area.

Note just because you don’t have orphans, doesn’t mean that there aren’t holes in your nav. It’s possible the nav is fully connected through areas only the infected can navigate (according to the nav), and hence there isn’t a valid path for the flow (because there is a gap in the nav where the survivors have to walk).

Things that may be blocking the nav flow:
  • Missing chunks of nav is the most common (if you walk past a missing chunk of nav with bots, they will just teleport to the far side). It’s very common for the nav on stairs to break, or places where survivors have to jump up or down to not be connected correctly.
  • Nav that is blocked (set to block nav flow). If you find a nav mesh piece with a light blue square inside it, and the nav is broken on one side but working on the other, then you have to look at what is causing this in hammer (and probably set it to not block flow).
  • Special conditions (like a fall that the nav believes is too far to be safely navigated, even if the map is setup in such a way that survivors can fall that distance safely) can also cause the flow to not travel through an area.

Then follow the path from the END to the beginning while watching the nav flow numbers. Whenever you find nav along the path that becomes -9999/9999 you know you lost the flow and something needs to be fixed between that nav and the last nav with X/9999.

After you fix something, you can use nav_recompute_flow (it will probably keep popping up the error message, but it should go to a further point before it breaks).

If you make it all the way to the PLAYER_START area and that nav in the start area is X/9999, run nav_recompute_flow or nav_analyze again. Then if it's still messed up the start area is missing some entities, so it’s not being properly identified as the start area.

For the PLAYER_START area you can use an info_player_start, but that shouldn’t be necessary. You need to have 4 info_survivor_position.
Name: Give each one a unique name: survivorPos_intro_01, 2, 3, 4 is typical
Survivor Name: filled in for the survivors you are using: coach, ellis, nick, rochelle or Bill, Francis, Louis, Zoey (That’s how the official campaigns mark them).
You can have more elements to make an intro to the level, but they aren’t necessary for the nav to identify it.

Having 4 health kits and an ammo pile inside the marked nav area can also help (for both a player_start area and a checkpoint). As that helps it decide where the exact start and end should be.

The nav should be marked PLAYER_START and CHECKPOINT, and should extend out a bit (so the director doesn’t spawn infected too close to where the survivors start. You may want to mark areas further away as NO_MOBS

But other than that, a PLAYER_START area on the first map doesn’t require a lot of entities.

Thanks for the reply! I tried checking the flow of my nav. And it's giving me -9999/-9999 from the end checkpoint to the starting area. What does it mean? I marked everything inside the end checkpoint and I do have an ammo pile + 4 med kits.
Originally posted by Iyvanne:
I tried checking the flow of my nav. And it's giving me -9999/-9999 from the end checkpoint to the starting area.
I'm assuming it gives -9999/-9999 inside the end checkpoint as well.
Originally posted by Iyvanne:
What does it mean? I marked everything inside the end checkpoint and I do have an ammo pile + 4 med kits.
It means that the flow is broken. If the nav is -9999/-9999 inside the end checkpoint it isn’t being identified as the end checkpoint for some reason. The numbers are basically distance traveled towards the End Checkpoint, and distance traveled from the starting checkpoint.

If it can’t identify both checkpoints, then the numbers can’t start being generated. If it can't identify the start checkpoint, it may be mistaking the end checkpoint as the start (and therefor looking for an end checkpoint to start calculating the flow from, which doesn't exist).
Iyvanne Jan 28 @ 12:15pm 
Originally posted by AlwaysToast:
If it can’t identify both checkpoints, then the numbers can’t start being generated. If it can't identify the start checkpoint, it may be mistaking the end checkpoint as the start (and therefor looking for an end checkpoint to start calculating the flow from, which doesn't exist).




Any suggestions on how to troubleshoot/fix this?
Last edited by Iyvanne; Jan 28 @ 12:16pm
All the things I’ve mentioned.

There is another common problem which I forgot to mention (which can’t happen to a player_start area without a door, but happens all the time with checkpoints with doors, so look at the end checkpoint) is there is one or more pieces of nav past the checkpoint (meaning anywhere after the nav labled checkpoint starts), which are NOT labeled as checkpoint. So they can be inside the checkpoint area (like a table or shelf) or literally past it (like out the door on the far side or in a corner of the room).

Unlabeled nav past the checkpoint is a real problem because the nav thinks the end checkpoint is the start checkpoint, and the nav not labled checkpoint is the primary body of nav, and hence the end checkpoint is missing.

So the solution is to check around the end checkpoint very carefully with z_debug 1 on and look for any nav mesh that is not labled checkpoint. Then mark it as CHECKPOINT if you find it.

If you can’t find it still: The nuclear option is to make a brush with the trigger texture then make it a func_nav_attribute_region then click the flag for checkpoint, and place the brush over the entire checkpoint area (so everything it touches gets marked as checkpoint). If that fixes the problem, you can then just delete the func_nav_attribute_region (since all the nav is now marked you don’t need it anymore).
Last edited by AlwaysToast; Jan 28 @ 12:54pm
Iyvanne Jan 28 @ 10:26pm 
Originally posted by AlwaysToast:
All the things I’ve mentioned.
If you can’t find it still: The nuclear option is to make a brush with the trigger texture then make it a func_nav_attribute_region then click the flag for checkpoint, and place the brush over the entire checkpoint area (so everything it touches gets marked as checkpoint). If that fixes the problem, you can then just delete the func_nav_attribute_region (since all the nav is now marked you don’t need it anymore).

I tried this solution but it didn't work. My end checkpoint doesn't have any tables. Everything is on the ground (4 medkits, ammo, 4 guns). And the end checkpoint is pretty small so it's hard to miss nav chunks inside it. But I did do the func_nav_attribute_region and it still didn't work. I'm very close to giving up at this point lol
Sunny Moly Jan 28 @ 10:26pm 
Hukm i think this problem isnt that complicate. If you only have 1 map, you should mark the end point as Mark Finale. If the map run fine, then the nav isnt broken. The reason you have missing type error is likely that you dont have a infochange level with a new map name. Even if you dont have any map to transiton to, you need to put a fake map name in the info changelevel for the checkpoint nav to work
Iyvanne Jan 29 @ 12:18am 
Originally posted by Molyminer:
Hukm i think this problem isnt that complicate. If you only have 1 map, you should mark the end point as Mark Finale. If the map run fine, then the nav isnt broken. The reason you have missing type error is likely that you dont have a infochange level with a new map name. Even if you dont have any map to transiton to, you need to put a fake map name in the info changelevel for the checkpoint nav to work

This worked thanks!
< >
Showing 1-8 of 8 comments
Per page: 1530 50