Repository navigation
ntre_rogue_ctg: navmesh rework - #158
Merged
sunzenshen merged 1 commit intoOct 14, 2026
Merged
Conversation
One file. Against master (NeotokyoRebuild#131): 1289 -> 1008 areas, 564,486 -> 381,464 bytes; areas no spawn can reach 32 -> 4; nav ladders 4 -> 5. - Sliver areas merged into their neighbors on the same floor, and pockets no spawn reaches removed where nothing links in or no class can climb back. Kept: the boat top and a ledge near (-1562,62), which bots drop out of. - The north canal walkway, a boat's gunwale over the water, is PRECISE + CLIFF (3929-3932, 4055, 4056, 4257): bots fell off it into the water. - Ladder 6 is new, on the ladder brush near (624,-790). Ladder 2's top is lowered from z 223 to 200, where climbing bots hung under the ceiling, and no longer lists 4066 behind it, which did not link back. - Drops with no clear column are cut: ladder 2's tops onto its foot (4068 -> 4237, 4068 -> 4239, 4069 -> 4239, 4066 -> 4233) and 789 -> 2063. So are links the engine hull audit reads blocked both ways; areas no player hull can stand in are removed. - The strip south of the plaza is split again as on master, and the plaza's east edge by 378 routes round the building corner. - The water pump's obstacle tops (4304, 4307) follow the prop. - Area and ladder ids follow master's where an area is the same place. Re-analyzed in game.
This was referenced Oct 3, 2026
sunzenshen
marked this pull request as ready for review
October 13, 2026 01:19
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_rogue_ctg: navmesh rework
One file,
neo/maps/nav/ntre_rogue_ctg.nav. It starts from master's mesh (#131) and keeps its hand edits.Dependencies and status
Needs: none. Measured on neo master
092203f36with no open PR (A/B below). The bot change this mesh carries data for is in master:NAV_MESH_PRECISE+NAV_MESH_CLIFFmarks on the canal walkway use its movement rules.The mesh has no
NAV_MESH_AVOIDmarks, so NeotokyoRebuild/neo#2170 (merged) has no data here.NAV_MESH_PRECISEandNAV_MESH_CLIFFare stock Source nav attributes.Not waited on: NeotokyoRebuild/neo#2179 ("Bots avoid neo_npc_targetsystem via nav PVS", draft), a bot change for the casual-mode tank. The tank-on numbers below are measured without it.
At a glance
PRECISE+CLIFF(fall edges)All on neo master
092203f36, 61 / 61 / 41 matches a mesh; intervals under "How it was tested".What changed
PRECISE+CLIFF(see "The canal").The canal
The canal under the boat is two
trigger_waterydeathvolumes. Bots walking the gunwale slipped off its water side, mostly while aiming or strafing. On master, with the tank removed, 1.44 bots a match died there, most often off 3931. ThePRECISE+CLIFFmarks keep bots on their path there: no combat dodge, no close-range strafe, no stepping away from a teammate (NeotokyoRebuild/neo#2168). An unmarked research mesh with the same walkway ran at 1.22 deaths a match (50 matches, research build).The tank
In casual mode the map runs a scripted tank (
tank_train) on a loop round the roads. Its turret took 15 % of the kills in 8 test matches, and its gates'func_nav_blockers block the strips at each gate while the gates are shut. The mesh links across no gate, as master. Competitive mode (sv_neo_comp 1) removes the tank and spawns props near the middle instead: a container, an APC, crates and fences.The main comparison removes the tank at every round start (
ent_remove_all tank_trainfrom the server console, the same removal competitive mode makes), so stuck counts measure the mesh rather than where the tank happened to be. Two more arms ran the map with the tank, as shipped, and in competitive mode.With the tank, bots on this mesh died to it 3.30 times a match against 2.67 on master (x1.16 [1.00, 1.34]); NeotokyoRebuild/neo#2179 (draft, not in these runs) is the bot change for the tank.
How it was tested
trigger_waterydeathboxes under the canal (z -192 to -112). The edges bots fell from are the walkway's, now marked. The tank'strigger_hurts ride the tank and are crush damage, not falls..nav, run back to back. Upstream neo master092203f36with no open PR, Release build plus the harness's logging. CTG, 1 round, the ghost pinned at each of the 5 ghost spawns in turn, every player's XP rank held at one tier a match and rotated over the spawns, 30 bots, default weapon damage, 8 matches at a time, paired by (ghost spawn, repeat). Every match reached match end with 0 asserts (406 matches, the variants below included). Stuck =OnStuckplusFAIL_STUCKmove failures, excluding the spawn crush at round start and the weapon-scavenging behavior; movement failures = stuck + "fell off the path" +FAIL_NO_PATH_EXISTS.FAIL_NO_PATH_EXISTSHow the pinned-ghost probes work
The offline checks show that the mesh links an area to a spawn. They do not show that a bot will walk there. To test one spot in game, the ghost is placed on it and bots are sent to get it: a harness-only neo patch, not part of this PR or any neo PR, adds
sv_neo_ghost_spawn_pos "x y z". Master's mesh runs beside this one on a byte-identical copy of the.bspunder a second name.On this map (an earlier revision with the same ladders), one match a probe, 12 bots, a tenth of weapon damage, on two builds: ladder 6's top (3985) was reached on both runs on this mesh (30 s and 43 s) and never on master, which has no ladder there. Ladder 2's four ends were reached on both meshes in 22-31 s.
Known, not changed
Ladder 2. Bots climbing from the foot (4237) press the ladder brush's nodraw face, and the drop 4069 -> 4237 fails now and then (the link walker crosses it 3 to 5 of 5 times per class from one walk to the next). At the foot, on neo master: 0.13 -> 0.36 a match tank removed, 0.36 -> 0.36 with the tank, 0.12 -> 0.46 competitive, mostly ghost carriers. That is ladder and drop code, not the mesh; the mesh variants below did worse.
The crouch gap south of 122 near (-490, 1262): bots walk into the low gap standing and stick against the ceiling before they crouch, then go through (the same move on both meshes). 1.11 -> 1.75 stuck events a match tank removed (24 v 34 of 61 matches), 1.07 -> 1.77 with the tank, 1.39 -> 1.32 competitive. This mesh merges master's pieces there (3542 + 3543, 3290 + 3291, and the curb strip 3532-3540); a copy with those pieces restored as master's ran at 1.70 a match against 1.78 for this mesh and 1.48 for master's in the same batches, so the pieces are not the cause. More bots cross the gap on this mesh in some batches (0.50 v 0.25 crossings a match), which no single area explains. Ducking before a
CROUCHarea is bot movement code.The plaza by the vehicle barrier (754, 25): 0.3 to 0.4 stuck events a match against the barrier and the gutter, as on master.
The ghost spawn on the tech cart near (-1184, -136, 50). The ghost rests on a
techcart1prop (top z 50.4) and the mesh reaches it by a 50.2 u climb, over the Assault's and the Support's planning limits (48 and 43 u), as on master. A nav edit cannot fix it: the rise from the floor is 45.9 u, higher than an Assault or Support jump reaches (45.2 u), so letting them plan it would plan a climb they cannot make. Bots take the ghost from the floor beside the cart: first pickups there in the tank-removed baseline (an earlier revision on the research build; the cart and its climb are unchanged) were Recon 20, Assault 1, Support 1 (master: Recon 18, Assault 2).The competitive-mode props are not carved (above). Most of that mode's stuck events are at the APC near (232, -118), on areas the two meshes share: 10.4 -> 10.9 a match.
The tank gates. Competitive mode opens half of gate b near (320, 448); neither mesh links through it.
Approaches tried and dropped (research build)