LateBrake v0.5.9 — Fail-closed Race Clock Readiness¶
Unreleased source development only; no playable game package.
Problem¶
The v0.5.8 source-side CircuitStartupAudit refused checkpoint
scoring if the original track failed collision, Actor creation,
safe spawn or four-gate checks. But GameMode's Tick still called
Race.Advance unconditionally. A player could see elapsed race
time and apparently ongoing results on an incomplete course with
no valid way to finish.
Source changes¶
Source/Latebrake/Public/Racing/RaceClockReadiness.hadds the allocation-freeAdvanceRaceClockIfReady. Its inputs are the actualRaceProgressobject, source course-readiness flag, paused status and frame duration.- It advances only when ready, not paused, still racing and frame duration positive and finite. The policy reports success only if the original clock truly advanced, not when a floating-point increment rounded to zero.
Source/Latebrake/Private/Game/LatebrakeRaceGameMode.cppuses the policy inTickinstead of unconditionalRace.Advance.- A shared
CanScoreCheckpointpredicate prevents callbacks from advancing gates during world pause, after a finish or when the source circuit audit failed. Both scoring and the clock use it. LatebrakeRaceGameMode.hexposes the source readiness flag toLatebrakeRaceHUD.cpp, which showsTRACK NOT READYin prototype racing HUD/menu if startup failed.Tests/Standalone/RaceClockReadinessTests.cpplinks the real portable race progression code and exercises startup failure, pause, bad frame duration, normal time, actual finish and reset.
Genuine Unreal acceptance — still pending¶
Compile with authorized Unreal Engine 5.8 UHT/editor/game targets, author/cook the real serialized track map, run installed Win64 and Android builds, and observe the blocked startup warning on screen after deliberately introducing a safe temporary course fault. Confirm elapsed time stays at zero, progress/rewards remain unavailable, paused overlaps never award a checkpoint, and normal racing, pause, recovery, restart and saves work after restoring the valid course.
A passed standalone CTest cannot establish game-world timer, physics, Unreal HUD rendering, Android input or packaged EXE/APK QA.