Skip to content

Platform

A game on Probability is a zip file containing a manifest and 3D models / images. This guide walks you through making one and getting it in front of players.

If you’d rather start from a working game, probability-nz/chess is ready to go — zip it for upload, or launch it directly (no zip needed). garbo-succus/checkers is another example.

A game template is a folder with three things — a package.json, a probability.json manifest, and your assets:

my-game/
├── package.json
├── probability.json
└── *.glb / *.png # 3D models, images, etc.

package.json is small — it just needs a main field pointing at the manifest:

{
"name": "Your Game Name",
"version": "0.0.0",
"main": "probability.json"
}

probability.json is a GameManifest — a list of scenarios (named starting arrangements of Pieces) and optional templates (reusable piece defaults).

Pieces reference 3D models (src: "knight.glb") and place them in the world. Coordinates are Y-up; positions are in metres.

The manifest’s full shape lives in dist/analog.json from @probability-nz/types. You can validate yours at runtime with assertGameState.

Serve the unzipped folder from a host that allows CORS for probability.nz, then load it:

https://probability.nz/play#template={folder URL}

You can use GitHub Pages, raw.githubusercontent.com, or any CORS-friendly static host. Example: Play Chess.

When you’re happy, zip the folder and upload it to mod.io/g/probability so it shows up in the in-app catalog:

  • First gallery image is the icon (min 400×400px).
  • “Content listing image” is the header background.
  • Underscores in usernames render as spaces.