- Added
info_spawnpoint. trigger_timetrial_checkpointnow has a name and links up to two followup- Added
trigger_timetrial_start. Almost identical totrigger_timetrial_checkpointexcept green and triggerstrigger_time_trial_startwhen the player leaves its Area3D. - Added
PlayerStateSnapshotfor stashing and restoring things about the player (position, speed, state, various cooldowns). Used to rewinding back to the moment the player reached a timetrial checkpoint - Slide Boost Reacharge prompt no longer plays if slideboost has already restored before the cooldown ran out
- Respawn actions are now managed by the
GameManager. Depending on input, Player will call eitherperform_short_respawn_actionorperform_long_respawn_action. GameManager will then either defer back to Player for default behaviour, or intervene for speedrun or timetrial mode behaviour. - Added new
timetrial_restartinput, bound to “F” - Added most of the timetrial mode implementation!
- Split times are stored for each checkpoint. A set of “ephemeral splits” are stored for any run in progress, and on a completed run if the ephemeral times are better than the existing best run, the new times are used instead.
- Supports respawning at the last checkpoint, rolling back to the previous checkpoint, and restarting from scratch. Uses trackmania style splits (the run continues but won’t store a time if you respawn or roll back), useful for practicing.
- To avoid depth-test issues, only one set of timetrial volumes are shown at a time, reaching a checkpoint hides itself and reveals the next set of volumes, etc etc.
- UI scene now has
TimeTrialUIto manage timetrial specific widgets. - Added
tt_clear_splitsto manually clear splits without reloading. - Each checkpoint gets its own split time, but histories are not currently differentiated by route (e.g. A -> B -> C and A -> D -> C both share the same time for C, despite route snot necessarily being the same length)
- I’ll fix this in the future but its a low priority, linearity is fine for now and i don’t wanna burn more time on this system
- Splits are not saved right now, times reset on load. This will depend on me solving the routes issue.