game.json reference

The manifest describes a game to the portal. Only name is strictly required; everything else has a sensible default.

FieldTypeDefaultDescription
namestring—Display name, up to 120 characters.
taglinestringnullOne line under the title, up to 160 characters.
descriptionstringnullLonger text for the game page. Plain text; line breaks are kept.
categorystringarcadeFree-form slug used for filtering: arcade, puzzle, racing, strategy, cards, kids …
tagsstring[][]Searchable keywords, e.g. controls or moods.
versionstring1.0.0Shown on the game page; bump on every release.
entrystringindex.htmlFile loaded into the play iframe. Must exist.
coverstringnullImage inside the folder, ideally 640×480 PNG/JPG/WebP/SVG. Without it a generated cover is used.
orientationlandscape / portrait / anylandscapeHint shown to players on phones.
min_players, max_playersint1 / 1Informational.
leaderboard.enabledbooltrueTurn scores off entirely for story games.
leaderboard.orderdesc / ascdescasc for time-based boards where lower is better.
leaderboard.unitstringpointsLabel for scores: points, seconds, moves …
save_slotsint 0–101Number of save slots a player gets (slot ids 0 … n-1).
requires_premiumboolfalseOnly Unlimited members can launch the game.
featuredboolfalseShow on the home page.
sort_orderint100Lower comes first in listings.
statuspublished / beta / hiddenpublishedbeta shows a badge, hidden keeps the game out of listings but playable by URL for testing. Admins can additionally set disabled.
authorstringAllGame ClubStudio or developer name.
releaseddatenullYYYY-MM-DD.
controlsstring[]—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
  • entry file not found
  • cover file not found
  • invalid status

A folder with errors is skipped until fixed; other games are unaffected.

Last updated October 11, 2026.