Skip to main content
Every release carries a recipe: what it is, which games it needs, and how Patch installs and starts it. You send it with the release when you create one, Patch checks it against your files and stores it with the release, and the desktop app follows it to install, launch and test your work. There’s no file to keep in your project folder. A browser game whose page is index.html at the top of its files needs no recipe at all: leave it out and Patch fills in the rest. It’s plain JSON in snake_case. Its JSON Schema is at https://patch.gg/schemas/recipe/v1.json, and POST /recipes/validate checks one without creating a release.

Examples

The version, channel and changelog aren’t part of the recipe: they’re fields of the release itself.

Kind

You don’t set a kind. Patch reads it from the recipe’s mode and from whether it lists a companion game, meaning another game it needs on the player’s PC:

Trust tier

You don’t set this either. Patch works it out from the recipe and your files, shows it on the game page, and the API returns it as trust_tier. Releases that run code on the player’s PC ask for their consent before the first Play. An archive counts as code until Patch’s checks have looked inside it.

Fields

Every field is optional; what you leave out takes the default shown.

Games

An installed or workshop release has exactly one host game. A browser game has none.

Components

A component names part of your files: one file, a folder ending in /, or "" for every file. Every file you upload belongs to at least one component. A browser game’s files are uploaded as they are, never as a zip, and launch.entry is a path inside its component.

Paths

Paths on the player’s PC start with one of these folders: No path can use ... Prefer {profile} wherever the game and its mod loader allow it: the game’s own folder stays untouched, and uninstalling just removes the profile.

Tests

Patch Desktop tests a browser game on its creator’s PC before it goes live: it plays it as players get it and records it. If the recipe lists test.checks, the game reports each one while it’s tested: Patch opens it with ?patch-test=1, and the game logs one console line per check, pass level-loads or fail level-loads: the map didn't load. A run counts only when every check passed.

Validation

Patch checks the recipe and the file list when you create a release. Each problem comes back as an error code with the details:

Versions of the format

This is version 1 of the recipe (schema_version: 1). New optional fields can be added to it; anything that would break an existing recipe becomes version 2.