Skip to content

v0.9.0 — Races keep real time on slow devices

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 16 Oct 05:01
d964b58

Changes

  • Races keep real time on slow devices, with the console's fixed step (#123):
    • Android stepped races by the time that passed, so on a phone under 60 fps each step was longer, and a fast racer could fly off the side of a ramp. Races now keep the console's fixed step on every platform.
    • When drawing can't keep up, some frames are run without being drawn (at most four in a row) so the race keeps its speed. Those frames now also leave out most of the game's own drawing work, so they are much cheaper and the race can catch up.
    • On an AYN Thor with drawing slowed to 30-40 fps, the race keeps full speed (it ran at 75% before). A device that keeps 60 fps draws every frame as before.
    • This is on by default everywhere, PCs and handhelds included. SFR_RACE_FRAMESKIP=0 turns it off.
  • Ultrawide HUD placed by what it is (#131, #124): with Aspect Ratio = Auto on a screen wider than 16:9, the race HUD's pieces go to the screen's edges according to which part of the game draws them, not where they are. Text (goal notices, the tutorial) and the results table stay together in the middle instead of breaking apart.
  • Kinect lean calibration (#132): a calibration taken while leaning no longer becomes the neutral pose. That could make leaning left stop steering partway through a session and made jumps harder to trigger.
  • Avatar models list (#132): the launcher's Avatar page keeps every model you add; choose one, none, or remove a model from the list. The game still shows one avatar at a time.
  • Flying controls in the README (#133): the controls table now lists the Fly-type skill (hold A to rise, release to come down) separately from the Power skills on LB / RB.
  • Linux file dialogs (#130): when neither zenity nor kdialog is installed, Browse now says so instead of doing nothing. Support for the desktop's own file dialog (XDG portal) is planned for the next version.
  • 16 KiB memory pages: guest memory now works on hosts with 16 KiB pages (Apple Silicon Macs, some newer Android phones). This is groundwork for macOS; there is no macOS build yet.

Validation

  • Unit tests: CTest passed on Windows (151) and Linux (143). GitHub Actions builds passed on Windows, Linux, macOS and Android. On an Apple Silicon Mac, the guest memory tests passed on its 16 KiB pages.
  • Windows package: race checks on D3D12, Vulkan, and D3D12 in a 21:9 window. Every pipeline was prepared, no shader was left untranslated and the save was left unchanged.
  • Linux package: Vulkan start-up smoke test in WSL, all 455 pipelines prepared.
  • AYN Thor: this release's Android 10+ APK prepared all 455 Vulkan pipelines and ran a Free Race at full speed (60 fps, race speed 1.00); with each drawn frame made 20 ms slower on purpose, the race still ran at full speed. The APKs keep the existing signing certificate.
  • Frame skipping, AYN Thor (drawing slowed on purpose): race speed 1.00 at 60 fps, 1.00 with each drawn frame 12 ms slower, 0.99 with 30 ms slower.
  • Ultrawide (PC, 22:9, Aspect Ratio Auto): Free Race HUD, goal notices, rank banner and results table; two-player Tag Race split view, holding hands and pause.
  • Not tested: a real slow phone, a real Kinect v2 (calibration fix), World Grand Prix missions and Relay at ultrawide, the launcher's avatar list on Android and Linux.

Downloads

  • Windows x64: download and extract the Windows ZIP; run FreeRidersRecompiled.exe.
  • Linux x64: download and extract the Linux archive; run FreeRidersRecompiled.
  • Android 10 or later: prefer android10-arm64.apk.
  • Android 9: use android-arm64.apk.
  • Android version code: 45. The companion licence archive applies to both APKs.
  • Checksums: SHA256SUMS.txt.

Use your own game disc image. No game data, private saves or test overrides are included.

Known limitations

The same as v0.8.2.

Also being looked at:

  • the Kinect v2 stop-sign pause and Relay with one Kinect v2 (#132);
  • steering in Metal City's power section (#123).