Arcade reverse-speed limit — source QA¶
This milestone makes reversing behave more like a low-speed gear on LateBrake's existing rigid-body car. It is not a new gearbox, tire solver, transmission, or verified playable Windows/Android feature.
Real in-game integration¶
The shared ALatebrakeCarPawn::Tick routine first checks the authoritative
race clock, start gate, local player/controller state, valid rigid-body
physics, valid frame timing and live pavement sample. The current forward
speed cap (including the human-only nitro speed-cap scale) is still applied
normally. Afterward, the pawn reads the actual Chaos linear velocity
and its current actor heading, then calls the engine-neutral
latebrake::LimitPlanarReverseSpeed policy.
Both the locally driven prototype and the physically simulated AI rival use this same pawn and cap. Any invalid direction or non-finite velocity fails closed through the existing motion-neutralization policy.
Expected handling¶
| Behavior | Arcade | Simulation Inspired |
|---|---|---|
| Maximum backward component | 1,350 cm/s (48.6 km/h) | 1,000 cm/s (36 km/h) |
| Existing forward speed cap (before garage tuning/nitro) | 6,500 cm/s | 5,400 cm/s |
| Sideways sliding velocity | Unchanged by reverse cap | Unchanged by reverse cap |
| Vertical Chaos velocity | Unchanged by reverse cap | Unchanged by reverse cap |
| Normal forward travel | Unchanged by reverse cap | Unchanged by reverse cap |
The reverse limit acts on signed measured longitudinal velocity relative to the actual horizontal car heading, not whether the reverse key is pressed. If a collision pushes the car backward too fast, that backwards component is also limited. Lateral velocity is retained so slides are not silently erased. The normal overall forward/lateral speed cap is still authoritative and may affect slides independently; this reverse-only rule adds no speed.
Garage top-speed upgrades do not affect the reverse-gear cap, and it cannot increase nitro or drafting acceleration or modify money, career, lap times, checkpoints, saved state or collision-damage accounting.
Source checks¶
The standalone C++20 regression includes 200,000 deterministic heading and velocity combinations and asserts bounded reverse speed, preservation of the perpendicular velocity component, unchanged ordinary forward motion, the stricter simulation mode, and fail-closed nonfinite/degenerate inputs. It is registered on Windows, Ubuntu and macOS in the strict C++ CI suite with warnings as errors. Editor-source bindings verify the call occurs after the normal speed cap, uses the actual chassis velocity, and preserves the original Z component.
Actual UE 5.8 acceptance tests still required¶
On an authorized Unreal Engine 5.8 Windows workstation:
- Compile the genuine Editor/UHT and game targets, author/cook the original LatebrakeCircuit map, then package a real Development Win64 candidate.
- Drive forwards at full throttle and nitro: no new forward acceleration cap or hard stop should appear; steering/slide control should remain unchanged under the original overall speed cap.
- Reverse on a flat straight in both handling modes. Observe and record actual chassis speed against 48.6 / 36 km/h, allowing appropriate numerical tolerance.
- Reverse with steering and handbrake, on road and off pavement. Confirm the car remains steerable and sideways chassis velocity is not replaced by this reverse policy; verify no 3D vertical jolts.
- Have the AI rival reverse during its own valid drive session if appropriate; confirm it cannot bypass the same cap.
- Test interruption, restart, teleport, focus loss, crash and abnormal physics. Capture the true runtime log and check the private candidate receipt. Repeat actual installed Windows/Android hardware QA.
No licensed Unreal compile, actual game driving, cooked map, or installed device QA is claimed by this source change. The project remains source-only until playable-release gate #148 is satisfied.