v0.12.3 — Smoother fights and the CachyOS build fix
A small release. Fights no longer judder from the game stepping its simulation
unevenly, and setup builds again on Linux compilers that default to C++20 (GCC 16
on CachyOS). Two pull requests were combined on one branch (release/v0.12.3), with a docs fix (#149),
and the full regression ran once per platform on that combination.
What changed
- Smoother fights: an even simulation step every frame
(#143, issue
#140). Frames
arrived evenly at 60 a second, but the fight's simulation sometimes ran no step
on one frame and two on the next, so motion jumped like 30 fps. The game's 60 Hz
frame clock and the display drift slowly in phase; when a clock tick sat right on
the main loop's check it fell on alternate sides of it. Each tick is now steered
by at most 1% of a frame toward the middle between two checks. In the owner's
play-test the uneven frames in fights fell from 11.2% to 0.1%. The simulation and
game speed are unchanged (the replay checks match).RECOMP_FRAME_CLOCK_LOCK=0
turns it off;RECOMP_FRAME_CLOCK_TRACE=1logs steps per frame. Menus are
unchanged. - Setup builds again under C++20 (CachyOS, GCC 16)
(#139, issue
#138). The mod
manager code stored a file path's UTF-8 form in a type that changed in C++20, so
the Linux build stopped on compilers that default to it. A unit test now guards
against the pattern returning.
Installing
Download the setup for your platform from this release:
- Windows x64:
DefJamSetup-0.12.3-windows-x64.exe - macOS Apple Silicon:
DefJamSetup-0.12.3-macos-arm64.dmg(unsigned) - Linux x64 / Steam Deck:
DefJamSetup-0.12.3-linux-x64.tar.gz
For an existing installation choose Clean Update: the game code changed, so
setup analyses and builds again. Saves, settings, mods and texture packs are kept.
Building from source: git submodule update --init --recursive, then analyze,
recomp and build again.
Testing
Each row is the release candidate (release/v0.12.3), not the individual PRs.
| Check | Windows | macOS | Steam Deck / Linux |
|---|---|---|---|
Full regress.py
| 14/14 pass (4 macOS/Linux-only skipped), 37 min | pass (owner's run) | pass (owner's run) |
Opt-in checks (skipintro, fight-terrordome, ffa-result, two-matches, repeat, visual)
| 6/6 pass; two-matches and visual on a rerun (see below)
| — | — |
| Setup install, and Clean Update from v0.12.2 | pass (data folder byte-identical) | — | — |
| Owner play-test | pass | — | — |
On Windows, two-matches failed once because a fighter was put out of the
free-for-all with health left, which its "ended at zero health" assertion does
not allow (the same flake ffa-result showed in v0.12.1). It passed 35/35 on a
rerun. visual failed once on the crib screen: the randomly chosen "now playing"
track had a title longer than the area the baseline ignores. It passed 4/4 on four
reruns, two of them with the frame-clock lock turned off, with the same results.
Known issues
- HD widescreen menu backgrounds can flash black side bars on Windows with three
texture packs installed
(#141); not
addressed by this release. - Menus can still step 0 or 2 times on alternate frames, because their frame
times alternate short and long; the frame-clock lock does not change that. - Story shops still pause briefly while a chosen item loads
(#119). - The v0.12.0 known issues (Steam Deck repeat check #98, VRR slowdown #101) still
apply.
See known issues for the full list.