Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Platforms & distribution

Where a Kerosene game can run today, where it can be sold, and what each choice costs. The short version: Linux is the only platform anyone has tested; everything else is untested rather than known broken, and no storefront has any integration yet.

Operating systems

PlatformStatusNotes
LinuxDeveloped and tested hereAudio needs ALSA headers to build (libasound2-dev / alsa-lib-devel; on an image-based system such as Bazzite or Silverblue, rpm-ostree install alsa-lib-devel); without them build with --no-default-features and everything but sound works. kerosene-tools doctor checks. Players need nothing extra
WindowsCompiled in CI; never played by handwgpu, winit and cpal all support it. CI compiles the workspace and its tests there. kiln --ship links the C runtime statically, so players need no Visual C++ redistributable
macOSCompiled in CI; never played by handSame dependencies, same caveat. wgpu uses Metal
ConsolesNoNo SDKs, no plans in the tree
MobileNoTouch input does not exist
WebNowgpu can target WebGPU; the file system, audio and process model here assume a desktop

CI (.github/workflows/ci.yml) runs the tests on Linux, and makes a game with kerosene-tools new there and plays it headless. On Windows and macOS it only compiles, so “compiles” is known there and nothing more: if you ship on either you are the first to find out whether it runs.

Build each platform’s copy on that platform: clone the game there and run cargo ship. kiln --ship dist --target <triple> cross-compiles for a developer who has that target’s linker and libraries set up; that setup is Rust’s to document, and building natively is the supported way. scripts/build-content.sh is a Linux shell script, but it is only a wrapper: kerosene-tools kiln is what it calls and that is a program, on every platform.

Storefronts

Nothing in the licence stops you selling on any of these. Steam is the one the engine integrates with; see Steam.

StoreWhat worksWhat is missing
itch.ioZip the kiln --ship folder and upload itA butler push target in Kiln
SteamThe steam feature: achievements, stats, leaderboards, rich presence, cloud files, DLC, the overlay and Workshop mounting. kiln --ship --steam installs Valve’s library and writes the SteamPipe scriptsSteam Input, lobbies and networking, leaderboard downloads
GOG, EpicThe folder, as aboveEverything the store’s SDK offers

The Workshop is worth a sentence because it is the store feature the engine is built for. The formats are open and each map is one .vault, so a subscribed map mounts as one more VFS layer with no format work at all. The engine does exactly that at startup, and kerosene-tools workshop upload puts a .vault up.

Dedicated servers

kerosene --headless <ticks> runs the simulation with no window, and it is what a dedicated server is, not a test mode — but there is no network stack for it to serve. Until there is, a server is a single-player game with no screen.

Packaging

kiln --ship produces a folder, and a folder is the distribution: no installer, no auto-updater, no code signing. Zip it. On Linux the executable bit is preserved through the copy; on other platforms the archive format has to preserve it for you.

The game finds its content by climbing from the executable, and the shipped .kproj says content = "content", so the folder works from wherever it is unpacked and does not care about the working directory.

What the player needs

  • A GPU and driver wgpu can talk to: Vulkan on Linux, and presumably DX12 or Metal elsewhere.
  • Write access to the content folder on first run, for engine.kcfg (see Publishing).
  • Nothing else. There is no runtime, no redistributable, no shared library: the game is one static binary and one archive.