Skip to content

Releases

Pokopia Recomp 0.12.0-beta.1 (Testing)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 18:26
6b18177

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...
Read more

Pokopia Recomp 0.12.0-alpha.1 (Mods Alpha)

Choose a tag to compare

@featureJosh featureJosh released this 12 Nov 18:39
c5c3a30

Mods alpha: an in-house test build

This is an alpha build, not in the launcher. No launcher channel lists it or offers it as an update. Download the zip below and unpack it over your install (or into a new folder). After installing, press Set up again once: it relinks the game with the new runtime. Your saves and shaders are kept; no shader is translated again. It holds everything merged since 0.11.1. Please report anything that looks or plays differently from 0.11.1, with pkp.log.

The launcher in this build calls itself a development build and offers no updates. Install the next public release from its release page.

What to try

Community Achievements (on by default, locked)

  • At the first launcher start the launcher installs the Community Achievements mod from the mod hub and switches it on, with sharing on. The game must be set up and the hub reachable; with no internet it tries again at the next start.
  • The mod and its sharing are locked. Unlock (on the Mods page or the Achievements page) tells you what switching it off costs before it lets you: your achievements and stats are no longer recorded, and without sharing they are not counted in the community stats. Lock turns both back on. If you unlock and remove the mod, it stays removed.
  • The game's own Settings > Mods tab shows the locked switch and setting read only.

New Achievements page in the launcher

  • All 29 community achievements, grouped as the hub lists them, with how many players have each one, the rarest right now, and which ones you earned (with the date).
  • Everything stays in the launcher: the mod installs from the page, and the pictures' licence opens in the launcher. The launcher only reads the counts; the mod is the only one that sends anything.

Mods page: Browse is on

  • The Modtopia mod hub's list, with group filters, a Details dialog (whole description, the mod's settings, game versions, download size), a Tested tag for mods tested on 2.0.1, and install or update with one question.
  • Update mods by themselves (off unless you switch it on).

For mods

  • Mods can hide the game's HUD, menus and markers while the 3D picture stays (Hide HUD, Photo Mode). Please check movies and the handheld 1600x900 stretch with such a mod on.
  • Start without mods: one start with every mod left out. It is in the notice after the game stopped unexpectedly, and in Settings > About > Troubleshooting.
  • The game's Mods tab shows what each mod holds, whether it changes gameplay, the sites it talks to, its checksum, and a switch waiting for the next start ("Off from next start").
  • A data mod that replaces a game file holding shaders says so (its first run may miss some graphics).
  • pkp.log lists every mod at start, plus the gameplay mods every Link Play player needs.

