Skip to content

Conversation

@sunzenshen
Copy link

@sunzenshen sunzenshen commented Dec 8, 2025

Tweak pathing flow for ntre_oilstain_ctg bot paths.

Leverages a new NavArea reservation system where bots can spread out which paths they take. This example NavMesh tweak to ntre_oilstain_ctg tweaks the NavAreas to encourage bots to spread out when crossing hallways.

Tweak pathing flow for ntre_oilstain_ctg bot paths.
@sunzenshen
Copy link
Author

sunzenshen commented Dec 8, 2025

Probably needs NeotokyoRebuild/neo#1535 to be merged in first to have significant effect, but navmeshes can be previewed by executing nav_edit 1 in the console

CC: @AdamTadeusz for previously generating the navmeshes.

The impetus for this PR is that when combined with NeotokyoRebuild/neo#1535, we can use the NavMesh generation process to influence the navigation path selection of bots. The map oilstain was chosen to demonstrate these navmesh tweaks, as it is a map with many long hallways. The pattern implemented with the NavAreas is intended to slightly encourage multiple bots to walk down one dedicated side of a hallway as opposed to walking in the middle of the hallway in a line.

For example, the hallway leading to the office goal point:

Screenshot 2025-12-08 002753

Or the hallway leading to the maintenance corner:

Screenshot 2025-12-08 002836

(Incidentally, the Areas around the box to the left and another in this hallway needed fixing as well.)

The end result ideally leads to better usage of space in hallways, as opposed to the prior behavior of following in a single file line:

image

It's also possible to encourage bots not to walk across more sparsely populated large NavAreas, by clustering multiple lanes of navmeshes around such open spaces:

Screenshot 2025-12-08 014000

Beyond tweaking the navmeshes around bottleneck areas, there were a couple disconnected navareas were manually connected to fix bot pathing issues between those areas.

For example, bots would never cross this doorway threshold because the NavAreas between had no connection until a nav_splice was executed between these points:

Screenshot 2025-12-08 002701

With demonstrated crossing:

image

Another added connection point is this squeeze point in front of this parked car:

Screenshot 2025-12-08 002729

(Admittedly to my observation, bots still prefer to hop over the hood of the car to pass by.)

There is also fix for an impassable area in the basement, as well as the aforementioned boxes leading to the maintenance corridor.


The difference is not visible from the diff, but I did capture a size comparison compared to the console log:

Screenshot 2025-12-08 002525

@DESTROYGIRL DESTROYGIRL removed the request for review from a team December 9, 2025 13:30
Turns out recon can jump that whole height.
@sunzenshen
Copy link
Author

Screenshot 2025-12-11 205325 Screenshot 2025-12-11 205540

Attached the platform with the trailer to hint to bots that they can jump over:

Screenshot 2025-12-11 205231

Reattached the jump up points on the trailer for Recon:
(We might need to adjust the max jump height costs for other classes but I consider that outside the scope of this PR)

Screenshot 2025-12-11 205201 Screenshot 2025-12-11 205219

Added a splice connection in a shortcut in basement:

Screenshot 2025-12-11 204300

Fixed some intersecting navareas with the maintenance corridor crates:

<img width="1372" height="829" alt="Screenshot 2025-12-11 204025" src="https://github.com/user-attachments/assets/535fa17c-63c6-4d13-83b8-6a75af99
Screenshot 2025-12-11 204007
559b" />
Screenshot 2025-12-11 203956

Attempted to discourage bots from running into some physics props:

Screenshot 2025-12-11 203340 Screenshot 2025-12-11 203817

Decided to go for a diagonal connecting pattern for corners, with the hope that bots will cut corners when pathing:

@sunzenshen sunzenshen requested review from a team December 26, 2025 06:30
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