Repository navigation
ntre_threadplate_ctg: navmesh rework - #161
Merged
sunzenshen merged 3 commits intoOct 14, 2026
Merged
Conversation
One file. Against master: 1159 -> 905 areas, 483,471 -> 320,362 bytes; areas no spawn reaches over any link 60 -> 34; areas a class can enter and not leave 7 -> 0; capture zone 2 now reachable by both teams (on master its marker resolves to a prop-top island). - Removed the basement pit no walking player leaves, the prop-top island under capture zone 2, and the floor under the stair landing near (1600, -1490), master's largest stuck spot. - Areas the engine blocks at round start are cut around the obstacle; hand edits where test bots got stuck (the stair landing crouch strip, the pillar near (2030, -1200), the drop 3198 -> 325). - Ladder 3 gets the top master's lacks; the redundant 15 u ladder 4 is dropped. The 9 areas of the crouch-duct pocket are AVOID. - Six links a railing pass left one way get their missing direction back. Cut: the 144 u climb 14 -> 769, the gap link 521 -> 223 past a pallet, and 2 / 3442 against a barrier post. - Deleted strips inside props the hull audit reads 92-100 % blocked: 1777, 1895, 1923, 1998, 2381, 2606, 3025. - Re-analyzed in game after the edits. Engine hull audit of this file: oneway 0, cut 0, area 0, check 0, keep 1 (3514 / 3520, the duct mouth behind a breakable grate, as on master), entity 2, sinks 0 for every class. 108-match A/B against master, same bot code (30 bots, 9 ghost pins x 6, 1 round, 8 wide): events a match 13.0 -> 2.8, stuck episodes 2.6 -> 0.7, no path 1.63 -> 0.46; all 108 matches ended clean.
Cut 3530 <-> 3529, the 28 u rise from the floor at (1135, -3568) into the vent duct (3522..3529, z 204). No class enters the duct there: a scripted walk of the link failed both ways for every class, and in 108 matches on neo master no bot reached 3529. The return link 3522 -> 3520 made the duct the only walking route to the duct's east mouth and ladder 3, so escorts heading there jumped at the mouth: 0.50 stuck events a match on the previous file, 0 with the cut (54 matches each, ghost pinned at the 9 spawns). The duct, its east mouth, ladder 3 and the crouch-duct pocket (21 areas) are now unreached from spawns: 55 in 12 against master's 60 in 15. Re-analyzed in game; navconnect gate PASS; hull audit as before (keep=1 entity=2, sinks 0).
Split 3384, the 25 u sliver along the raised strip's north edge above the stair 1593 at (437, -2275), at x 475 as master has it. The east piece keeps master's id 3385. As one 100 u area it put the waypoint after the stair's top at x 525, so bots leaving the 25 u wide stair headed for it diagonally, stepped off the stair's east side onto floor 51 and jumped at the strip's face: 0.69 stuck events a match there on the previous file, 0.16 with the split (108 matches each, ghost pinned at the 9 spawns; master's mesh 0.07). Over the whole map: stuck x1.17 [0.92, 1.49], episodes x1.03 [0.90, 1.17]. Re-analyzed in game; navconnect gate PASS; hull audit level_pairs 1290 (+ the split's pair), keep=1 entity=2, sinks 0.
sunzenshen
marked this pull request as ready for review
October 13, 2026 01:20
sunmachine
approved these changes
Oct 14, 2026
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.
ntre_threadplate_ctg: navmesh rework
One file,
neo/maps/nav/ntre_threadplate_ctg.nav.Dependencies and status
Needs: none. Measured on neo master
092203f36with no open PR (A/B below). The bot changes this mesh carries data for are in master now:NAV_MESH_AVOID(below). No spawn reaches the pocket now (the vent duct's mouth is cut, below), so the marks act only on a bot that is already inside.Helped by (measured better with it; the mesh does not wait on it):
At a glance
What changed
tabletop 21 u above the floor, which no link enters, so neither team can reach it. The island is removed and the marker
resolves to the floor.
way out for a walking player; on master every class can fall in and not leave.
obstacle or split, and standing room is carved around props where test bots stuck on them.
the ramp, so a standing bot's head met it before the crouch strip began. The floor before it and the ramp's first
20 u are split off and marked
CROUCH, so bots duck before the landing. Stuck events at the landing went 13.6 -> 0.4a match (27 matches a mesh, against the mesh before the edit).
so paths go around its corner instead of pressing into it (about 25 events over 5 matches there before the edit)
3385) stay split at x 475; merged into one, they put the next waypoint 50 u further east, and bots leaving the 25 u
wide stair's top stepped off its side and jumped at the strip's face (0.69 stuck events a match with the
merge, 0.16 with the split, 108 matches each)
down, and every class stood at the drop's goal on every try in a scripted walk of the link
to the duct mouth at z 305, gets the top master's ladder lacks, the pocket's missing return link is added, and the
15 u second ladder on the same brush, whose two areas already walk-connect, is dropped. The 9 areas are
AVOID, so pathsroute around them. Connecting the pocket without the mark was tested earlier and raised stuck
events by 10-20 % (216 matches). The only walking way to ladder 3's foot is the vent duct below, whose west mouth is
cut (next item), so no spawn reaches the pocket; the edits keep it consistent for a bot that is already inside.
gap, CROUCH) and its drop back are cut. No class enters there: a scripted walk of the link failed it both ways for
every class, and in the A/Bs no bot reached 3529 on either mesh. With the return link above, the duct led on to
ladder 3, and Recon escorts jumped at the mouth: 0.50 stuck events a match on the file without the cut, 0 with it.
The duct, its east mouth, ladder 3 and the pocket (21 areas) are now drop-only floor.
no link joins the two now
when read in game with a player hull; 521 still reaches 223 through 1628 and 778
when read in game with a player hull
(1700, -3012), and 195 -> 2505 near (1350, -1888); both stairs are still entered at their ends
over the silo's rounded edge; 1117 keeps its drop to 845 on the west side
floor stops a player's body like a rail; 1343 still joins the rest of the truck top
barrier on every lane, and a way round exists
is trimmed 7 u to clear it, which leaves a gap to 438; both still join through 303
puts a new area between each pair (3533 on 459's west side, 3534 at the ramp's foot), and each pair still joins
through it. Events at 459 on neo master: 2.11 a match on master, 0.41 on this mesh (A/B below).
(1137, -1258) (1895), a door frame strip near (1238, -1458), strips inside
two forklifts near (1312, -3212) and (688, -288), strips centered on two vehicle barrier posts near (1438, -238) and
(2012, -238), and a strip inside a monitor near (2284, -2412).
How it was tested
attackers, 171 -> 239 u
link reaches are drop-only floor, 21 of them the vent duct region above
trigger_hurt.BLOCKED_LINKS level_pairs=1290 oneway=0 keep=1 cut=0 area=0 check=0 dynamic=0 entity=2 one_way_drops=201 sinks(any/recon/assault/support)=0/0/0/0. The two entity pairs cross func_breakables (one where master's second pocketladder stood). The kept pair, 3514 / 3520 near (1840, -3475), is the mouth of the 64 u duct behind a breakable vent grate, the
same as on master, and kept: it joins the vent duct to ladder 3's foot, inside the region no spawn reaches.
092203f36(Release dedicated server, harness logging only). Byte-identical copies of the map,one carrying each
.nav, matches interleaved: CTG, the ghost pinned at each of the 9 ghost spawns in turn, 6 matcheseach (54 a mesh), 30 bots, default weapon damage (1.485), 1 round, every player at one XP rank tier, rotated across
the spawns, 8 matches at a time. Stuck events are
OnStuckplusFAIL_STUCK, without the spawn crush at round startand weapon scavenging; an episode is one bot's events less than 10 s apart.
Master's leading spots, events a match on master and on this mesh: the floor beside the stair landing near
(1601, -1491), 10.5 -> 0.91; a wall near (54, -3900) (area 13), 4.50 -> 0.09; the stairs near (1445, -1520, 305), 3.29 -> 0.25;
the large crate near (-343, -4011), 1.28 -> 0.20. This mesh's two leading spots are one bot each, one match each: a Recon
in a fight near (384, -3275), 67 events in one episode, and a ghost carrier near (612, -1142, 297), 59; the next is the
floor beside the stair landing above, 0.91 (12 episodes in 54 matches). Both meshes read higher on neo master than on the
research build (below).
before them on the same setup, 54 matches a file for the first and 108 for the second: stuck episodes x0.96 [0.77, 1.17] and x1.03 [0.90, 1.17], and the spot each
targets went to 0 and 0.16 events a match.
Earlier A/B, on the harness's research build (10-08)
The same design on the harness's research build (neo master plus the open bot PRs, among them #2170 and #2176, and
further research bot changes), against the file before the two edits above:
Master's leading spots, events a match on master and on this mesh: the floor beside the stair landing near
(1602, -1487), 5.87 -> 0 (its areas are removed); the stairs near (1440, -1520, 305), 1.11 -> 0; no path in the basement
pit near (343, -3075, -80), 1.02 -> 0 (removed); a large crate near (-297, -3603), 0.81 -> 0.17. This mesh's leading spot
is the hose near (1124, -1210), 0.74 (master 0.59 there, both mostly Support against the hose); no spot on this mesh
reaches 1 event a match.
Known, not changed
cut mouth (above). In 135 earlier matches on the research build, 81 of them with the pocket
connected but not marked, no bot entered it. In the A/B on neo master, 0 position samples and 0 events in its 9 areas on either mesh.
stop against its face: 4 holds over 3 s and 6 stuck events at the corner in 8 matches with the ghost pinned at 4
spawns. Splitting the ramp's foot did not change it; moving the waypoint needs a different area layout. In the A/B on
neo master: 0.25 events a match there (master 0.30). Over all four 54-match A/Bs it varied 0.24-0.98, and with twice
master's traffic past it in the first, the rate per bot passing was the same as master's (0.57 v 0.65).
Mostly Support against the hose. Removing the strip inside the hose did not change it.
69-144 u climbs; all on master too, except the 8 areas of the vent duct, which master reaches over the mouth no class enters.
near (1550..1625, -1525..-1425, z 128) (three removed, one cut back), master's leading stuck spot (10.5 events a
match there in the A/B on neo master); two on the vehicle barrier row near (1675..1775, -250, z 128), whose posts stand at
x 1640, 1712 and 1784; and two forklift strips near (688, -288).