Also since 0.11.1

  • Item editor (experimental) in Settings > Gameplay, off by default. Back up your save first.
  • Aspect Ratio setting (Auto, 16:9, 16:10, 21:9, 32:9); the old black-bars toggle is now called Letterbox (#564).
  • Fixed the Nearest upscaler with Scene Resolution below 100% looking blurry (#571).
  • Fixed Set up failing at "Linking pkp.exe" after a power cut during an earlier Set up.

How to report

Open a bug report, choose Testing as the channel, say you are on the mods alpha (0.12.0-alpha.1), and attach pkp.log (and setup.log if Set up ran). Thank you for testing.

Checksums (SHA-256)

0b1c068d73696ebb681db413e62af76e1e1b74713f74933bfb3da8ceacba6d77  PokopiaRecomp-0.12.0-alpha.1-win64.zip

Pokopia Recomp 0.11.1 (build O: Ocelot Hotfix a1)

Choose a tag to compare

@github-actions github-actions released this 12 Nov 05:05
8cc009e

Update: press Update, then Set up again once (the game code is translated again for the mods' hook points, several minutes). Your shaders and saves are kept; no shader is translated again.

Highlights

  • Fixed internet Link Play: 0.11.0 sent hosts and visitors to an old address of the official relay, so no room could be opened or joined
  • Added Modtopia mods: Recompia now runs mods made for Modtopia, the mod loader shared with Pokopia Native

Link Play

  • Fixed the Internet choice reaching the official relay: the launcher now uses the relay's permanent address (the game log said "the relay does not answer")
    • Still on 0.11.0? Type 204.216.111.91:47610 under Link Play > Advanced > Use my own relay or address

Mods

  • Added Modtopia mods: the same .pkmod files work in Recompia and Pokopia Native
  • Added a Mods page in the launcher: switch your mods on and off, change their order and settings, and remove them. Put mods into the mods folder to install them
  • Added a permission step: a mod's code runs only after you allow it on the Mods page; a new or changed mod asks again. Mods with only files need no permission
  • Added a Set up again prompt when your mods need new hook points (a few minutes; shaders and saves are kept)
  • Link Play: everyone in a session needs the same gameplay mods; the Link Play page lists the ones you have on

Launcher

  • Faster Set up again after an update: only the parts of the game code that changed compile again (one new hook point: 231 ⇒ 9 of 231 parts); the rest come from the compile cache
    • When an update only changes the runtime, Play says it is a quick relink (about a minute) instead of a 7-minute rebuild
    • The first rebuild after this version still compiles everything once, to fill the cache

Pokopia Recomp 0.11.0 (build O: Ocelot)

Choose a tag to compare

@github-actions github-actions released this 12 Nov 01:01
999d368

Update: press Update, then Set up again once. It rebuilds the game code with a new, leaner translation, several minutes. Your shaders and saves are kept; no shader is translated again.

Ocelot brings Recompia's own official relay server, so friends anywhere in the world join with just a room code, and a big step up in Steam Deck performance. It also fixes the random "graphics device was lost" crash on Steam Deck and Linux, brings Joy-Con 2 mouse mode back and lets more Pokémon live in your town.

Highlights

  • Official Recompia relay server: internet Link Play now needs only a room code. The host shares the code, visitors pick Visit and type it, from anywhere in the world: no addresses, no port forwarding
  • Steam Deck performance, elevated: about 52 fps where 0.10.3 gave about 44, and much shorter slow frames (the slowest 1 % now take about 26 ms, before about 38 ms). Measured on a Steam Deck OLED, in the world, vsync off
  • Fixed the random "The graphics device was lost" crash on Steam Deck and other Linux PCs, and the full freeze on NVIDIA under Linux (#531, #533)

Link Play

  • The launcher's Internet choice now uses the official Recompia relay by default. Your own relay, this PC's relay and a direct address are still there under Advanced
  • The docs have a step-by-step Link Play guide with the launcher's current names

Performance

  • The graphics work of a frame reaches the GPU in pieces while the rest is still being prepared, so the GPU starts several milliseconds earlier in each frame (Steam Deck and other Linux handhelds)
  • Less processor time spent by the game's helper threads: fewer wake-ups, the driver's shader cache is written at most every 30 seconds, and a guard that could do nothing under Proton no longer runs there
  • Shorter waits between the game's own threads on Linux handhelds: short sleeps end on time, and a wait ends as soon as what it waits for has happened
  • Fewer redundant copies of graphics memory and less repeated work for each draw
  • The game's own code is translated to leaner machine code: the game's registers and condition flags live in processor registers instead of memory wherever no other code can look at them. This is the change that needs Set up again
  • On a Windows PC the frame rate is the same as in 0.10.3

Frame pacing

  • Fixed uneven frames with a frame limit: now and then one frame waited twice for the limiter and the next one not at all
  • New, off by default: vblank lock for a frame limit of half the screen's refresh rate with vsync on, for example 45 fps on the Steam Deck OLED's 90 Hz screen. Every frame is then shown for the same number of refreshes instead of an occasional long frame followed by a short one. To try it: vsync on, frame limit 45, then vblank_lock = 1 under [latency] in pkp.ini

Display

  • Frame generation (AMD FSR 3.1), added in 0.10.3, is removed for now: it has a bug that can't be fixed yet (#529)

Gameplay mods

  • New, experimental: a Pokémon resident cap up to 64. On by default at 31 residents (the game's own limit is 25); set it from 25 to 64 in the launcher's Settings > Gameplay, or with pokemon_cap_limit in pkp.ini. The game has 64 actor slots in all, so a high cap leaves less room for visitors and temporary spawns, and not every resident is sure to be out at once. Thanks to SpiderNic96 for the research and first implementation (#524)

Controls

  • Joy-Con 2 mouse mode is back: press the middle mouse button in play to point and click; placing and breaking land on the block under the pointer (left click is the Joy-Con's R, right click its ZR). Press it again to go back to camera aim. The Mouse Mode Key row is back in Settings > Mouse

Launcher

  • New Show on Discord while playing in Settings: shows "Playing Recompia" and how long you have played on your Discord profile while the game runs. Off by default; Discord must be open. Thanks to darkxex (#511)
  • The launcher shows Recompia branding by default (#532)
  • The Discord links in the launcher, the READMEs and the website use the new invite, discord.recompia.com
  • When the shader translator closes without a word during Set up under Proton ("Translating shaders: 0 of 99012", #530), Set up now runs that batch again with lighter settings (workstation memory management, 2 jobs) and keeps them for the rest of the shaders. setup.log also shows the translator's last steps when it fails

Game

  • Fixed the random "The graphics device was lost" crash on Steam Deck and other Linux PCs (Proton), and the matching full freeze on NVIDIA under Linux (#531, #533)
    • Before: the game's copy of graphics memory could keep an old value next to a block the graphics card was still writing, and a compute shader then looped for seconds on it
    • Now: that memory is kept up to date, and the game's light-list and two other compute loops can no longer run past the table they walk. [nvn] loop_guard = off turns the second part off
  • Fixed the Pokédex tabs showing "Time" as their title after the Settings screen had been opened (#494)

For bug reports

  • New lines in pkp.log every 10 seconds: tcpu (processor time by thread) and, with present_stats = 1 under [latency], pacing: present timing (how many refreshes each frame was shown for)
  • If something breaks, these switches in pkp.ini bring back the earlier behaviour one at a time, which helps to find the cause: gpu_split_ms = 0 and pool_reg_skip_same = false under [nvn], poll_wait = false, short_sleep = sleep and early_wake = off under [kernel], boundary_count = render under [latency]
  • To compare against the old translation of the game code: set the environment variable PKP_LOCALS=off and press Set up again

Pokopia Recomp 0.10.4-beta.1 (Testing)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 09:58
e4a7ad0

Changes in this build

  • #513 Merge main (0.10.3) into testing
  • #492 Frame monitor: notice a slowdown that starts partway through a run
  • #511 Launcher: Discord Rich Presence while the game runs
  • #501 Options: Pokédex tabs no longer titled Time (#494)
  • #500 Clean up changelog by removing unnecessary details
  • #491 Merge main (0.10.2 and after) into testing
  • #484 Merge main (0.10.2 Numbat) into testing
  • #474 Docs: take three reverse-engineering notes documents out of the repository
  • #473 Guard: keep game content and reverse-engineering notes out of the repository
  • #468 Launcher: choose your own background picture (Testing channel)
  • #466 CHANGELOG: the memory-readings entry matches the Proton fix
  • #465 Docs: a 15-minute check for Steam Controller (2026) owners
  • #464 Loop guards for the other three light-list shaders (#309)
  • #461 Launcher: fills the screen and uses finger-sized controls in Steam game mode
  • #460 CONFIG: the memory limit default is 16 GB for Pokopia
  • #458 Texture prep: the log line counts why an upload got no background job
  • #455 Memory guard: under Proton, compare the pagefile usage when the private commit reads 0
  • #448 Controls: Steam Controller note for Linux players
  • #445 Gamepad log: one line with what the pad offers
  • #451 CHANGELOG: note for AMD handheld testers
  • #442 Linux handhelds: pkp.log starts with one host facts line
  • #444 CHANGELOG: regressions and what to test for the AMD handheld build
  • #437 Launcher: a Layout panel to move the sidebar and Home sections
  • #443 Settings > Testing: Copy handheld report
  • #440 Host: more AMD handhelds recognised, from one board table
  • #439 Pool copy: the log line says why auto chose on or off
  • #438 Memory guard: log both commit readings, one counter helper
  • #441 Merge main into testing
  • #436 Report a GPU wait that starts mid-run, and show the shader translator's error in setup.log
  • #433 Launcher: Koi's Camp comes back, Meadow is a fourth colour, lighter pictures
  • #397 Runtime: change one ini value in place (config_save_key), first step of the Gameplay tab
  • #412 Steam Controller icons fit the Steam Controller (2026)
  • #414 Pad: bind the Steam button and the extra (quick-access) button
  • #416 Options: pad button remap rows in the game's Controller tab
  • #419 Link Play: Copy invite and Paste invite (one message for address, room code and mode)
  • #420 Link Play: Test connection, Check my setup and Friends on my Tailscale
  • #422 Replace fan art and the game-styled logo with placeholder art
  • #423 Comments and scripts: drop the earlier game's name and a personal path
  • #417 pkp_ui_backdrop: state the goal of the 4:3 work in the header
  • #415 Merge main into testing: readback deferral on by default (#276), frame trace lock fix
  • #276 Brings Josh's PR #404 (deferred NVN readback on by default for the 30x16 scene-colour probe, the readback candidate's test and notes removed) and PR #407 (frame trace without the name lock) into testing.
  • #411 Log when every frame waits on the GPU from the start of a run (#405)
  • #413 4:3 Fix: full-screen UI backgrounds fill narrower-than-16:9 screens (experimental, off by default)
  • #408 Show which gameplay mods are on (pkp.log and Settings > Gameplay)
  • #406 Changelog: gameplay extras are off by default in the Testing build
  • #403 Story co-op: the host's story keeps going during a session (pokopia-native 1.4.0)
  • #401 Link Play: pokopia-native's co-op module at 1.4.0 (port forwarding, room code out of the log)
  • #402 NVN: loop guards for three compute shaders (pokopia-native 1.4.0)
  • #400 Merge main into testing: gameplay mods on by default, shadow quality, pool import retry
  • #395 Merge main (new folder layout) into testing, carrying the off-by-default extras and the Testing tab
  • #391 Touch Menu button automatic again (handhelds keep a way into the menu)
  • #390 Extras are off by default: mouse in menus, taller view, touch Menu button, shader note
  • #389 Launcher: Testing tab (log export and viewer, experimental features)
  • #388 Merge main (0.9.0) into testing, with launcher arrow-key navigation (#362)

Your own launcher background

  • The launcher can use a picture from your PC as its background (Testing channel)
    • Before: the launcher always showed its built-in pictures
    • Now: open Layout in the sidebar, then Appearance > Choose picture...; pick a PNG, JPEG or WebP, set Dim so the text stays easy to read, and Reset to default brings the built-in picture back; the picture stays on this PC and is never uploaded
    • Still not: no animated pictures, and no different picture for each page

Update: press Update, then Set up again once. It rebuilds the game code for two new hooks, Story co-op and the shoulder camera. Your saves and shaders are kept; no shader is translated again. A later build that adds no new hooks should not ask again.

Testers on AMD handhelds, please read

This Testing build adds logging and a few device checks, and changes no frame-rate settings. We need your logs to learn what helps on the Steam Deck, ROG Ally, Legion Go and similar devices. Play for about twenty minutes the way you normally do, then open Settings > Testing and press Copy handheld report: it copies one short block with your device, memory, graphics driver, frame summaries and any problems, with user names, folders and addresses removed. Paste it into a bug report and tell us the device, the system (SteamOS, Bazzite and so on), the power mode, your frame cap and what you were doing. If the picture drops to about 10 fps and stays there, or the game freezes, say so and restart the device. This is a Testing build: some rough edges are expected, and your reports are how Stable gets better.

Why textures are not prepared in the background

  • pkp.log now says why the background texture preparation is rarely used
    • Before: the nvn.texprep line only said "used 0, no job N"
    • Now: the same line also counts the reasons a texture upload got no job: too small, too large, not block-compressed, GPU off, never considered, idle, stale, or a transcode still running
    • Still not: nothing else changes; the texture preparation behaves exactly as before (the 480 unknown-proc lines at startup stay as they are for now)

Memory limit under Proton

  • The settings reference now says the memory limit defaults to 16 GB for Pokopia (it said 8 GB, which is the default for other games)
  • The game's memory limit ([memory] limit_gb) now works under Proton
    • Before: under Proton the reading the limit compares (private commit) can be 0, so the limit never triggered even when the game used many gigabytes; pkp.log showed footprint 0.00 GB next to a real pagefile usage
    • Now: when the private commit reads 0, the limit compares the pagefile usage (resident anonymous memory plus swap), so footprint shows the real figure and the limit can trigger before the device runs out of memory; the first time it happens pkp.log says so
    • Still not: the limit is 16 GB by default, so on a normal run nothing changes except the log; if the game is stopped at the limit, a report is written and the numbers in it are the same as before

Regressions and known problems

  • The Lenovo Legion Go, Go 2, ROG Xbox Ally and MSI Claw A8 now start in handheld mode (picture size, the game's lighter handheld graphics settings, controller prompts, short waits under Proton). This has not been confirmed on those devices yet; if it looks worse than before, set [am] operation_mode = docked or [host] handheld = off in pkp.ini
  • Everyone needs Set up again once for this build (two new game hooks). Tell us how long it took and on which device
  • The Steam Controller (2026) is still not detected under Proton; use another pad there

What to test

  • On any AMD handheld (Steam Deck, ROG Ally, Legion Go, Legion Go S, Xbox Ally, Claw A8), under Proton or Windows: play 10 minutes, then send the lines of pkp.log that contain host: handheld, pool_copy, footprint and gamepad. Say which BIOS GPU-memory setting you use if you changed it. They show which handheld rule matched, why pool copy is on or off with the graphics memory size, and the two memory readings
  • On a Legion Go, Go 2, ROG Xbox Ally or MSI Claw A8: check that pkp.log says host: handheld: yes, and tell us whether the picture size, the controller prompts and the frame rate feel right compared with the previous build
  • If the frame rate falls partway through a session and stays low: send the pkp.log lines that contain frames have been slow and the hitch: lines around them (each now ends with the share of time spent waiting), and say how long into the session it began
  • Launcher background (Layout > Appearance > Choose picture...): pick a PNG, JPEG or WebP, move the Dim slider, press Reset to default; tell us if the text is still easy to read
  • Shoulder camera (Settings > Gameplay: Shoulder camera: side and height) and frame generation (Settings > Display): tell us what you set and what looked wrong
  • If Set up stops on a Steam Deck or another Linux handheld: send shader_cache/stage/harness_error.txt and setup.log
  • If you own a Steam Controller (2026): follow the 15-minute check in docs/steam-controller-check.md (which grip is which, whether the small View and Menu buttons are the right way round, the trackpad clicks) and send the table with the exported logs

Controller log

  • pkp.log now lists what a connected controller offers: trackpads (and their fingers), rumble, lights, battery, extra buttons (grips, trackpad clicks, touch sensors) and its USB ids; the motion sensors are on the line before it. It is a note for bug reports; nothing about how controllers behave changes

Memory limit

  • pkp.log now shows both memory readings (private commit and pagefile usage) in its footprint line and in the 75% warning, and says once when the private-commit reading is 0
    • Before:...
Read more

Pokopia Recomp 0.10.4-alpha.1 (Deck Rehaul)

Choose a tag to compare

@github-actions github-actions released this 11 Nov 18:57

Changes in this build

Experimental build. It is not offered as an update: download the zip from this release, or pick this version in the launcher on the Testing channel. It holds the performance work for the Steam Deck on top of 0.10.3. After installing it, press Set up again once: it rebuilds the game code with the new translation, several minutes. Your shaders and saves are kept; no shader is translated again. Please report anything that looks or plays differently from 0.10.3, with pkp.log

Performance (measured on a Steam Deck OLED, in the world, vsync off)

  • Higher and steadier frame rate: about 52 fps where the build before this work gave about 44, and the slowest frames are shorter (the slowest 1 % took about 26 ms, before about 38 ms)
  • The graphics work of a frame now reaches the GPU in pieces while the rest is still being prepared, so the GPU starts several milliseconds earlier in each frame (Steam Deck and other Linux handhelds)
  • Less processor time spent by the game's helper threads while you play: fewer wake-ups, the driver's shader cache is written at most every 30 seconds, and a guard that could do nothing under Proton no longer runs there
  • Shorter waits between the game's own threads on Linux handhelds: short sleeps end on time, and a wait ends as soon as what it waits for has happened
  • Fewer redundant copies of graphics memory and less repeated work for each draw
  • The game's own code is translated to leaner machine code: the game's registers and condition flags now live in processor registers instead of memory wherever no other code can look at them. This is the change that needs Set up again

Frame pacing

  • Fixed uneven frames with a frame limit: now and then one frame waited twice for the limiter and the next one not at all
  • New, off by default: vblank lock for a frame limit of half the screen's refresh rate with vsync on, for example 45 fps on the Steam Deck OLED's 90 Hz screen. Every frame is then shown for the same number of refreshes instead of an occasional long frame followed by a short one. To try it: set vsync on and the frame limit to 45, then add vblank_lock = 1 under [latency] in pkp.ini
  • On a Windows PC the frame rate is the same as in 0.10.3

For testers

  • The new translation of the game code cannot be switched off in pkp.ini. To compare, set the environment variable PKP_LOCALS=off and press Set up again: that builds the game code the way 0.10.3 does
  • New lines in pkp.log every 10 seconds: tcpu (processor time by thread) and, with present_stats = 1 under [latency], pacing: present timing (how many refreshes each frame was shown for)
  • If something breaks, these switches in pkp.ini bring back the earlier behaviour one at a time, which helps to find the cause: gpu_split_ms = 0 and pool_reg_skip_same = false under [nvn], poll_wait = false, short_sleep = sleep and early_wake = off under [kernel], boundary_count = render under [latency]

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.

Pokopia Recomp 0.10.3 (build N: Newt Hotfix a3)

Choose a tag to compare

@github-actions github-actions released this 11 Nov 03:09
9c8c365

Update: press Update, then Set up again once. It rebuilds the game code for the shoulder camera's new hook, a few minutes. Your shaders and saves are kept; no shader is translated again.

The Newt hotfix fixes a start-up crash on some AMD graphics, loading screens fast-forwarding, camera aim picking the wrong block and the launcher's Quality preset, and adds an over-the-shoulder camera, AMD FSR 3.1 frame generation, six button icon themes and a Gameplay tab in the game's own Settings.

Highlights

  • Fixed the game closing at start with 0xC0000409 on some AMD graphics (#487)
  • Fixed loading screens and the boot screen fast-forwarding above 60 fps
  • Added an over-the-shoulder camera and AMD FSR 3.1 frame generation

Display

  • New Frame generation (AMD FSR 3.1): an extra frame between the game's own, made from the 3D picture only, so the HUD is not touched. Off by default: switch it on in Settings > Display (the launcher offers to download AMD's amd_fidelityfx_framegeneration_vk.dll), in the game's own Settings, or on the F1 Display page. It takes effect the next time the game starts
    • The frame-rate counter then reads FPS 60 | FG 120: the frames the game renders, and the frames on the screen
    • Needs the render resolution to be Match window, or to have the window's shape. Update only: no shader rebuild

Gameplay mods

  • Every gameplay mod now has its switch in the launcher's Settings > Gameplay, built from the game's own list of mods, so a new mod shows up there by itself
    • Search in the crafting screen is now optional: off by default, switch it on in Settings > Gameplay. If you already set it yourself, your choice is kept
    • Camera aim has a new Extra reach in blocks setting under it (Off, 1 to 4). Extra reach is now off by default, so abilities and tools use the game's own range; pick a number to reach farther, as 0.10.x did with 2
    • Sort each time the bag opens stays under the Sort button, off by default
    • Quit Game on the title screen stays on, without a launcher switch (title_quit in pkp.ini still turns it off)
  • Settings: a Gameplay tab in the game's own Settings screen, with the same switches as the launcher's Settings > Gameplay (and how much speed a running jump keeps); a change is saved to pkp.ini and applies at the next start

Launcher

  • Fixed Quality preset in the launcher leaving Shadow quality and Anti-aliasing as they were
    • Before: picking High, Ultra or Desktop PC in Settings > Graphics set only the texture settings (and the render resolution and frame limit for the device presets), so the game kept the old shadows and anti-aliasing
    • Now: the preset sets them too, as it does in the game: High gives High (2x) shadows and SMAA High, Ultra gives Very High (3x) and SMAA Ultra, Desktop PC gives Very High (3x) and SMAA High; the other presets give the game's own shadows and no anti-aliasing

Game

  • Added an over-the-shoulder camera: move the view to the side and up so your character no longer blocks it
    • Two distances in blocks in the game's Settings > Gameplay tab: Shoulder camera: side (right is positive, left negative, -2 to 2) and Shoulder camera: height (-1 to 2), saved as camera_shoulder_side / camera_shoulder_height in pkp.ini; both are 0 by default, which is the game's own camera. A change takes effect as soon as you leave the Settings screen, no restart. The view stops short of walls and eases back out, and camera aim still hits what the crosshair points at. Needs Set up again once (new game hook)
  • Fixed camera aim's selection jumping between the block you aim at and the way you walk, with Rock Smash, Cut and the other swing tools, when the aimed block went in and out of reach while moving
    • Now: without a block in reach the selection stays in front of you in the camera's direction, at the game's own distance
  • Camera aim reaches up and down as far as it reaches sideways: a block above or below you under the crosshair is selected within the same range (1 block plus the extra reach), also past the two rows up and one row down the game itself allows
  • Fixed camera aim sometimes selecting a block next to the one under the crosshair, at some camera angles and heights
    • Before: for a block right next to you the game still picked the cell one straight step ahead, so a block diagonal to you (or at an angle that rounded the other way) wasn't the one selected
    • Now: the selection is the block the crosshair's ray hits, next to you or farther with extra reach
  • Fixed the game closing at start ("pkp.exe exited with code -1073740791 (0xC0000409)") on some AMD graphics (#487)
    • Before: every compute shader asked the driver to run 32 wide, even one with a workgroup too big for that on AMD; Vulkan doesn't allow the request then, and AMD's driver could close the game while preparing it
    • Now: a compute shader whose workgroup doesn't fit at 32 wide runs at the driver's own width; the others still run 32 wide
  • Fixed the boot screen and some loading screens fast-forwarding above 60 fps
    • Before: while the game loaded, the frame limit was dropped, so the loading animations ran as fast as the PC could draw (300 fps or more on a fast PC) and the game's 60 fps hold for loading and events was skipped
    • Now: loading screens keep the frame limit and the 60 fps hold, so they play at normal speed. A world load takes under a second longer. To bring the old behaviour back, turn on Fast loading screens in the launcher (Settings > Game > Experimental), or set [display] unpaced_loading = 1 in pkp.ini
  • Added six Button Icons themes: Nintendo Switch, Nintendo Switch 2, Wii U, Steam Frame, Valve Index and Touch, and the Steam Deck theme now uses real Steam Deck art
    • Before: the prompts could show the game's own icons, Xbox, PlayStation, Steam Controller, Steam Deck (the Steam Controller's art with Xbox View and Menu symbols) or keyboard and mouse
    • Now: pick any of them in the game's Settings (Button Icons), on the F1 Controller tab, in the launcher's Controls tab or with [prompts] style in controls.ini (switch1, switch2, wiiu, steamframe, index, touch). All are the white Kenney icons and follow your button remapping. Steam Deck shows the Deck's own L1/R1, L4/L5/R4/R5 back buttons and trackpads. Valve Index shows A, B, the triggers and the trackpad (its left stick stands for the d-pad); Touch shows gestures (tap, two-finger tap, swipes, pinch)
    • Also: the launcher's Controls tab (under Button icons) and the F1 Controller tab now show a preview of the chosen theme: each Switch button with the icon it gets. F1 follows your current remapping and key bindings; the launcher shows the default ones
    • Still not: Automatic never picks the new themes on its own (a Switch pad still shows the game's own icons); buttons a controller doesn't have keep the game's icon

Pokopia Recomp 0.10.2 (build N: Numbat Hotfix a2)

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:43
3354bf3

Update: press Update, then Set up again once. It rebuilds the game code for Clock Notation's new hook: a few minutes coming from 0.10.1, longer if you skipped 0.10.0's Set up. Your shaders and saves are kept; no shader is translated again.

The Numbat hotfix brings back the colourful logo, translates the launcher into nine languages, fixes an AMD start-up crash and BetterJoy input loss, and adds Time and Events tabs to the game's Settings.

Launcher

  • Set up now says why the shader translator stopped on Steam Deck and other Linux PCs (#366)
    • Before: under Proton the translator's error text never reached setup.log, so a failed "Translating shaders" step showed only an exit status and an empty "Last output"
    • Now: the translator writes its error to shader_cache/stage/harness_error.txt and Set up copies it into setup.log; if the translator never started at all, the log says Proton or Wine failed before it. Set up also checks that the translator's main files are present and not empty before it starts
  • The colourful Recompia logo and the green R icon are back in the launcher, the README, the window and taskbar icon and the Steam shortcut (the plain placeholder logo and icons from 0.10.1 are gone)
  • The launcher is now translated into Spanish, English, Japanese, French, Italian, German, Korean, Simplified Chinese and Traditional Chinese. It follows the system language by default (English when it cannot tell), and Settings > About > Language changes it
  • Fixed Set up finishing at once while the game still refused to start with "pkp.exe and pkp_rt.dll come from different releases", after an update that replaced only some files
    • Before: the launcher compared pkp.exe only with the build tools in the tools folder. A new pkp_rt.dll next to old tools (files copied by hand, or a zip extracted without its tools folder) looked current, so Set up did nothing and the game refused the exe
    • Now: pkp.exe and pkp_rt.dll both carry the runtime API they were built for, and the launcher reads it before Play and Set up. An exe from another release than the dll is relinked by Set up; a dll from another release than the tools is named on the main page, with what to do (extract the whole release over the folder)

Game

  • Fixed the game closing right at start ("pkp.exe exited with code 4") on some PCs with an AMD graphics card
    • Before: when an older AMD driver was still installed next to the current one (common with a Ryzen processor's own graphics), the card was listed twice and the game could pick the old driver's copy, which crashed inside the driver on the first frames
    • Now: the copy with the older driver is skipped and the log says so; reinstalling the graphics driver removes the leftover
  • Added a Time tab and an Events tab to the game's own Settings screen, for moving the game's clock without restarting (#385)
    • Before: the game's date and time came from the PC, and the launcher's event preset or clock_offset only applied at the next start
    • Now: Time has Time Travel (Off follows the real time) and Year, Month, Day, Hour and Minute rows; the clock changes when you leave the screen. Events lists the events of pokopia_events.tsv (one line each: start date, end date and name, separated by tabs); pressing one sets the clock to noon on its first day, marks it Chosen (one at a time) and fills the Time tab. Nothing is written to your save or to Settings
    • Still not: tab icons of their own (both tabs use the Game tab's), and a launcher button that fetches the event list
  • Added Clock Notation to the Time tab: Game, 12 hour or 24 hour for the time of day the game shows
    • Before: the game's language chose the notation (English showed 12 hours with AM/PM whatever the PC's region), and nothing in the settings changed it
    • Now: pick 12 hour or 24 hour ([tweaks] clock_format in controls.ini: auto, 12h or 24h); Game keeps the language's own. A screen that is already open shows the new notation after you close it and open it again
    • Still not: a launcher row for it
  • Button prompts: the face buttons are plain white, like the rest of the prompt icons
    • Before: Xbox, PlayStation, Steam Controller and Steam Deck prompts drew A/B/X/Y and cross/circle/square/triangle as coloured buttons
    • Now: they use Kenney's monotone white buttons, matching the bumpers, triggers, d-pad and keyboard icons. Switch prompts are unchanged
  • Fixed the inventory Sort prompt showing L on some screens, where L also turns the page to the tab on the left
    • Before: where Y and R both had an action, the Sort prompt took L; pressing it sorted the panel and switched the tab at the same time
    • Now: Sort is Y in the bag and R in container screens; where both are taken the prompt is click only (left click or the menu pointer), and L only turns the page
  • The F1 menu opens from a controller by clicking both sticks (L3 + R3) (#364)
    • Before: no controller shortcut was set, and the README's example (L + R) is the game's Dive chord, so holding R and L to dive opened the menu instead
    • Now: [overlay] pad defaults to left_stick+right_stick. A controls.ini from an earlier release keeps the value it already has (none = off); set the key to left_stick+right_stick there, or delete the line, to get the shortcut
  • Fixed a controller dropping stick and button input during vacuuming, breaking and Rollout above 30 fps when it goes through BetterJoy (#374)
    • Before: the game sent the controller a new rumble value on almost every frame while it rumbled, about 100 times a second at 100 fps. BetterJoy passes each one to the controller over Bluetooth and stopped reading the stick and buttons while it caught up
    • Now: rumble goes to the controller at most 30 times a second at any frame rate, the rate that already worked at a 30 fps cap
  • The "different releases" message names the runtime API of pkp.exe and of pkp_rt.dll and points to the launcher's main page, since Set up alone cannot always help

Docs

  • The README and the Linux readme are now also in Brazilian Portuguese and European Portuguese, and the README's F1 controller example uses L3 + R3 instead of the Dive chord (L + R)

Pokopia Recomp 0.10.2-beta.5 (Testing)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:00
bd5de0d

Changes in this build

  • #466 CHANGELOG: the memory-readings entry matches the Proton fix
  • #465 Docs: a 15-minute check for Steam Controller (2026) owners
  • #464 Loop guards for the other three light-list shaders (#309)

Update: press Update, then Set up again once (new game hook for Story co-op; your saves and shaders are kept).

Testers on AMD handhelds, please read

This Testing build adds logging and a few device checks, and changes no frame-rate settings. We need your logs to learn what helps on the Steam Deck, ROG Ally, Legion Go and similar devices. Play for about twenty minutes the way you normally do, then open Settings > Testing and press Copy handheld report: it copies one short block with your device, memory, graphics driver, frame summaries and any problems, with user names, folders and addresses removed. Paste it into a bug report and tell us the device, the system (SteamOS, Bazzite and so on), the power mode, your frame cap and what you were doing. If the picture drops to about 10 fps and stays there, or the game freezes, say so and restart the device. This is a Testing build: some rough edges are expected, and your reports are how Stable gets better.

Why textures are not prepared in the background

  • pkp.log now says why the background texture preparation is rarely used
    • Before: the nvn.texprep line only said "used 0, no job N"
    • Now: the same line also counts the reasons a texture upload got no job: too small, too large, not block-compressed, GPU off, never considered, idle, stale, or a transcode still running
    • Still not: nothing else changes; the texture preparation behaves exactly as before (the 480 unknown-proc lines at startup stay as they are for now)

Memory limit under Proton

  • The settings reference now says the memory limit defaults to 16 GB for Pokopia (it said 8 GB, which is the default for other games)
  • The game's memory limit ([memory] limit_gb) now works under Proton
    • Before: under Proton the reading the limit compares (private commit) can be 0, so the limit never triggered even when the game used many gigabytes; pkp.log showed footprint 0.00 GB next to a real pagefile usage
    • Now: when the private commit reads 0, the limit compares the pagefile usage (resident anonymous memory plus swap), so footprint shows the real figure and the limit can trigger before the device runs out of memory; the first time it happens pkp.log says so
    • Still not: the limit is 16 GB by default, so on a normal run nothing changes except the log; if the game is stopped at the limit, a report is written and the numbers in it are the same as before

Regressions and known problems

  • The Lenovo Legion Go, Go 2, ROG Xbox Ally and MSI Claw A8 now start in handheld mode (picture size, the game's lighter handheld graphics settings, controller prompts, short waits under Proton). This has not been confirmed on those devices yet; if it looks worse than before, set [am] operation_mode = docked or [host] handheld = off in pkp.ini
  • The Steam Controller (2026) is still not detected under Proton; use another pad there

What to test

  • On any AMD handheld (Steam Deck, ROG Ally, Legion Go, Legion Go S, Xbox Ally, Claw A8), under Proton or Windows: play 10 minutes, then send the lines of pkp.log that contain host: handheld, pool_copy, footprint and gamepad. Say which BIOS GPU-memory setting you use if you changed it. They show which handheld rule matched, why pool copy is on or off with the graphics memory size, and the two memory readings
  • On a Legion Go, Go 2, ROG Xbox Ally or MSI Claw A8: check that pkp.log says host: handheld: yes, and tell us whether the picture size, the controller prompts and the frame rate feel right compared with the previous build
  • If the frame rate falls partway through a session: send the pkp.log lines that contain waited on the GPU and say how long into the session it began
  • If Set up stops on a Steam Deck or another Linux handheld: send shader_cache/harness_error.txt and setup.log
  • If you own a Steam Controller (2026): follow the 15-minute check in docs/steam-controller-check.md (which grip is which, whether the small View and Menu buttons are the right way round, the trackpad clicks) and send the table with the exported logs

Controller log

  • pkp.log now lists what a connected controller offers: trackpads (and their fingers), rumble, lights, battery, extra buttons (grips, trackpad clicks, touch sensors) and its USB ids; the motion sensors are on the line before it. It is a note for bug reports; nothing about how controllers behave changes

Memory limit

  • pkp.log now shows both memory readings (private commit and pagefile usage) in its footprint line and in the 75% warning, and says once when the private-commit reading is 0
    • Before: only the footprint was shown, so on Linux (Proton) a log reading footprint 0.00 GB could not tell whether the game used no memory or the reading was blind
    • Now: the log names both readings; the limit itself is checked exactly as before
    • Still not: nothing else changes here; the limit itself under Proton is covered by "Memory limit under Proton" above

Launcher in Steam game mode

  • On a Steam Deck, ROG Ally or Legion Go in game mode, the launcher now fills the screen and uses finger-sized controls
    • Before: on a 1080p handheld screen the launcher opened as a small floating window, and its buttons, switches and text were small
    • Now: when Steam game mode is detected, the window starts maximized, every button, menu item, switch and text field is at least 44 pixels tall, and the text is a little larger
    • Still not: this has not been tried on a real handheld yet, and the launcher does not yet have a larger-text setting of its own

Launcher layout

  • Added a Layout button in the launcher's sidebar, beside Colours and Hide sidebar. It opens a panel where you choose how the launcher is arranged: the sidebar on the left, right, top or bottom, or icons only; the order of the sidebar items, and which of them to hide (Home and Settings always stay); comfortable or compact spacing; and whether the news cards and the chips under the Play button (profile, Link Play and Discord) show on Home. Changes show at once, Reset to default puts everything back, and your choice is kept on your PC
    • Before: the launcher had one fixed arrangement
    • Now: the arrangement is yours, and the pad, keyboard and touch screen all work in every position. Notices about a problem, such as a crash or a failed update, are never hidden
    • Still not: you cannot drag parts around freely yet, and the sections of Home other than the news cards and those chips cannot be moved or hidden

Bug reports from Linux handhelds

  • pkp.log now starts with a host facts: line on Linux (Steam Deck, Legion Go, ROG Ally and other handhelds under Proton): kernel, board and BIOS version, CPU, power governor, the graphics memory split (VRAM, GTT, TTM limit), RAM, swap, zram and whether it runs in Gamescope
    • Before: reports did not say how the memory was split or how the power was set, so the performance questions could not be answered from the log
    • Now: the line holds those facts, read only; it never includes serial numbers, your user name, your computer's name or folder paths, and a value the device does not have is left out
    • Still not: it changes nothing about how the game runs; it only helps reports. Not shown on Windows

Graphics driver resets

  • pkp.log now says when every frame of a run waits on the graphics card from the start, which is what a driver reset on a Linux handheld looks like. The game cannot fix it: reboot the device. The README's common problems say so too
  • It also notices a run that starts fine and then slows down: when frames wait on the graphics card for three summary windows in a row, pkp.log says when it began (before, it only looked at the start of a run). It is a note for bug reports, not a fix

Shader setup

  • When the shader translator stops, setup now writes what it said to shader_cache/harness_error.txt and shows it in setup.log and in the error (on Linux, Proton hid it, so the log said only that it stopped)
  • Setup checks that the translator's files are whole before it starts and names what is missing or too short

Screens narrower than 16:9

  • Added 4:3 Fix, a very experimental option in Settings > Testing (Testing channel only, off by default) for 4:3, 16:10 and 3:2 screens: full-screen backgrounds, fades and dimming fill the whole picture instead of stopping at a 16:9 strip in the middle. Menus, text and buttons stay where they were. If you have a 4:3 or 16:10 screen, please try it and send pkp.log with what looked wrong. It needs a restart of the game to take effect
  • pkp.log also states how many megapixels a frame costs at the picture's shape

Link Play invites

  • Added Copy invite and Paste invite to the launcher's Link Play page: the host copies one message (address, room code and mode) and the friends paste it, instead of typing both. A Tailscale address is recognised and set up as internet play, and the host's page now lists the PC's Tailscale address even without a relay. Typing a Tailscale address into Same network now says what to do instead of just refusing it
  • Added Test connection, Check my setup and Friends on my Tailscale to the Link Play page: they say in plain words whether an address answers, what may block friends from joining (firewall, a Public network, client isolation), and which of your Tailscale devices are hosting, with a Join button. They only look and never change anything

Pool copy diagnostics

  • pkp.log now states why pool copy is on or off: whether the host is Wine, the graphics card type and its largest device-local memory heap in MiB, and the 8 GiB limit

M...

Read more

Pokopia Recomp 0.10.2-beta.4 (Testing)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 20:23
62985ed

Changes in this build

  • #461 Launcher: fills the screen and uses finger-sized controls in Steam game mode
  • #460 CONFIG: the memory limit default is 16 GB for Pokopia
  • #458 Texture prep: the log line counts why an upload got no background job

Update: press Update, then Set up again once (new game hook for Story co-op; your saves and shaders are kept).

Testers on AMD handhelds, please read

This Testing build adds logging and a few device checks, and changes no frame-rate settings. We need your logs to learn what helps on the Steam Deck, ROG Ally, Legion Go and similar devices. Play for about twenty minutes the way you normally do, then open Settings > Testing and press Copy handheld report: it copies one short block with your device, memory, graphics driver, frame summaries and any problems, with user names, folders and addresses removed. Paste it into a bug report and tell us the device, the system (SteamOS, Bazzite and so on), the power mode, your frame cap and what you were doing. If the picture drops to about 10 fps and stays there, or the game freezes, say so and restart the device. This is a Testing build: some rough edges are expected, and your reports are how Stable gets better.

Why textures are not prepared in the background

  • pkp.log now says why the background texture preparation is rarely used
    • Before: the nvn.texprep line only said "used 0, no job N"
    • Now: the same line also counts the reasons a texture upload got no job: too small, too large, not block-compressed, GPU off, never considered, idle, stale, or a transcode still running
    • Still not: nothing else changes; the texture preparation behaves exactly as before (the 480 unknown-proc lines at startup stay as they are for now)

Memory limit under Proton

  • The settings reference now says the memory limit defaults to 16 GB for Pokopia (it said 8 GB, which is the default for other games)
  • The game's memory limit ([memory] limit_gb) now works under Proton
    • Before: under Proton the reading the limit compares (private commit) can be 0, so the limit never triggered even when the game used many gigabytes; pkp.log showed footprint 0.00 GB next to a real pagefile usage
    • Now: when the private commit reads 0, the limit compares the pagefile usage (resident anonymous memory plus swap), so footprint shows the real figure and the limit can trigger before the device runs out of memory; the first time it happens pkp.log says so
    • Still not: the limit is 16 GB by default, so on a normal run nothing changes except the log; if the game is stopped at the limit, a report is written and the numbers in it are the same as before

Regressions and known problems

  • The Lenovo Legion Go, Go 2, ROG Xbox Ally and MSI Claw A8 now start in handheld mode (picture size, the game's lighter handheld graphics settings, controller prompts, short waits under Proton). This has not been confirmed on those devices yet; if it looks worse than before, set [am] operation_mode = docked or [host] handheld = off in pkp.ini
  • The Steam Controller (2026) is still not detected under Proton; use another pad there

What to test

  • On any AMD handheld (Steam Deck, ROG Ally, Legion Go, Legion Go S, Xbox Ally, Claw A8), under Proton or Windows: play 10 minutes, then send the lines of pkp.log that contain host: handheld, pool_copy, footprint and gamepad. Say which BIOS GPU-memory setting you use if you changed it. They show which handheld rule matched, why pool copy is on or off with the graphics memory size, and the two memory readings
  • On a Legion Go, Go 2, ROG Xbox Ally or MSI Claw A8: check that pkp.log says host: handheld: yes, and tell us whether the picture size, the controller prompts and the frame rate feel right compared with the previous build
  • If the frame rate falls partway through a session: send the pkp.log lines that contain waited on the GPU and say how long into the session it began
  • If Set up stops on a Steam Deck or another Linux handheld: send shader_cache/harness_error.txt and setup.log

Controller log

  • pkp.log now lists what a connected controller offers: trackpads (and their fingers), rumble, lights, battery, extra buttons (grips, trackpad clicks, touch sensors) and its USB ids; the motion sensors are on the line before it. It is a note for bug reports; nothing about how controllers behave changes

Memory limit

  • pkp.log now shows both memory readings (private commit and pagefile usage) in its footprint line and in the 75% warning, and says once when the private-commit reading is 0
    • Before: only the footprint was shown, so on Linux (Proton) a log reading footprint 0.00 GB could not tell whether the game used no memory or the reading was blind
    • Now: the log names both readings; the limit itself is checked exactly as before
    • Still not: the memory limit compares private commit, so it cannot trigger while that reading is 0; this only makes that visible in a log

Launcher in Steam game mode

  • On a Steam Deck, ROG Ally or Legion Go in game mode, the launcher now fills the screen and uses finger-sized controls
    • Before: on a 1080p handheld screen the launcher opened as a small floating window, and its buttons, switches and text were small
    • Now: when Steam game mode is detected, the window starts maximized, every button, menu item, switch and text field is at least 44 pixels tall, and the text is a little larger
    • Still not: this has not been tried on a real handheld yet, and the launcher does not yet have a larger-text setting of its own

Launcher layout

  • Added a Layout button in the launcher's sidebar, beside Colours and Hide sidebar. It opens a panel where you choose how the launcher is arranged: the sidebar on the left, right, top or bottom, or icons only; the order of the sidebar items, and which of them to hide (Home and Settings always stay); comfortable or compact spacing; and whether the news cards and the chips under the Play button (profile, Link Play and Discord) show on Home. Changes show at once, Reset to default puts everything back, and your choice is kept on your PC
    • Before: the launcher had one fixed arrangement
    • Now: the arrangement is yours, and the pad, keyboard and touch screen all work in every position. Notices about a problem, such as a crash or a failed update, are never hidden
    • Still not: you cannot drag parts around freely yet, and the sections of Home other than the news cards and those chips cannot be moved or hidden

Bug reports from Linux handhelds

  • pkp.log now starts with a host facts: line on Linux (Steam Deck, Legion Go, ROG Ally and other handhelds under Proton): kernel, board and BIOS version, CPU, power governor, the graphics memory split (VRAM, GTT, TTM limit), RAM, swap, zram and whether it runs in Gamescope
    • Before: reports did not say how the memory was split or how the power was set, so the performance questions could not be answered from the log
    • Now: the line holds those facts, read only; it never includes serial numbers, your user name, your computer's name or folder paths, and a value the device does not have is left out
    • Still not: it changes nothing about how the game runs; it only helps reports. Not shown on Windows

Graphics driver resets

  • pkp.log now says when every frame of a run waits on the graphics card from the start, which is what a driver reset on a Linux handheld looks like. The game cannot fix it: reboot the device. The README's common problems say so too
  • It also notices a run that starts fine and then slows down: when frames wait on the graphics card for three summary windows in a row, pkp.log says when it began (before, it only looked at the start of a run). It is a note for bug reports, not a fix

Shader setup

  • When the shader translator stops, setup now writes what it said to shader_cache/harness_error.txt and shows it in setup.log and in the error (on Linux, Proton hid it, so the log said only that it stopped)
  • Setup checks that the translator's files are whole before it starts and names what is missing or too short

Screens narrower than 16:9

  • Added 4:3 Fix, a very experimental option in Settings > Testing (Testing channel only, off by default) for 4:3, 16:10 and 3:2 screens: full-screen backgrounds, fades and dimming fill the whole picture instead of stopping at a 16:9 strip in the middle. Menus, text and buttons stay where they were. If you have a 4:3 or 16:10 screen, please try it and send pkp.log with what looked wrong. It needs a restart of the game to take effect
  • pkp.log also states how many megapixels a frame costs at the picture's shape

Link Play invites

  • Added Copy invite and Paste invite to the launcher's Link Play page: the host copies one message (address, room code and mode) and the friends paste it, instead of typing both. A Tailscale address is recognised and set up as internet play, and the host's page now lists the PC's Tailscale address even without a relay. Typing a Tailscale address into Same network now says what to do instead of just refusing it
  • Added Test connection, Check my setup and Friends on my Tailscale to the Link Play page: they say in plain words whether an address answers, what may block friends from joining (firewall, a Public network, client isolation), and which of your Tailscale devices are hosting, with a Join button. They only look and never change anything

Pool copy diagnostics

  • pkp.log now states why pool copy is on or off: whether the host is Wine, the graphics card type and its largest device-local memory heap in MiB, and the 8 GiB limit

More handhelds recognised

  • The Lenovo Legion Go, Go 2, the ASUS ROG Xbox Ally and the MSI Claw A8 (the ROG Ally X was already recognised) are now treated as handhelds, like the Steam Deck, Legion Go S and ROG...
Read more