Rival gate run-through driving — source-only gameplay QA¶
Status: The existing physical Unreal rival's C++ driving command now keeps steering toward a paved aim point through its real next gate, instead of declaring its distance-only waypoint "arrived" before the racing gate plane is crossed. Not a UE 5.8/UHT compile, an authored cooked circuit, an installed Windows game, or an Android APK.
Real gameplay regression after directional gate scoring¶
The verified directional gate feature changed rival progress to require
a real forward 3D plane crossing. But the existing
PlanRivalTurn still returned {throttle=0, steering=0, arrived=true}
when the car came within 440 cm of the target. This could stop a
slow rival just before the real gate, preventing route advancement and
eventually forcing a needless recovery. The previous heading target was
also the gate center, encouraging the car to steer toward a point it
needed to drive through.
Corrected physical rival path¶
RivalGateRunThroughPoint(nextGate)computes a point 550 cm past each of the four original circuit gates along the real inbound segment. All four points remain on the fixed circuit's paved road. It is a steering target only; actual gate geometry, timing, checkpoints, lap rewards and recovery positions do not change.- The existing generic
PlanRivalTurnnow accepts an optionalallowProximityArrivalparameter, true by default to retain all existing distance-only callers. The real rival passes false. ALatebrakeRivalCar::Tickstill uses real position, heading and planar speed for waypoint steering, plus corner anticipation, measured tire/surface/damage pace, player traffic and Chaos yaw moderation. Only the source of the next steering target and its proximity-arrival eligibility change.- The earlier directional
RivalGateTrace.SampleandRoute.ObserveVerifiedGatestill determine when a rival lap may actually advance. The new target cannot authorize a gate. - A malformed real gate index is explicitly rejected by the rival:
all transient steering/traffic/condition holds are cleared, the
chassis is commanded to zero throttle/steer with braking, and it
cannot drive toward the invalid
CircuitGate(-1)origin fallback. - The original pre-corner braking, lap completion, recovery teleports, player checkpoint timing, credits and player control remain intact.
Numeric regression and Unreal source binding¶
Tests/Standalone/RivalGateRunThroughTests.cpp checks:
- Original default
PlanRivalTurnbehavior is unchanged. allowProximityArrival=falsenever returnsArrivedbased only on distance, including inside the old 440 cm stop radius.- All four steering targets point exactly 550 cm forward through each correct gate and remain within the paved original layout.
- Low-speed approach/near/through/post-gate behavior keeps requested throttle and steering available without a false arrival event.
- The existing physical
CheckpointMotionTraceaccepts genuine forward swept crossings, independently of pilot proximity. - High-speed corner braking and malformed-input fail-closed behavior remain in force, including invalid arrival radius.
- 200,000 deterministic approach samples preserve finite and bounded steering/throttle, preexisting brake decisions and never claim a radial arrival for the real rival.
Tests/Editor/RivalGateRunThroughBindingTests.py verifies real
Unreal call order, invalid-index fail-closed behavior, the deliberate
no-proximity-arrival argument, directional route scoring and the
portable matrix registration. CI runs C++20 on Windows, Ubuntu and
macOS, Python editor source binding, release PowerShell checks and
MkDocs documentation.
Installed gameplay acceptance still required¶
- Build the actual UE 5.8 editor, UHT and game target with the owned, cooked circuit (not an imagined or placeholder map).
- At each gate, drive an actual slow rival from 250cm before the plane. Verify it does not halt while still on the approach side, crosses forward once and then aims for the next gate.
- Repeat at higher speeds and across frame hitches; inspect the physical Chaos steering/force response, corner overshoot, collision, traffic following and off-pavement safety.
- Verify reverse, invalid-index, teleport, focus-loss, pause, restart, race finish and normal recovery cannot fabricate waypoint/lap progression.
- Gather Win64 and Android installed-driving evidence for playable release issue #148 and Android qualification issue #13.
Source-only CI passes do not certify a real playable race.