Skip to content

Travel speculation (#173) and Aether 0.809.0 - #175

Merged
nicolas-maman merged 1 commit into
mainfrom
feat/travel-speculation
Oct 13, 2026
Merged

nicolas-maman merged 1 commit into
mainfrom
feat/travel-speculation

Conversation

@nicolas-maman

Copy link
Copy Markdown
Collaborator
  • WorldDef.enable_travel_speculation (and physics_world.enable_travel_speculation), off by default so the reference's results and the golden trace stay the same. When on, every contact keeps speculative points out to the pair's travel over the step, dynamic pairs included. That is what enable_kinematic_speculation (A kinematic body travelling past the speculative distance in a step finds slow dynamic bodies already inside it: a strike's first frame #167) does for a kinematic body's contacts. A moving body's fat bounds also cover its next step, a fast body's after its continuous sweep included, so the pair exists in time.
    • Why: a 1.2 t dynamic car at 6.5 to 7 m/s moves 11 cm a step. That's under the reference's continuous threshold (half its extent), so the light bodies it struck were found 5 to 8 cm inside it on the first frame.
    • tests/test_edge_cases: a ball or a 6 cm limb struck by a dynamic 1200 kg box at 7 m/s is under 1 cm deep, against 6 cm or more without the option. At 20 m/s (past the fast threshold) also under 1 cm. Off by default, and a world turns it on.
    • Recorded as OP_ENABLE_TRAVEL_SPECULATION (test_recording's every-op check now covers 162) and kept in snapshots (SNAPSHOT_VERSION 5).
    • In ae3d's plaza the seconds a struck figure's limbs spend inside the car went from 6.9 to 0.9 over eight seeds.
  • Aether 0.809.0, the latest release (aeb v0.326 is already the latest). The whole gate passes on it locally, the golden trace bit for bit.

Closes #173.

WorldDef.enable_travel_speculation, off by default so the reference's
results and the golden trace stay: every contact, a dynamic pair's too,
keeps speculative points out to the pair's travel over the step (what
enable_kinematic_speculation does for a kinematic body's, #167), and a
moving body's fat bounds cover its next step, a fast body's after its
continuous sweep included, so the pair exists in time. A 1.2 t dynamic
car at 7 m/s, 11.7 cm a step, found a ball or a 6 cm limb it struck 6 cm
or more inside it on the first frame; now under 1 cm, at 20 m/s too.
Recorded (OP_ENABLE_TRAVEL_SPECULATION) and kept in snapshots (version
5). In ae3d's plaza it cut the seconds a struck figure's limbs spent
inside the car from 6.9 to 0.9 over eight seeds.

Aether 0.809.0, the latest release: the whole gate passes on it, the
golden trace bit for bit.
@nicolas-maman
nicolas-maman merged commit 4dbeedd into main Oct 13, 2026
2 checks passed
@nicolas-maman
nicolas-maman deleted the feat/travel-speculation branch October 13, 2026 09:43
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.

A fast dynamic body finds slow ones already inside it on a strike's first frame: speculation over the travel is kinematic only

1 participant