quest'n'click 4.5.0 · r1

Built for quest'n'click 4.5.0, revision r1. Whether it is published, and which one is current, is recorded at publication.json.

Assets and cutting

Français · Type: how-to · Audience: author · Context: local Studio · Status: ready · Applies from: 4.2.1

The local Studio · contract: stable · verified by CI (support matrix of 4.4.0, 2026-10-23): Chromium end to end (the Studio's checks); Windows: the unit suite only · automated checks: jobs e2e, windows; CI plan e2e, windows; 2 test files · people's passes: studio-hero-matrix not run (#238) · known limits: demo-read-only

The Assets tab lists every image and sound of the game against what the game uses, gives each sheet its art prompt, and takes the generated images and sounds that replace or add to them, cutting sheets into cells, without ever deleting a file.

What you get

A generated sprite sheet cut into the cells the game names, a picture or a sound replaced with the old one kept beside it, and the game showing the new art once prepared.

Context and versions

The local Studio, in the engine repository or a created project. True from 4.2.1 (every upload is one operation of the game's journal). The demo Studio shows the listing read-only; a hosted Studio has the same tab with its own limits (below).

Prerequisites

Where to run the commands

In the browser, on the Assets tab. Prepare assets runs npm run assets for you, in the folder the Studio serves.

The Assets tab

The tab lists everything under games/<id>/art/ and audio/ against what the game references (tools/refs.ts), with the prompts of npm run prompts (tools/prompts.ts).

Steps

  1. Pick the sheet in the tree, Copy prompt (or Copy prompt for missing cells only) and generate the image with your image model.
  1. Upload generated sheet… sends the image with the sheet's id and grid (6 × 4 by default). It is saved under private/sheets/<sheetId>-<time>.<ext> and cut by tools/cut-sheet.py into art/<sheetId>/. If cells of that sheet exist already, a dialog lists them, each with a recut box: unticked, the cell is kept and only the new cells are cut. The cut result is shown. For a sheet that has no folder yet, use Upload sheet into a new sheet id… in the toolbar.
  1. To change one picture, select the cell and Replace…. Keying: a flat background is keyed by default; choose "always" or "never" to force it. A decor (PNG or JPEG) is replaced the same way from Backgrounds, a sound from Sounds (any format ffmpeg reads, same extension).
  1. Prepare assets (npm run assets) in the toolbar runs the pipeline with its output live in a drawer; the count next to it is what it would process. Afterwards the Rooms view reloads. A replaced cell shows in the game once prepared.

Guarantee · no-silent-recut · referenced · executed on aff6caab7514 · scope self-checked by the author (AI), not reviewed An upload that would recut existing cells without naming them is refused with 409 and the list of those cells. An upload that names a cell recuts only that cell, and the old file is kept as <name>_v<N> first.

Nothing is deleted: a replaced sound or decor is kept as <name>_v<N> too.

Backups are not cells: the listing and the prompts ignore them.

Limit · demo-read-only In the demo Studio the listing comes from the snapshot (assets in snapshot.json), the thumbnails and sounds from the prepared files of public/assets (unused cells have no preview); uploads and Prepare are hidden.

On a hosted Studio

Applies from 4.2.3

The same tab, served by the Studio Server under /api/assets. Uploads are bounded (10 MiB; PNG, JPEG or WebP images, Ogg, MP3 or WAV sounds, recognised from their bytes); the cutting, the keying and Prepare assets (on the server) are jobs of the processing worker, under the project's exclusive lease, shown in a small panel with a Cancel button (a job cancelled before its write leaves nothing). The uploaded sheet itself is not kept there. See Hosted assets.

Expected result, and how to check it

The cell's badge leaves red; after Prepare it leaves orange; the cell shows in the game. git status shows the new files under art/<sheetId>/ and the _v<N> backups beside them.

Common errors

SymptomCauseFix
409 with conflicts on an uploadCells of that sheet exist and were not namedTick recut for the cells to replace, or leave them kept
`sheetId` must be letters, digits, _ and - (not "decor")A bad sheet idUse the game's sheet id
A replaced cell does not show in the gameNot prepared yet (orange badge)Prepare assets
The cut failsPython 3 or Pillow is missingImage toolchain

Files or data changed

games/<id>/art/<sheetId>/<cell>.png and their _v<N> backups; art/decor/<name>.<ext>; audio/<music|sfx>/<file>; the uploaded sheet under games/<id>/private/sheets/; the prepared files under public/assets/ after Prepare.

Recovery or going back

A replaced file is kept as <name>_v<N>: copy it back over the cell, or use git. Prepare can be run again at any time.

References


Edit the source of this page · Report an error