Docs
Getting started

Publish your game

Prepare a game page, add media, and review it before publishing.

The safest publishing flow has three steps: check the project, prepare the game page, then review it in your browser.

Gameplay footage is strongly recommended

Plan to include both gameplay footage and cover art. Games with gameplay footage are more likely to be played because visitors can see the game in motion before opening it. A short screen recording is enough. You should also supply a banner when you have one; if you do not, Sandscape can generate it for you.

Push your latest game files before you begin. The publish command uses the copy already stored on Sandscape.

sandscape push

sandscape publish --check

sandscape publish --prepare \
  --title "Neon Drift" \
  --tagline "Outrun the grid" \
  --genre Racing \
  --short-description "A synthwave time-trial racer built for one perfect lap." \
  --tags racing,synthwave \
  --platforms both \
  --gameplay ./clip.mp4 \
  --banner ./cover.png

--prepare saves the draft and prints a review link. It does not publish the game. Open the link to open the Sandscape publishing page with your draft and media ready for review. Check the page, then press Publish when it is ready.

Check the project

sandscape publish --check

The readiness report includes:

  • whether the project has a root index.html
  • whether cover art and gameplay footage are already available
  • whether a draft has been saved
  • whether the game has been published before
  • the accepted genres and platform values
  • the review link

A missing index.html is the only item that blocks publishing. Add it at the root of the game folder, run sandscape push, then check again.

When you republish a game without uploading new gameplay footage, Sandscape keeps the existing preview.

Write the game page

--prepare requires --title. Add as much of the remaining information as the game needs:

OptionWhat it controls
--title <text>Game title. Required for prepare and direct publish.
--tagline <text>One-line hook below the title.
--genre <name>One of the genres returned by --check. Matching is case-insensitive.
--short-description <text>Short description used on game cards.
--long-description <text>Full description for the game page.
--tags a,b,cComma-separated search and category tags.
`--visibility publicunlisted`
`--platforms desktopmobile

Set --platforms based on the controls, not the screen size. A desktop-only game can still render on a phone while remaining difficult or impossible to play there.

Sandscape filters discovery results by device compatibility. A direct link to an incompatible game shows a warning before the game loads and lets the player continue.

If you omit --platforms, a new game uses both. A republish keeps its existing value.

Add cover art

Upload an image you already have:

sandscape publish --prepare --title "Neon Drift" --banner ./cover.png

Accepted formats are PNG, JPEG, WebP, and GIF. The limit is 10 MiB. Sandscape converts the upload to WebP.

You can also generate 16:9 cover art:

sandscape publish --prepare \
  --title "Neon Drift" \
  --gameplay ./clip.mp4 \
  --generate-banner "chrome hovercar in a rain-soaked neon canyon, night scene, magenta and cyan palette, cinematic racing key art"

Give --generate-banner a concrete art direction. Describe the subject, setting, mood, palette, and the visual details that identify the game. Sandscape combines that direction with the saved title and descriptions. It also samples stills from gameplay footage uploaded in the same command.

The first three cover generations for a game are free. A user can receive at most six free generations across all games in one day. Generations outside either free allowance cost coins, and the command reports how many free generations remain.

Add gameplay footage

sandscape publish --prepare --title "Neon Drift" --gameplay ./clip.mp4

The upload limit is 200 MiB. Accepted formats are MP4, MOV, WebM, M4V, AVI, and MKV. Sandscape converts the video to WebM, removes the audio, and keeps the first 20 seconds.

A raw screen recording works. If the best gameplay starts later in the recording, trim the file to the 20 seconds you want players to see before uploading it.

Cover and gameplay conversion happen on Sandscape. You do not need local video or image conversion software.

Upload media without preparing a draft

Media flags can run by themselves:

sandscape publish --gameplay ./clip.mp4
sandscape publish --banner ./cover.png
sandscape publish --generate-banner "art direction"

Without --title, --check, or --prepare, the CLI completes the requested media work and stops. It does not publish.

Publish directly from the terminal

Omitting --prepare publishes immediately:

sandscape publish \
  --title "Neon Drift" \
  --genre Racing \
  --platforms both \
  --web-url https://sandscape.app

Use direct publishing only when you do not need the browser review step. The CLI prints the game ID, short code, and available play links.

Fix a rejected publish

  • For an invalid genre, run sandscape publish --check and use one of the listed values.
  • For an invalid platform or visibility value, choose one of the values shown in the error.
  • For a rejected media file, check its path, extension, size, and whether it is empty or a symlink.
  • For a missing build, add index.html at the project root and run sandscape push.
Publish your game | Sandscape