Skip to content

NavMesh Fixes For Transit#104

Open
sunzenshen wants to merge 1 commit intomasterfrom
navmesh-transit-20u
Open

NavMesh Fixes For Transit#104
sunzenshen wants to merge 1 commit intomasterfrom
navmesh-transit-20u

Conversation

@sunzenshen
Copy link
Contributor

@sunzenshen sunzenshen commented Feb 27, 2026

Automatically fixed some NavMesh issues using NeotokyoRebuild/neo#1695, though some manual edits were still needed.

Used a 20 unit GenerateStepSize value from:
NeotokyoRebuild/neo#1695

Also used the bot ladder climbing PR to verify access to the ladder:
NeotokyoRebuild/neo#1633

@sunzenshen
Copy link
Contributor Author

Why this PR is needed

One of the trains did not have any connections into it, and behind it on the maintenance side, such that bots could not access the ghost spawn inside at all:

Screenshot 2026-02-26 191741 Screenshot 2026-02-26 191753

Steps needed for fixes

First ran nav_generate.

After nav_generate finished, I needed to point at the one ladder in the map and run nav_build_ladder

Before:

Screenshot 2026-02-26 192029

After:

Screenshot 2026-02-26 192056

Also, one of the spawn points with stairs was broken after the nav_generate, so I needed to connect the NavAreas of that spawn area:

Before:

Screenshot 2026-02-26 192558

Known Issues

However, something about the stairs caused the bots to be able to climb up them despite the connected NavAreas, so it's possible that these stairs may need to be clipped:

Screenshot 2026-02-26 192857

This connection for the drop down from the broken vent railing area was missing:

Screenshot 2026-02-26 192135

However, despite making this connection manually, bots could not move through this opening:

Screenshot 2026-02-26 192218

I ended up disconnecting the connection for now. Perhaps we might need a change for how bots crouch, because I'm starting to suspect that bots do not current respect nav_crouch attributes of NavAreas.

Verification

Checked that NavAreas were generated using the reduced 20 unit GenerationStepSize:

Screenshot 2026-02-26 191936 Screenshot 2026-02-26 191925

Checked that bots could access both train cars:

Screenshot 2026-02-26 213243 Screenshot 2026-02-26 193044 Screenshot 2026-02-26 213031

(Also checked that bots can play a full match while accessing all possible ghost spawn locations. Also verified that they can now use the ladder with the ladder climbing branch cherry-pick)

Rainyan
Rainyan previously approved these changes Feb 28, 2026
Copy link
Collaborator

@Rainyan Rainyan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ended up disconnecting the connection for now. Perhaps we might need a change for how bots crouch, because I'm starting to suspect that bots do not current respect nav_crouch attributes of NavAreas.

With NeotokyoRebuild/neo#1749 merged, I tested connecting this again, and while it does work, there isn't enough room for non-recons to make the drop so they just kind of sit there. So it's probably best left unconnected for now.

Might be nice to have class-specific attributes that can be added with console commands like nav_recon/nav_assault/nav_support, not only for clearance but for making class specific routings, and better yet if the auto analyzer tested for clearance and applied these area flags accordingly (probably better than runtime raytrace in terms of perf). But out of scope here anyways.

@Rainyan Rainyan requested a review from a team February 28, 2026 21:46
@sunzenshen
Copy link
Contributor Author

Might be nice to have class-specific attributes that can be added with console commands like nav_recon/nav_assault/nav_support, not only for clearance but for making class specific routings, and better yet if the auto analyzer tested for clearance and applied these area flags accordingly (probably better than runtime raytrace in terms of perf). But out of scope here anyways.

Based on this comment, maybe we should keep to the same amount of NavMesh Attributes:

NAV_MESH_NAV_BLOCKER	= 0x80000000				// area is blocked by nav blocker ( Alas, needed to hijack a bit in the attributes to get within a cache line [7/24/2008 tom])

But there might be an opportunity to hijack some existing Attributes. I doubt we will need NAV_MESH_NO_HOSTAGES for example.

@Rainyan
Copy link
Collaborator

Rainyan commented Feb 28, 2026

Might be nice to have class-specific attributes that can be added with console commands like nav_recon/nav_assault/nav_support, not only for clearance but for making class specific routings, and better yet if the auto analyzer tested for clearance and applied these area flags accordingly (probably better than runtime raytrace in terms of perf). But out of scope here anyways.

Based on this comment, maybe we should keep to the same amount of NavMesh Attributes:

NAV_MESH_NAV_BLOCKER	= 0x80000000				// area is blocked by nav blocker ( Alas, needed to hijack a bit in the attributes to get within a cache line [7/24/2008 tom])

But there might be an opportunity to hijack some existing Attributes. I doubt we will need NAV_MESH_NO_HOSTAGES for example.

Ah, that's unfortunate. Although if we really need the features ultimately, then it might be worth profiling before/after since the comment is from 2008 after all. But indeed, probably better to start by repurposing the existing unused attributes then.

@sunzenshen sunzenshen mentioned this pull request Feb 28, 2026
@sunzenshen
Copy link
Contributor Author

sunzenshen commented Feb 28, 2026

Manually splicing the stairs results in much smoother traversal especially with stair clips from #101

bot-transit-clipped-and-spliced-stairs.mp4
bot-transit-clipped-and-spliced-stairs-overview.mp4
Screenshot 2026-02-28 155211 Screenshot 2026-02-28 155224

Also I accidentally forgot the backroom stairs so I fixed that as well 😅

Screenshot 2026-02-28 160411 Screenshot 2026-02-28 160422 Screenshot 2026-02-28 161000

Bots can be ordered around in peace after executing this script:

sv_neo_bot_cmdr_enable 1;
sv_neo_bot_cmdr_debug_pause_uncommanded 1;
neo_ctg_round_timelimit 99;

@Rainyan Rainyan self-requested a review February 28, 2026 23:50
@Rainyan Rainyan requested a review from a team February 28, 2026 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants