github Dittobyte/Recompia v0.10.4-beta.1
Pokopia Recomp 0.10.4-beta.1 (Testing)

pre-releaseone hour ago

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: 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
  • New Show on Discord while playing in the launcher's 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. Update only: no shader rebuild, no Set up again

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
  • New Show on Discord while playing in the launcher's 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. Update only: no shader rebuild, no Set up again

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 notices a slowdown that starts partway through a run, not only at the start
    • Before: it only looked at the first minutes of a run and at one kind of wait, so a handheld that played the title screen fine and slowed to about 10 fps once the world loaded was never noticed
    • Now: when three summary windows in a row (about 30 seconds) run under 20 fps with the game thread mostly waiting, pkp.log says when it began and how much of the time was waiting; the 10-second hitch: line also shows the share of waiting in each window, which helps tune the check from real logs
    • Still not: it is a note for bug reports, not a fix. After a graphics driver reset on a Linux handheld only a reboot of the device clears it; the README's common problems say so too

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 Ally
    • Before: only the Deck, Legion Go S and ROG Ally were recognised; on the others the game was told it was docked and the picture size and short waits were chosen for a desktop PC
    • Now: on these devices the game is told it is in handheld mode and picks its own lighter handheld graphics settings, a window smaller than 1080p is no longer rendered at 1080p, controller prompts stay for the trackpad and touch screen, and (under Proton) short waits sleep instead of spinning. pkp.log shows which board rule matched in the host: handheld line
    • Still not: AYANEO, GPD and OneXPlayer, whose board names are not reliably known (OneXPlayer's also cover Intel models); set [host] handheld = on in pkp.ini for those. If the handheld graphics settings do not suit your device, set [am] operation_mode = docked (that alone), or [host] handheld = off (all of it)

Steam Controller on Linux

  • Settings > Controls now explains, on Linux only, how to get a Steam Controller or other pad working: add the game to Steam and keep Steam Input on for it, and what that means for the grips and trackpads

Gameplay mods

  • Settings > Gameplay and pkp.log now show which gameplay mods and experimental features are on, so you can see at a glance what a start will use
  • Fixed the Pokédex tabs showing "Time" as their title after the Settings screen had been opened (#494)

The Testing tab

  • Added a Testing tab to Settings, shown only on the Testing channel: send logs, read them, and switch the features still being tried on or off
    • Export and report makes one zip of pkp.log, pkp.log.prev, the crash files, setup.log and pkp.ini, opens its folder (testing-logs next to pkp.exe) and the bug report form. Drag the zip into the form: the launcher has no GitHub login, so nothing is uploaded for you
    • Names in paths, your account and server settings and IP addresses are removed before anything is written. Long logs keep their end, so the zip stays under GitHub's 25 MB limit
    • View logs shows the end of each file in the launcher, with a filter and a Copy button
    • Experimental features has Mouse in the game's menus and the Taller view on 16:10 screens, both off by default. The gameplay options (Camera aim, Running jump, Sort, Search, Quit Game) are off by default in this Testing build; switch them on here
  • The touch screen Menu button is automatic: on when the machine has a touch screen, so a handheld keeps its way into the menu

Link Play

  • Updated the co-op module to pokopia-native 1.4.0. It still plays with pokopia-native 1.3.0 to 1.4.0 and with earlier builds of this game: the way games talk to each other did not change
  • Added automatic port forwarding when you host over the internet without a relay
    • Before: your router had to forward port 47600 (TCP and UDP) by hand
    • Now: while you host, the game asks your router to forward it (UPnP, NAT-PMP or PCP) and gives it back when you stop. Ask the router to open the port on the Link Play page's Host view ([net] port_forward) turns it off
    • Still not: a router with UPnP switched off, or an internet provider that shares one address among many homes, can't be helped by this; pkp.log says which, in a nat: line. A relay you run on this PC still needs its own port forwarded. Quitting the game while hosting leaves the forwarded port until its one-hour lease runs out
  • pkp.log no longer contains your whole room code, only its first group, so a log is safe to attach to a bug report. The launcher still shows the whole code

Game

  • NVIDIA graphics cards no longer risk a crash (device lost) in six of the game's compute shaders when a loop count is not the game's: the count is held to the size of the table the loop walks (on other cards, to 16384). From pokopia-native 1.4.0; [nvn] loop_guard = off turns it off
    • The lighting shader now has the guard in all four of its variants, not one. Two of the unguarded ones ran in a game that fell from 95 to 3 fps after 8 minutes on an RTX 3060 (#309)
  • Story co-op (experimental, [pkp] link_story_coop): the host's own story no longer stops while friends are visiting. Before, any Link Play session turned the host's story talks into "Bring here to say hi!" and paused its requests. From pokopia-native 1.4.0

Launcher

  • Added Copy handheld report to Settings > Testing (Testing channel only)
    • Before: a tester on an AMD handheld had to send the whole pkp.log, which holds names and paths, and say by hand what mattered
    • Now: one press copies a short block with only the useful lines of pkp.log (handheld detection, graphics card and driver, memory, the frame summaries and any graphics reset or crash), with user names, home folders, addresses and room codes removed, ready to paste into a bug report. Add your device, system, power mode and what you were doing
    • Still not: it does not send anything and does not replace Export and report when a full log is asked for
  • Added arrow-key navigation to the launcher, for a handheld whose d-pad reaches it as keys
    • Before: Steam's default layout for a non-Steam shortcut sends the d-pad as arrow keys, and the launcher ignored them
    • Now: the arrow keys move between controls, Enter presses, Escape goes back (closes a question, or returns Home), the same as the pad
    • Text boxes, sliders and drop-downs keep the arrows they need
  • New Show on Discord while playing in the launcher's 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. Update only: no shader rebuild, no Set up again

Gameplay

  • Fixed camera aim staying off after you used the Joy-Con 2 mouse mode once (#367)
    • Before: turning mouse mode off left the game stuck half in it, so camera aim never came back until a restart
    • Now: pressing the mouse mode key again fully leaves mouse mode and camera aim works again right away
  • Fixed the Joy-Con 2 mouse mode hitting the wrong block (#367)
    • Before: clicking broke or placed a block off to the side of the one under the pointer
    • Now: your character turns to the block under the pointer before swinging, so the click lands on it

Controls

  • Fixed the Mouse Mode Key row in Settings > Mouse (#367)
    • Before: pressing a key on the row did nothing, and after one change the row got stuck at the end of its bar
    • Now: press left or right on the row (or click it), the row says "Press the new key", then press any key, mouse button or wheel notch. Esc cancels. It works every time, and F1 can't be picked by mistake
  • Added Controller Button and Presses rows to the game's own Settings > Controller tab: remap any controller button without the F1 page
    • Before: giving a rear grip, a trackpad click or another controller button a Switch button was only possible in Settings (F1) > Controller, or in controls.ini
    • Now: on Settings > Controller, press left or right on Controller Button to pick a button (for example Right grip R4), then on Presses pick what it presses on the Switch pad (Default, Nothing, A, B ...). Save as with any other row; Cancel keeps the old layout. A button the file maps to several buttons at once shows Custom and is left as it is
    • Still not: it shows one button at a time; the F1 page still lists them all
  • Added two more bindable controller buttons: the Steam button and the extra button (the Steam Controller (2026)'s and the Steam Deck's quick-access "...", an Xbox Share, a PlayStation 5 microphone button) (Settings F1 > Controller > Pad buttons, or guide and misc1 in [padmap] of controls.ini)
    • Before: they pressed nothing and could not be given a Switch button
    • Now: each has a row and can press any Switch button; with the Steam icons on, a prompt for a button you gave them shows an S or three dots. They press nothing until you pick one
    • Still not: with Steam running, Steam may keep these two buttons for itself (start the game outside Steam to use them); the Steam Controller (2026)'s trigger clicks are not here, because the controller library in this build does not report them
  • Changed the Steam Controller button icons to fit the new Steam Controller (2026)
    • Before: the icons were the original 2015 controller's: its small buttons were the < and > arrows and it had two rear grips, so R4 and R5 (or L4 and L5) both showed "RG" (or "LG")
    • Now: View and Menu show the same symbols as on a Steam Deck, and each rear grip has its own icon: L4, L5, R4 and R5
    • Still not: it needs the new prompt_icons.pak that comes with the build; the Steam button, the quick-access (...) button and the trigger clicks have no prompt icon yet

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.