# Builds & store pages

## A store page that sells

* **Header image (1280×600):** used on store cards, the home page hero and your page. Put the title in it if you can.
* **Cover (600×900):** shown in players' libraries.
* **Screenshots:** 3–8 gameplay shots at 16:9. The first is the one people see first.
* **Tagline:** one line, under 90 characters. Say what you *do* in the game.
* **Description:** Markdown. Open with the hook, then a short feature list, then controls.
* **Made with:** tick the AI tools you used. Players on Dweller like knowing how games were made.
* **Tags:** pick from the list so people can find you when browsing.

## Packaging builds

The launcher downloads a build, verifies its SHA-256, unpacks it into its own folder, and runs the executable. Keep builds self-contained.

### Windows
Zip the whole export folder (the `.exe` plus any `.pck`, `.dll` or data folders). The launcher finds the `.exe` automatically; if there are several, set **Executable** on upload (e.g. `MyGame.exe`).

### macOS
Zip the `.app` bundle so that `MyGame.app/` is at the top of the zip. Universal builds are ideal. Unsigned apps are fine: the launcher installs them without the Gatekeeper quarantine flag.

### Linux
Zip the binary (and its `.pck`/data). Unix permissions are restored on install; if your zip tool drops them the launcher marks the executable runnable anyway. A single `.AppImage` also works.

### Web
Zip your web export with `index.html` at the root. Dweller unpacks it to the CDN, serves `.wasm` with the right type, pre-compresses assets, and embeds it on your page with a **Play in browser** button. Godot users: export with *Thread Support* off so no special headers are needed.

### Game Boy Advance
Upload the `.gba` ROM. It's playable in the browser through EmulatorJS (mGBA core). Only original homebrew is allowed.

### Android
Upload a signed release `.apk`. Players on phones get a download button.

## Versions & releases

* Versions are compared numerically: `1.10.0` > `1.9.2`. Pre-release suffixes (`1.2.0-beta.1`) sort before the final release.
* Each release can contain builds for any set of platforms. If a platform isn't in the newest release, players on that platform keep getting the newest build that has it.
* **Yank** a bad release from the dashboard: launchers fall back to the previous version.
* The **beta** channel is for builds you want to label as testing; they're still visible on the release notes page.

## Engine tips

* **Godot 4:** `godot --headless --export-release "Windows Desktop" build/windows/MyGame.exe`. Turn on *Embed PCK* for single-file builds.
* **Unity:** build each target to `build/<platform>/` and zip the folder.
* **Phaser / Three.js / plain HTML5:** zip the folder that contains `index.html` and upload it as a web build.
