You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #142 · Milestone 3: Playable desktop build (Windows) · plan item 3.0
Size: M · Owner-only step: no
What
A throwaway test before building for real (Q13): the web build inside Electron 45 (Chromium 156, past the Chromium 152 audio-loop bug), on Windows and the Steam Deck under Proton.
Decision / recommendation
Measure High and Low frame rates, check audio, saves and the Steam overlay with steamworks.js. No changes to the game itself; its own branch.
Done when
Numbers for High/Low on a weak Windows laptop and the Deck
Spike started on branch claude/steam-electron-spike (7338d5f), folder spike/electron/ (see its README). The game itself is unchanged.
Works so far (Mac, M4, 1280x800): the demo build runs in Electron 45.0.0 / Chromium 156, served from an app:// origin so module scripts, fetch and localStorage behave as on the web. No page errors. Low and High hold 60 fps in stage 1, stage 2 and a fully built stage 3 cellar. The M4 is far above the targets, so this only proves the wrapper works.
Packaged for Windows:npm run package-win makes a 160 MB zip with run-bench.bat (all scenes, results on the Desktop) and run-steam.bat (Steamworks as test app 480, Shift+Tab for the overlay). steamworks-ffi-node needs the Windows build of koffi installed alongside (@koromix/koffi-win32-x64) when packaging from a Mac.
Still to do:
Bench on a weak Windows laptop
Bench on the Steam Deck under Proton
Steamworks init and the overlay on Windows (needs Valve's SDK from the owner's account, never committed)
Steam Deck results (Windows build through Proton, 1280x800, Electron 45 / Chromium 156, AMD Van Gogh via ANGLE D3D11):
Scene
Low
High
stage1
60 (lowest 55)
60 (59)
stage2
60 (53)
60 (60)
cellar
60 (60)
60 (60)
cellar-full
60 (55)
50 (42)
Median fps over 30 s after 10 s to settle. The only miss is stage 3 with every boss beaten and everything bought on High (1413 draw calls, 585k triangles), about 50 fps. Low holds 60 there, so the Deck should default to Low (or get a lighter High for the late cellar).
Still to test: Windows PC numbers, sound, the Steam overlay (run-steam.bat), offline start.
Raw report
Floe Market Electron spike: Electron 45.0.0, Chromium 156.0.8078.48, 1280x800, win32
GPU: ANGLE (AMD, AMD VANGOGH (0x0000163F) Direct3D11 vs_5_0 ps_5_0, D3D11)
stage1 low: median 60 fps, 5th percentile 57, min 55, max 60 | 60 fps · 593 draw calls · 126k triangles · low
stage1 high: median 60 fps, 5th percentile 60, min 59, max 60 | 60 fps · 702 draw calls · 284k triangles · high
GPU: ANGLE (AMD, AMD VANGOGH (0x0000163F) Direct3D11 vs_5_0 ps_5_0, D3D11)
stage2 low: median 60 fps, 5th percentile 58, min 53, max 60 | 60 fps · 1556 draw calls · 285k triangles · low
stage2 high: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 1499 draw calls · 726k triangles · high
GPU: ANGLE (AMD, AMD VANGOGH (0x0000163F) Direct3D11 vs_5_0 ps_5_0, D3D11)
cellar low: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 407 draw calls · 191k triangles · low
cellar high: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 430 draw calls · 197k triangles · high
GPU: ANGLE (AMD, AMD VANGOGH (0x0000163F) Direct3D11 vs_5_0 ps_5_0, D3D11)
cellar-full low: median 60 fps, 5th percentile 57, min 55, max 60 | 55 fps · 928 draw calls · 514k triangles · low
cellar-full high: median 50 fps, 5th percentile 47, min 42, max 53 | 51 fps · 1413 draw calls · 585k triangles · high
Steam Deck: native Linux build vs Proton (same Deck, Game Mode, 1280x800, Electron 45 / Chromium 156). Native renders through ANGLE on OpenGL 4.6 (radeonsi); Proton goes Direct3D 11 → DXVK → Vulkan.
Scene
Proton Low
Native Low
Proton High
Native High
stage1
60 (55)
60 (44, one hitch)
60 (59)
60 (60)
stage2
60 (53)
60 (56)
60 (60)
60 (60)
cellar
60 (60)
60 (57)
60 (60)
60 (60)
cellar-full
60 (55)
60 (58)
50 (42)
60 (58)
Median fps, lowest second in brackets. Native holds 60 everywhere, High included: about +10 fps in the heaviest scene.
Cost of shipping native Linux too: a second build to package and test, and Electron's Chrome sandbox (the spike runs with --no-sandbox; the real wrapper #159 has to settle it, e.g. under Steam's Linux runtime). Open for the owner: keep plan 11a (Windows build on the Deck through Proton) or add a native Linux depot for the Deck.
Raw report (native)
Floe Market Electron spike: Electron 45.0.0, Chromium 156.0.8078.48, 1280x800, linux
GPU: ANGLE (AMD, AMD Custom GPU 0405 (radeonsi vangogh LLVM 18.1.8), OpenGL 4.6)
stage1 low: median 60 fps, 5th percentile 60, min 44, max 60 | 60 fps · 553 draw calls · 129k triangles · low
stage1 high: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 523 draw calls · 224k triangles · high
GPU: ANGLE (AMD, AMD Custom GPU 0405 (radeonsi vangogh LLVM 18.1.8), OpenGL 4.6)
stage2 low: median 60 fps, 5th percentile 59, min 56, max 60 | 60 fps · 1535 draw calls · 286k triangles · low
stage2 high: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 1469 draw calls · 699k triangles · high
GPU: ANGLE (AMD, AMD Custom GPU 0405 (radeonsi vangogh LLVM 18.1.8), OpenGL 4.6)
cellar low: median 60 fps, 5th percentile 60, min 57, max 60 | 60 fps · 402 draw calls · 190k triangles · low
cellar high: median 60 fps, 5th percentile 60, min 60, max 60 | 60 fps · 426 draw calls · 196k triangles · high
GPU: ANGLE (AMD, AMD Custom GPU 0405 (radeonsi vangogh LLVM 18.1.8), OpenGL 4.6)
cellar-full low: median 60 fps, 5th percentile 59, min 58, max 61 | 59 fps · 865 draw calls · 496k triangles · low
cellar-full high: median 60 fps, 5th percentile 59, min 58, max 60 | 60 fps · 1359 draw calls · 565k triangles · high
Owner decision (2026-10-27): ship a native Linux build for the Deck as well as the Windows one. Follow-up work is in #202; the epic (#142) and #153, #159, #164, #166, #168, #173, #181 are updated.
Activity
ChefControl commentedon Oct 26, 2026
Spike started on branch
claude/steam-electron-spike(7338d5f), folderspike/electron/(see its README). The game itself is unchanged.Works so far (Mac, M4, 1280x800): the demo build runs in Electron 45.0.0 / Chromium 156, served from an
app://origin so module scripts, fetch and localStorage behave as on the web. No page errors. Low and High hold 60 fps in stage 1, stage 2 and a fully built stage 3 cellar. The M4 is far above the targets, so this only proves the wrapper works.Packaged for Windows:
npm run package-winmakes a 160 MB zip withrun-bench.bat(all scenes, results on the Desktop) andrun-steam.bat(Steamworks as test app 480, Shift+Tab for the overlay). steamworks-ffi-node needs the Windows build of koffi installed alongside (@koromix/koffi-win32-x64) when packaging from a Mac.Still to do:
ChefControl commentedon Oct 27, 2026
Steam Deck results (Windows build through Proton, 1280x800, Electron 45 / Chromium 156, AMD Van Gogh via ANGLE D3D11):
Median fps over 30 s after 10 s to settle. The only miss is stage 3 with every boss beaten and everything bought on High (1413 draw calls, 585k triangles), about 50 fps. Low holds 60 there, so the Deck should default to Low (or get a lighter High for the late cellar).
Still to test: Windows PC numbers, sound, the Steam overlay (run-steam.bat), offline start.
Raw report
Electron spike: Steam Deck bench results (#158)
Electron spike: a native Linux build to compare with Proton on the De…
Electron spike: native Linux on the Deck holds 60 fps on High (#158)
ChefControl commentedon Oct 27, 2026
Steam Deck: native Linux build vs Proton (same Deck, Game Mode, 1280x800, Electron 45 / Chromium 156). Native renders through ANGLE on OpenGL 4.6 (radeonsi); Proton goes Direct3D 11 → DXVK → Vulkan.
Median fps, lowest second in brackets. Native holds 60 everywhere, High included: about +10 fps in the heaviest scene.
Cost of shipping native Linux too: a second build to package and test, and Electron's Chrome sandbox (the spike runs with
--no-sandbox; the real wrapper #159 has to settle it, e.g. under Steam's Linux runtime). Open for the owner: keep plan 11a (Windows build on the Deck through Proton) or add a native Linux depot for the Deck.Raw report (native)
ChefControl commentedon Oct 27, 2026
Owner decision (2026-10-27): ship a native Linux build for the Deck as well as the Windows one. Follow-up work is in #202; the epic (#142) and #153, #159, #164, #166, #168, #173, #181 are updated.