Skip to content

Draw the nav graph in the world with the engine pointfile channel - #252

Merged
saworbit merged 1 commit into
mainfrom
lab-pointfile-overlay
Sep 4, 2026
Merged

Draw the nav graph in the world with the engine pointfile channel#252
saworbit merged 1 commit into
mainfrom
lab-pointfile-overlay

Conversation

@saworbit

@saworbit saworbit commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Shane's thought: back when maps leaked, qbsp wrote a .pts file and you loaded it in the engine to walk the leak out to the void. Worth checking whether anything there helps us see navigation.

It does, and the channel is already in our engine. The binary carries pointfile, maps/%s.pts and %i points read, plus a -particles switch to raise the pool. R_ReadPointFile_f spawns one static particle per line of x y z, so anything can write the file. We have never used it.

Why it is worth having

Top-down PNGs and event counts cannot show a seat hanging 152 units over lava, or a door seat that stops 18 units short of the trigger it is waiting on. Those two cost a session each this week, and both are obvious the moment you stand in the level and look at dots.

Modes

tools/argus_pointfile.py writes the overlay from data we already keep.

mode draws
nodes one particle per waypoint
links interpolated along every link
swim swim-exit links, the ones that answer "can it get out"
water just the endpoints of those links
tape the freeze cells from a session log

Pointed at today's session, tape emits exactly the five freeze positions, all clustered at the t120 door:

442.7 -119.2 254.0
449.7 -121.1 255.2
428.5 -117.8 253.1
462.1 -131.4 261.6
430.8 -118.3 253.4

Limits, recorded so nobody expects more

  • Colour is (-index & 15), so it cycles every 16 points and cannot be given meaning. Use one mode at a time rather than trying to colour code.
  • The particle pool bounds what shows at once. The tool thins and tells you what -particles value to pass.
  • pointfile is a client command, so this needs a listen game. A dedicated match has no renderer, which is also why this cannot be verified headless.

Nothing here touches progs.dat, the server or the bots. The particles are client side and static.

python tools/argus_pointfile.py e1m2 --what swim

then in a listen game: pointfile

🤖 Generated with Claude Code

Shane's thought: back when maps leaked, qbsp wrote a .pts file and you
loaded it in the engine to walk the leak to the void. Worth checking
whether that helps us see navigation.

It does, and the channel is already in our engine. QuakeSpasm carries
pointfile, maps/%s.pts and "%i points read", plus a -particles switch
to raise the pool. R_ReadPointFile_f spawns one static particle per
line of "x y z", so anything can write the file. We have never used
it.

That fills a real gap. Top-down PNGs and event counts cannot show a
seat hanging 152 units over lava, or a door seat that stops 18 units
short of the trigger it is waiting on. Both of those cost a session
each this week and both are obvious standing in the level looking at
dots.

tools/argus_pointfile.py writes the overlay from data we already keep:

  nodes   one particle per waypoint
  links   interpolated along every link
  swim    swim-exit links, the ones that answer "can it get out"
  water   just the endpoints of those links
  tape    the freeze cells from a session log

The tape mode reads a run log and emits where each track stood still
for 6 s or more. Pointed at today's session it emits exactly the five
freeze positions, all clustered at the t120 door.

Limits, recorded so nobody expects more. Colour is (-index & 15), so
it cycles every 16 points and cannot be given meaning; use one mode at
a time instead of trying to colour code. The particle pool bounds what
shows at once, so the tool thins and tells you what -particles to
pass. And pointfile is a client command, so this needs a listen game;
a dedicated match has no renderer.

Nothing here touches progs.dat, the server or the bots. The particles
are client side and static.

  python tools/argus_pointfile.py e1m2 --what swim
  then in a listen game: pointfile

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@saworbit
saworbit merged commit cd1307b into main Sep 4, 2026
3 checks passed
@saworbit
saworbit deleted the lab-pointfile-overlay branch September 4, 2026 23:24
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.

1 participant