Repository navigation
Look along the ledge for a drop-down's clear column - #2164
Closed
sunzenshen wants to merge 1 commit into
Closed
sunzenshen wants to merge 1 commit into
sunzenshen wants to merge 1 commit into
Conversation
sunzenshen
force-pushed
the
bot-drop-search-along-ledge
branch
2 times, most recently
from
September 26, 2026 12:04
4d32adc to
30985fc
Compare
sunzenshen
added a commit
to sunzenshen/neo
that referenced
this pull request
Oct 1, 2026
… into the research branch
This was referenced Oct 2, 2026
Path::PostProcess turns a walk link onto a lower area into a DROP_DOWN by pushing the crossing point forward, 10 u at a time up to two hull widths, until a hull traced straight down is clear. It only looks straight ahead of where the path crosses the edge. When the opening below is off to one side of that line - a hatch in a floor, a gap in a railing - no column is clear, and the loop still sets the drop point at the last, unchecked position: two hull widths out, on solid floor. The bot walks there, stands on the floor it was meant to fall through, and presses into whatever is beyond until the stuck monitor fires; the next path puts it back. When the straight search finds nothing, try the same search at offsets along the portal (either side of the crossing, nearest first, staying inside the portal) and cross at the first clear column. Paths whose straight search succeeds are unchanged, and if no column is clear anywhere along the portal the old behavior stands. Found on ntre_sentinel_jgr: each freight elevator's roof has a 51 x 55 u hatch, and the roof's drop link into the shaft runs the whole 100 u edge. Measured there (the shipped mesh at the time, bot matches, paired per spawn pin, 36 pairs): stuck events at the hatches 44.9 -> 2.1 a match, OnStuck x0.55 [0.42, 0.71], 26 down / 10 up. Across ten maps on the current meshes (apparatus, dusk, ghost, oilstain, sentinel_ctg, skyline, terminal, transit, yard, and sentinel_jgr with its hatches since fixed in the mesh; 258 pairs over two batches) the search fires where drops cross off-axis openings and nothing gets worse: OnStuck x0.87 [0.78, 0.98], kills x1.01 [0.99, 1.04], every match clean. Stuck events at the drops it changed stay near zero in both arms, so that cross-map figure is mostly noise from unrelated heavy tails; the fix's measured effect is the hatch case above.
sunzenshen
force-pushed
the
bot-drop-search-along-ledge
branch
from
October 3, 2026 17:50
30985fc to
8dcd444
Compare
Contributor
Author
|
Can be solved with a navmesh edit. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Look along the ledge for a drop-down's clear column
Background
This came out of the navmesh work on
ntre_sentinel_jgr. Bots whose path dropped through a roof hatch walked past the hatch onto solid floor, pressed into what lay beyond until the stuck monitor fired, and then got the same path again: 44.9 stuck events a match at the hatch. The same happens wherever a drop's opening is off to one side of where a path crosses the ledge, such as a gap in a railing, so it is fixed in the path code rather than in one mesh.Path::PostProcessturns a walk link onto a lower area into aDROP_DOWN. It does this by pushing the crossing point forward (10 u steps, up to two hull widths) until a hull traced straight down is clear.It only looks straight ahead of where the path crosses the edge. When the opening below is off to one side of that line (a hatch in a floor, a gap in a railing), no column is clear. The loop still sets the drop point at the last, unchecked position: two hull widths out, on solid floor. The bot walks there, stands on the floor it was meant to fall through, and presses into whatever is beyond until the stuck monitor fires; the next path puts it back.
When the straight search finds nothing, the same search is now tried at offsets along the portal: either side of the crossing, nearest first, staying inside the portal. The path crosses at the first clear column. Paths whose straight search succeeds are unchanged. One file,
NextBotPath.cpp, +42 inside#ifdef NEO.Dependencies and status
Needs (code PRs this one depends on):
Helped by:
Pending before review:
ntre_sentinel_jgrmesh (so far measured as a research patch).Navmesh PRs that rely on this
None of the open navmesh PRs needs this: its case, the roof hatch, is on
ntre_sentinel_jgr, whose navmesh PR NeotokyoRebuild/neoAssets#165 fixes the hatch in the mesh itself. It is still worth merging on its own: the defect can happen at any drop on any map, and the 10-map check below shows no harm.Evidence
ntre_sentinel_jgrroof hatch, on a mesh whose drop link spans the whole edge. Stuck events at the hatch went from 44.9 to 2.1 a match, and bot stuck events overall x0.55 [0.42, 0.71] over 36 paired matches.Risk
Low. Only paths whose straight-ahead drop search already failed are affected. If no column along the portal is clear either, behavior is as before.
Toolchain
Linked Issues