Profile typed jump approach speeds - #405
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: adf7fa3723
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (self.ar_hopjump == 1 && self.ar_sprintstate == 2 | ||
| && self.ar_hopspeed > 0) | ||
| wdrag = self.ar_hopspeed; |
There was a problem hiding this comment.
Restrict the speed cap to an active routed jump
The cap depends only on stale hop fields, even though the launch gate also requires ar_mode == 2. Several route-exit paths do not clear those fields—for example, the direct-goal shortcut at lines 7148–7158 sets ar_mode = 1 and ar_node = world—so if it fires during phase 2, every subsequent grounded frame remains capped to the old jump target (as low as 45 u/s), while that jump can no longer launch. Require an active routed hop here or clear the jump state whenever routing is exited.
Useful? React with 👍 / 👎.
| _bad = len(_node_rows) != len(_nodes) | ||
| if not _bad: | ||
| for _k, _m in enumerate(_node_rows): | ||
| _p = _nodes[_k] | ||
| if int(_m.group(1)) != _k or [_m.group(2), _m.group(3), | ||
| _m.group(4)] != [f"{_p[0]:.0f}", | ||
| f"{_p[1]:.0f}", | ||
| f"{_p[2]:.0f}"]: | ||
| _bad = True |
There was a problem hiding this comment.
Validate the complete QC/JSON graph before rewriting
The mismatch guard compares only node rows here and later compares only the set of jump links. Consequently, a QC/JSON pair with identical nodes and jump links but different ordinary links, link types, regions, teleporters, or duplicate jump calls is accepted and rewritten, despite this mode promising to refuse mismatched shipped graphs. That can leave the two outputs describing different runtime topology while reporting success; parse and compare the complete QC graph metadata before writing either file.
Useful? React with 👍 / 👎.
This finishes #365 by carrying a nav baked approach speed on each typed jump link. Navgen measures the first physical gap from actual standable takeoff and landing origins, certifies each whole speed in the runtime launch window, and keeps uncertified links on the old direct gate. Runtime brakes, walks back to a validated run up, charges through the launch seat, and records target and actual launch speed.
All eleven shipped graphs were reprofiled without topology changes. The result is 37 staged links and 146 direct or conservative fallback links. The full 52 test suite, nav and ship checks, vanilla QuakeC compile, two map directed runtime proof, and yellow, red, and purple reviews pass. The mixed tick A/B set is recorded as void rather than used as evidence.
The design was checked against the Frogbot v2 README: https://github.com/DrLex0/quake-frogbots/blob/master/README.md
Fixes #365