github Dittobyte/Recompia v0.12.0-beta.1
Pokopia Recomp 0.12.0-beta.1 (Testing)

latest release: v0.12.0-alpha.1
pre-release2 hours ago

Changes in this build

  • #562 Native Linux and macOS support, and one release pipeline for all three platforms

  • #587 Launcher: alpha builds are in-house, no channel lists them

  • #586 PROJECT.md: map the mods host and its helpers

  • #585 Mods: Community Achievements on by default and locked

  • #579 Set up: a power cut never leaves a file a later run trusts

  • #580 Mods: shader-file note, start log, start without mods, Mods tab details

  • #578 Launcher: Browse goes live, with hub groups, Details and Tested tag

  • #577 Mods: ui_visible hides the game's HUD (#572)

  • #576 Launcher: Achievements page stays in the launcher

  • #575 Launcher: Achievements page (mirror of the community tracker)

  • #574 Upscaling: Nearest sharpens Scene Resolution without a scene fraction (#571)

  • #570 Display: Aspect Ratio setting in game and launcher, Letterbox rename

  • #568 Launcher: open_link and one download loop

  • #569 Set up: lift only the modules whose inputs changed

  • #566 Mods host: screenshots, keys, colour matrix, picture messages and HTTP

  • #518 Game layer: item editor (experimental, opt-in)

  • #567 In-game Settings: a Mods tab (options tabs as models)

  • #565 Launcher: update hub mods by themselves (opt-in)

  • New Item editor (experimental) in Settings > Gameplay, off by default: it adds an Items tab to the game's Settings screen where you change how many of an item in your bag you hold (up to the game's stack limit). It does not add new items and is off during Link Play. Back up your save first. Update only: no shader rebuild, no Set up again

  • New Aspect Ratio setting in the game's Settings > Display and in the launcher (Auto, 16:9, 16:10, 21:9, 32:9; applies after a restart): 16:9 now keeps the game in 16:9 on a 16:10 or ultrawide screen. The toggle that only chose black bars over stretching is now called Letterbox (#564). Update only: no shader rebuild, no Set up again

  • Fixed the Nearest upscaler with Scene Resolution below 100% leaving the 3D scene smooth and blurry, the same as Off: the scene is now enlarged with hard pixels while the menus and HUD stay sharp (#571). Update only: no shader rebuild, no Set up again

  • Fixed Set up failing every time at "Linking pkp.exe" (undefined symbol) after a power cut or a forced shutdown during an earlier Set up: the cut could keep a compiled file's name and size but not its contents, and every later Set up took it as finished. Set up now writes each file to the disk before it counts it as done, and compiles again any compiled file it finds damaged, so the next Set up finishes. Update only: no shader rebuild, no Set up again

Mods

  • Added a Mods tab to the game's own Settings: pick a mod, switch it on or off (applies at the next start), see its state and change its settings, which reach the mod at once
  • Mods can now take screenshots (without the game's overlay menus in them) and react to keyboard keys
  • Mods can tint the final picture (colour presets, colorblind filters), show a picture beside their messages, and make HTTPS requests to the sites their own description names (no redirects, cookies or sign-in)
  • Added Start without mods (in the notice after the game stopped unexpectedly, and in Settings > About > Troubleshooting) for one start with every mod left out; the game's Mods tab now shows what each mod holds, whether it changes gameplay, the sites it talks to, its checksum and a switch waiting for the next start; a data mod that replaces a shader file says so; and pkp.log lists every mod at start
  • Changing mods that need other hook points now translates only the game part they touch: a plan with main-only points no longer redoes the other three parts (on PC: about 4.5 minutes for main-only points, under a minute for points outside main)
  • Mods can hide the game's HUD, menus and markers while the 3D picture stays (Hide HUD, Photo Mode)
  • Community Achievements is now on by default and locked: the launcher installs it from the mod hub (when the game is set up and the hub can be reached) with sharing on, and keeps both on. Unlock (Mods page or Achievements page) explains what switching it off costs (your achievements and stats are no longer recorded; without sharing they are not counted in the community stats) before it lets you switch it off or remove it; Lock turns it back on. Once unlocked and removed, it stays removed. The game's Mods tab shows the locked switch and setting read only. Update only: no shader rebuild, no Set up again
  • The launcher's Mods page now has Browse on, with the Modtopia mod hub's list: filter by group, open Details (the whole description, the settings a mod adds, game versions, download size and links), see which mods are Tested on this game version, and install or update one with a single question. Update mods by themselves (off unless you switch it on) is on the Installed tab too. The mods folder gets a short README.txt

Launcher

  • Alpha builds (in-house tests, shared by link) are no longer listed or offered on any channel
  • New Achievements page: the Modtopia community tracker in the launcher, with the achievements grouped as the hub lists them, how many players have each one, the rarest right now, and which ones you earned (from the Community Achievements mod). It also shows whether the mod is installed, on and sharing, and can switch it or its sharing on. The launcher only reads the counts and sends nothing. Update only: no shader rebuild, no Set up again

Linux

  • The game runs natively on Linux: no Proton, no Wine. The download is PokopiaRecomp-<version>-linux-x64.tar.gz, with the launcher as an AppImage and the runtime as libpkp_rt.so, the same runtime the Windows build links as pkp_rt.dll
  • The runtime reaches the system directly instead of through the Windows API: runtime/src/os/ holds a POSIX layer for files, memory mappings, sockets, threads, timers, paths and processes, and SDL3 plays the audio and opens the window. pkp is linked from the player's own dump with the bundled Zig, as on Windows
  • libpkp_rt.so needs glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, SteamOS 3) and nothing else: SDL3 is linked in, and every other backend library is opened at run time, so a missing one switches that backend off instead of failing the start
  • The defaults that fix a Linux kernel or Mesa behaviour now ask the kernel, not Wine: a kernel submission's pool walk, the lazy and shadow pool imports, the submit thread and its batching, the short sleep's timed address wait, the graphics pipeline library upgrade, the loop guard and the pipeline cache save all apply to the native build, which is what the Proton build had
  • Write tracking arms a whole range with one mprotect instead of one per 4 KiB page (a 10 MiB arm measured 3132 us -> 34 us), and the timed address wait is a futex, so the game's ~100 us GPU-fence polls no longer keep two cores busy
  • Steam Deck: add the AppImage as a non-Steam game. An AppImage leaves the graphics stack to the host on purpose, so it needs libEGL, libGL, libGLESv2 and libvulkan, which every desktop and SteamOS ship
  • Mods reach the internet as they do on Windows: the host HTTP client loads the system's libcurl at the first request (every desktop distribution ships it, and macOS keeps it in the dyld shared cache), so an HTTPS request to a site the mod's description names is answered. The rules are the Windows ones: https anywhere, plain http only to localhost, no redirect, cookie or sign-in, TLS 1.2 or later, a 256 KiB answer cap and a time limit per step. Nothing links libcurl, so a host without it refuses the request (MT_ERR_STATE to the mod) instead of failing the start
  • Still not: FSR 3 and DLSS. Both are Windows-only SDKs and the native build turns them off, where the Proton build had them; FSR 1 and NIS are plain compute shaders and still run. Also Link Play against a peer and a real gamepad

macOS

  • The game runs natively on Apple silicon: libpkp_rt.dylib, a pkp linked from the player's own dump, Metal through MoltenVK, CoreAudio for sound and SDL3 for the window
  • The download is one zip, Recompia-<version>-macos-arm64.zip, whose root is PokopiaRecomp-<version>/: PokopiaLauncher, tools/ and libpkp_rt.dylib. There is no .app and no signature: unpack it anywhere, start PokopiaLauncher, allow it once in System Settings > Privacy and Security, and it updates itself in place from then on
  • Vsync is on by default: without it MoltenVK presents immediately, frames show mid-refresh, and a MacBook flashes partly drawn pictures
  • pkp carries its own Metal shader-cache identity (an Info.plist linked into it, one per game folder). Without one it shared a cache folder with every other program outside an app bundle, and a start compiled every pipeline again whenever one of those was running
  • A frame limit holds through loading screens too, the game's own thread synchronisation is ordered the way Apple's cores need it (LDAR/STLR), SHA-1 uses the ARMv8 instructions, and the runtime's write tracking follows the host's 16 KiB pages, so a texture the game rewrites is not read back stale
  • The guest address space is reserved in pkp's Mach-O header as a zero-fill __GUEST segment: libmalloc's xzone allocator takes about 24 GiB of it at random addresses before main runs
  • Mods reach the internet here too: the host HTTP client is the same libcurl one the Linux build uses, and macOS keeps libcurl in the dyld shared cache, so nothing is bundled for it
  • Still not: the two in-game movies (they are VP9 in WebM and no run has reached one yet), Link Play against a peer, and a signed and notarized .app — the zip is unsigned and its note covers the one-time Open Anyway. In the world the GPU is the limit: about 25 fps on an M3 at 1080p internal

Docs

  • docs/linux-port.md and docs/macos-port.md describe both ports, and docs/macos-optimisations.md records what is tuned, what is not, and how to measure it

How to report

Open a bug report, choose Testing as the channel, say which version you have, and attach pkp.log (and setup.log if Set up ran). Thank you for testing.

Don't miss a new Recompia release

NewReleases is sending notifications on new releases.