game.json reference
The manifest describes a game to the portal. Only name is strictly required; everything else has a sensible default.
| Field | Type | Default | Description |
|---|---|---|---|
name | string | — | Display name, up to 120 characters. |
tagline | string | null | One line under the title, up to 160 characters. |
description | string | null | Longer text for the game page. Plain text; line breaks are kept. |
category | string | arcade | Free-form slug used for filtering: arcade, puzzle, racing, strategy, cards, kids … |
tags | string[] | [] | Searchable keywords, e.g. controls or moods. |
version | string | 1.0.0 | Shown on the game page; bump on every release. |
entry | string | index.html | File loaded into the play iframe. Must exist. |
cover | string | null | Image inside the folder, ideally 640×480 PNG/JPG/WebP/SVG. Without it a generated cover is used. |
orientation | landscape / portrait / any | landscape | Hint shown to players on phones. |
min_players, max_players | int | 1 / 1 | Informational. |
leaderboard.enabled | bool | true | Turn scores off entirely for story games. |
leaderboard.order | desc / asc | desc | asc for time-based boards where lower is better. |
leaderboard.unit | string | points | Label for scores: points, seconds, moves … |
save_slots | int 0–10 | 1 | Number of save slots a player gets (slot ids 0 … n-1). |
requires_premium | bool | false | Only Unlimited members can launch the game. |
featured | bool | false | Show on the home page. |
sort_order | int | 100 | Lower comes first in listings. |
status | published / beta / hidden | published | beta shows a badge, hidden keeps the game out of listings but playable by URL for testing. Admins can additionally set disabled. |
author | string | AllGame Club | Studio or developer name. |
released | date | null | YYYY-MM-DD. |
controls | string[] | — | Shown on the game page, e.g. ["WASD", "Mouse"]. |
Unknown fields are kept in the stored manifest and returned by the API under game.manifest, so you can add your own metadata.
Example
{
"name": "Harbor Tales",
"tagline": "Rebuild a sleepy harbor town, one crate at a time.",
"description": "A cosy puzzle game about logistics, seagulls and the perfect stack.",
"category": "puzzle",
"tags": ["relaxing", "mouse", "touch"],
"version": "1.3.0",
"entry": "index.html",
"cover": "cover.webp",
"orientation": "any",
"leaderboard": { "enabled": true, "order": "asc", "unit": "moves" },
"save_slots": 3,
"requires_premium": false,
"featured": true,
"status": "published",
"author": "AllGame Club",
"released": "2027-03-14",
"controls": ["Mouse or touch"]
}
Validation
php bin/console.php games:sync reports:
- missing
name entryfile not foundcoverfile not found- invalid
status
A folder with errors is skipped until fixed; other games are unaffected.
Last updated October 11, 2026.