diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b512b8..74ccb6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,40 @@ What changed in each SpeedBreaker release, newest first. Each release's notes on its entry here, and the game shows the entry once, the first time a new version starts (offline: it's built into the game). +## v0.1.7 + +### What's new + +- Smoother on 120 Hz screens on SteamOS and Linux, and on 180 and 240 Hz ones: each frame now + stays on screen for exactly two refreshes (three at 180 Hz, four at 240 Hz), as a 60 Hz screen + shows each for one. Until now some frames stayed for one refresh and the next for three, + a small, uneven stutter that came and went. Macs are unchanged. +- A note, once, when your screen runs at a rate 60 frames a second can't share evenly (90 Hz on a + Steam Deck OLED, 144 or 165 Hz monitors), which makes motion stutter: it says how to set the + screen to 60 Hz or 120 Hz, or to turn on variable refresh. It waits for a menu or a pause rather + than coming up mid-race, pauses the game while it's open, and doesn't come back for that rate + once closed. It never shows with variable refresh, nor on a Mac's ProMotion screen. + +### More about it + +- Tested on simulated 120, 180 and 240 Hz screens (a nested gamescope session on a Steam Machine, + whose own TV tops out at 60 Hz): 99.9% or more of frames shown evenly, against 77-88% at 120 and + 240 Hz before. Not yet on a real 120 Hz panel: a report from yours would help. +- Each frame reaches a 120 Hz screen about as soon as it did in v0.1.6, now evenly. While frames + take longer (loading, a heavy scene), each is shown a refresh or two later, evenly, rather than + some on time and some late. +- As at 60 Hz, this needs a graphics driver that reports when each frame reaches the screen + (Vulkan's present wait); the log's "[vblank] locked to every 2nd refresh" line says it took. + With variable refresh on, the game leaves the screen to follow its frames, as before. + NFSMW_REFRESH_MULTIPLE=0 brings back v0.1.6's behaviour. +- The note's words are in the log too ("[video] refresh notice"), and NFSMW_REFRESH_NOTICE=0 turns + it off. Where your screen's rate is recorded once the note is closed: settings.toml's [app] + refresh_notices. On a Steam Deck it points to Quick Access > Performance; the names of Steam's + settings in it haven't been checked on a Deck yet. +- Updating keeps your saves, settings and the installed game, and needs no disc image: on a Mac, + drag the new app into Applications and choose Replace, then Open Anyway once more; on SteamOS, + unpack the new download over the old folder. + ## v0.1.6 ### What's new diff --git a/CMakeLists.txt b/CMakeLists.txt index 525668d..92b5c0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,7 @@ endif() # apps' versions, the SteamOS bundles' VERSION file and the release tag # (v). CHANGELOG.md has an entry for each version (the in-game # "What's new" note is built from it). -project(SpeedBreaker VERSION 0.1.6 LANGUAGES C CXX) +project(SpeedBreaker VERSION 0.1.7 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/README.md b/README.md index 0befb9b..11a98f5 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ should say OK. What changed in each release is in [CHANGELOG.md](CHANGELOG.md). - **Everyone:** a disc image of your own **USA (NTSC-U) Xbox 360 disc** (see [Quick start](#quick-start)), about **7.2 GB** of free space, and a display running at about - **60 Hz**. + **60 Hz** (or 120 Hz, 180 Hz or 240 Hz on SteamOS and Linux). - **Steam Deck, Steam Machine and Linux PCs** (the x86-64 SteamOS download): a 64-bit x86 CPU with AVX2 (x86-64-v3): Intel Haswell (2013) or newer, or AMD Excavator, Zen or newer. A Vulkan 1.2 graphics card. @@ -202,7 +202,9 @@ should say OK. What changed in each release is in [CHANGELOG.md](CHANGELOG.md). formatted by SteamOS, or Game Mode won't find the game. 5. **Check the screen settings.** - **Steam Deck OLED: set the refresh rate to 60 Hz** (Quick Access > Performance). At 90 Hz - the game stutters. On any Deck, leave the Framerate Limit off. + the game stutters, and since v0.1.7 a note says so, once, the first time it runs at 90 Hz. + Turn on Steam's per-game profile there and it keeps 60 Hz for this game. On any Deck, leave + the Framerate Limit off. - **Docked, or on a Steam Machine:** in the shortcut's Properties > General > Game Resolution, choose **Native**. - The picture fills the Deck's 16:10 screen, with a slightly taller view and the HUD kept at @@ -440,6 +442,11 @@ online, and only when you press it). The page also shows which build you're runn - **Run your display at 60 Hz.** On a Steam Deck OLED, set the refresh rate to 60 Hz and leave Steam's Framerate Limit off. +- **A 120 Hz monitor works too** on SteamOS and Linux (and 180 or 240 Hz): since v0.1.7 each frame + stays on screen for two refreshes (three or four), evenly. That was tested on simulated 120, + 180 and 240 Hz screens, not yet on a real one: a report from yours would help. 90, 144 and + 165 Hz can't show 60 fps evenly; the game says so once, and 60 or 120 Hz (or variable refresh) + is smooth. - **MacBook Pro with a 120 Hz (ProMotion) screen:** since v0.1.4 SpeedBreaker asks for each frame to reach the screen 1/60 s after the last. Measured in fullscreen on an M1 Pro: 99.9% of frames in menus and about 94% while driving (fewer in the heaviest scenes). Other screens show frames @@ -498,7 +505,8 @@ Security (see [Mac setup](#mac)), again after each update. SpeedBreaker needs ma or later on Apple silicon. **The game stutters on my Steam Deck OLED.** Set the screen to 60 Hz (see -[Steam Deck setup](#steam-deck-and-steam-machine)). +[Steam Deck setup](#steam-deck-and-steam-machine)); with Steam's per-game profile on, it stays at +60 Hz for this game. **My laptop runs the game on the slow built-in graphics.** Since v0.1.2 SpeedBreaker is meant to pick the dedicated GPU by itself (not yet confirmed on a real two-GPU laptop). If it doesn't, see @@ -559,7 +567,7 @@ SpeedBreaker folder instead: `data/`, `data/game` and `cache/`. 2. A notice says where the zip file went: your **Desktop** (on SteamOS, pick it up in Desktop Mode, or in the Desktop app on a Steam Frame), the **SpeedBreaker** folder in the Files app on iPhone and iPad, or the data folder above when there is no Desktop. Its name says which - version you were running, for example `speedbreaker-bug-report-v0.1.6-_