2025-10-17

Written: 2025-10-17
Project: Project Fragmentation

  • Added info_spawnpoint.
  • trigger_timetrial_checkpoint now has a name and links up to two followup
  • Added trigger_timetrial_start. Almost identical to trigger_timetrial_checkpoint except green and triggers trigger_time_trial_start when the player leaves its Area3D.
  • Added PlayerStateSnapshot for 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 either perform_short_respawn_action or perform_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_restart input, 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 TimeTrialUI to manage timetrial specific widgets.
    • Added tt_clear_splits to 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.

what if a bug had a website

emily/chloe
it/its/she/her
occasional maker of things and poster of thoughts