Docs Design

Contents

A store page kit

Built 2026-10-21, toward Wave 5 of the audit (design/audit-2026-10.md: "itch.io upload; store-ready packages"). Export already writes what itch.io and Steam take: a web zip with index.html at its root, and a zip for each desktop system. What a person still wrote by hand was the page beside it: what the game is, how to play, what they can change, who made it, and the stores' questions about AI. A game's own documents hold all of it, so Gamewright writes it.

What

gamewright store [--json] [--out DIR] [--shots] <pack> writes two files (default <pack>/.gamewright/store/, core/src/export/store.ts):

  • page.md, to paste into the store's description:
    • the game's name and pitch (the GameManifest's meta.description, else the brief's pitch);
    • How to play: a row per action from its InputMap, keys and mouse buttons in plain names, up, down, left and right as one Move row (core/src/game/controls.ts, which the site's gallery uses too), then whether a controller plays it and whether a phone shows controls;
    • Accessibility: what the game's Options page offers (text to 200%, the colour filter, Controls for keys, a controller and the mouse; captions when a Sound or a Score section has one; shake and flashes when its Style has juice; the languages its Locales add). A game whose menu is off (menu.pause: false) has no Options page, so none is listed;
    • Credits: Gamewright and Godot, then every imported file's own credit, author and licence from its Asset's ledger ("author not stated" where it says nothing).
  • ai-disclosure.md, the stores' AI questions answered from records, never guessed:
    • every document's meta.provenance.createdBy (and model, when it names one): how many of the game's own documents an AI agent wrote, by kind, and how many come from its template;
    • every imported file's source.ai and aiTool: made by AI, with AI's help, without, or not stated yet (named, to set before publishing);
    • that every other picture, model, sound and piece of music is made from a recipe by Gamewright's generators as the game loads, and how many of those recipes an AI agent wrote: no image, sound or music model made the output, which is what a store's graphics and sound questions ask, and the recipes' authorship is said beside it so a person can judge;
    • Steam's content survey (pre-generated AI content, live-generated: always no, since nothing in a game asks an AI anything while it plays) and itch.io's graphics, sound and text answers.

In every export. gamewright export and the Studio's Export write the two beside the zip, named for the game (Thornwick - store page.md, Thornwick - AI disclosure.md), and the Studio says so when the zip is ready. Each desktop zip carries an .itch.toml at its root naming the program to launch (Thornwick/Thornwick.x86_64, Thornwick/Thornwick.exe, Thornwick.app), so itch.io's app starts the game; a web zip needs none (index.html is at its root).

Its pictures. gamewright store --shots draws them through the player too (core/src/export/store-shots.ts), from tours the game already has, so nothing is staged by hand:

  • cover.png, 630x500, itch.io's cover: the shot a tour names poster (the gallery's poster), else the last shot of playtests/poster.tour (Nightcoast's builds up to its sentry), else the opening frame of play. It is drawn at 1260x1000, in the cover's own shape so the game lays its screen out for it, and halved, so its edges are smooth.
  • screenshots/, up to six at 1920x1080 (Steam's size; its least is 1280x720, and itch.io takes the same), named in order (01-title.png): spread from the first to the last shot of the tour of the Playtest that takes the most, which is a game's look Playtest, the one L3 shoots. Playtests in another language or for a person's options are passed over, so the pictures show the game as it is made, and a frame with a menu page over it (the pause menu, Options, an app's slate, as the player records each shot's texts) is left out. A game with no tour that takes a shot gets a cover and a note saying a look Playtest would give it screenshots, and one whose tours give fewer than five (Lamplighter's Playtest shoots its first level and its end card) is told Steam asks for five.

From an export. Playing a game's tours takes minutes, so an export draws them only when asked: gamewright export --shots, or the Studio Export dialog's Store pictures too box (the session's pack.export with shots). They go into <Name> - store pictures/ beside the zip, drawn through the session's own engine; each one that couldn't be drawn is told as a step, and the dialog ends "its store page and pictures beside it", or says its pictures were not drawn.

Not yet

  • The upload itself (butler for itch.io): it sends the game to a store, so it waits on the owner's account and key.

From docs/design/store.md in the Gamewright repository.