Repository navigation
ntre_transit_ctg: navmesh rework - #145
Merged
sunzenshen merged 3 commits intoOct 14, 2026
Merged
Conversation
One file. Against master: 743 -> 518 areas, 289,515 -> 238,249 bytes; areas no spawn can reach 40 -> 18 (the sealed east train roof); areas blocked at every round start 9 -> 0. - Regenerated, and sliver areas merged into their neighbors on the same floor. - Links the player hull cannot cross are cut: six walk links ending against a wall, a prop or a long drop, links across railings, and platform-edge drops outside the barrier rail's opening. - Areas split or trimmed around six props bots stood against, and one spot by the west ladder's top where a player cannot stand cut out. - The 9 areas blocked at round start are removed or split. - The area through the breakable grate by the south glass pane is removed: the grate is intact at round start and bots do not shoot it open. - Areas under the parked pilot car's body are removed, and the track bed areas stop half a hull short of its nose. The car is chamfered towards the nose; the floor beside it keeps one area on each side (master's 625 and 626), linked with the track bed to the north only, without master's climbs out of those narrow pockets. - Ladder records as on master, climbed and descended from both side landings. - Re-analyzed in game after the edits.
Renumbers area ids only, so an id-keyed diff against master reads sensibly: 514 of the 518 areas carry the id of the master area they match, including the two pocket floors beside the pilot car (625, 626); the diff shows 4 added / 229 removed areas. Geometry, connections, attributes and the analyzed visibility data are unchanged (verified topology-identical).
An outside review of this mesh found walk links that run one way only and a climb whose drop back was cut. Each one-way pair was swept with a player hull in both directions by the engine's hull audit: - Three one-way links ended in 20 u squares inside ticket machines, where no player hull fits: delete the squares. Cut the link through the vending machine near (-270, -560), one-way on master. - The track bed beside the east platform near (120, 1070) was one area along both the barrier rails and the opening at their north end, so its climb to the platform crossed the rails and the drop back had been cut. Split it at the rails' end; the north piece is linked both ways with the platform through the opening. Beyond the review, from the same audit: delete two more 20 u squares inside a bench and a barrier, and the 20 u top of the bus stop kiosk near (-110, -790), reached only by 80 u climbs nothing can make. Existing areas keep their ids; the track bed's north piece is new. Re-analyzed in game (same graph, fresh visibility).
sunzenshen
marked this pull request as ready for review
October 9, 2026 04:49
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_transit_ctg: navmesh rework
One file,
neo/maps/nav/ntre_transit_ctg.nav.Dependencies and status
Needs (worse than master, or broken, without it):
Helped by (measured better with it; the mesh does not wait on it):
Pending before review:
At a glance
Three commits:
1. What changed
2. Id alignment
514 of the 518 areas carry the id of the master area they match, including the two pocket floors (625, 626). 10 kept ids sit more than 64 u from their master location or on another level. An id-keyed diff shows 4 added areas and 229 removed. Geometry, connections, attributes and the analysis data are unchanged by this step (verified topology-identical).
3. Review fixes
An outside review of the mesh listed walk links that run one way only and a climb whose drop back was cut. Every one-way pair was swept with a player hull both ways by an engine hull audit (a harness-only test build: a hull is stood every 4 u on every area and swept every 4 u across every link), and the mesh's level links were checked the same way.
From the review:
Beyond the review, from the same audit (bot positions from 133 matches on this mesh):
Every kept area keeps its id; the track bed's north piece is new (2355). Re-analyzed in game.
How it was tested
BLOCKED_LINKS map=ntre_transit_ctg level_pairs=750 oneway=0 keep=0 cut=0 area=0 check=0 entity=3.nav, run back to back. Upstream master (at #2168) plus #2176, with harness logging added. CTG, 2 rounds of 3 minutes with the ghost pinned at each of the 5 ghost spawns in turn, 30 bots, default weapon damage, 8 matches at a time. The stuck count isOnStuckplusFAIL_STUCKmove failures, excluding the spawn crush at round start and the weapon-scavenging behavior.FAIL_NO_PATH_EXISTSmove failures 6.7 -> 8.4 a match (spread over the map, mostly the attack behavior's chase path failing to reach its target)trigger_hurt, and the walkway drops are 40 u)How 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.
sv_neo_ghost_spawn_pos "x y z", which replaces the position of the round's ghost spawn. The map file is not edited..bspunder a second name that loads its own.nav, so the same pin runs on both meshes in one batch.Known, not changed
PRECISEcut the falls by a fifth to a third, but added as many stuck events on the walkway itself (bots meeting on it no longer side-step), so it is not in this PR.