{
  "schemaVersion": "1.0",
  "site": {
    "name": "PLAYCHIVE",
    "identity": "PLAYCHIVE — Classic worlds, ready to play",
    "type": "browser-game-hub",
    "homepage": "https://playchive.ir/",
    "repository": "https://github.com/MahanKenway/PlayChive",
    "creator": {
      "name": "Mahan Tavakoli",
      "handle": "MahanKenway",
      "url": "https://github.com/MahanKenway"
    },
    "language": "en",
    "catalog": "https://playchive.ir/data/games.json",
    "sitemap": "https://playchive.ir/sitemap.xml",
    "llms": "https://playchive.ir/llms.txt",
    "privacy": "https://playchive.ir/privacy/",
    "agentGuide": "https://playchive.ir/agent/",
    "robotsPolicy": "all public content allowed"
  },
  "agentMode": "?agent=1",
  "semanticLandmarks": [
    "#featured",
    "#catalog",
    "#crawlable-catalog",
    "#library",
    "#about"
  ],
  "selectors": {
    "catalog": "#catalog-grid",
    "crawlableCatalog": "#crawlable-catalog",
    "gameStatus": "#game-status",
    "launchLinks": "a[data-agent-action=launch-game]",
    "runtimeActions": "[data-agent-action]"
  },
  "agentActions": [
    "launch",
    "pause",
    "resume",
    "restart",
    "fullscreen",
    "return-to-hub",
    "press-key"
  ],
  "runtimeStates": [
    "loading",
    "ready",
    "playing",
    "paused",
    "error",
    "stopped"
  ],
  "games": [
    {
      "id": "freedoom-phase-1",
      "name": "Freedoom: Phase 1",
      "url": null,
      "playable": false,
      "runtime": "Bundled IWAD",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "external-project-or-local-import",
      "status": "Free / bundled",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "freedoom-phase-2",
      "name": "Freedoom: Phase 2",
      "url": null,
      "playable": false,
      "runtime": "Bundled IWAD",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "external-project-or-local-import",
      "status": "Free / bundled",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "freedm",
      "name": "FreeDM: Arena Archive",
      "url": null,
      "playable": false,
      "runtime": "Bundled IWAD",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "external-project-or-local-import",
      "status": "Free / bundled · solo exploration",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "hacx-1-2",
      "name": "Hacx: Twitch ’n Kill",
      "url": null,
      "playable": false,
      "runtime": "Bundled IWAD + PWAD",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "external-project-or-local-import",
      "status": "Royalty-free / non-commercial bundle",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "blasphemer",
      "name": "Blasphemer",
      "url": "blasphemer.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "cdogs-sdl",
      "name": "C-Dogs SDL",
      "url": "cdogs.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "gnu-freedink",
      "name": "GNU FreeDink",
      "url": "freedink.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "opentyrian2000",
      "name": "OpenTyrian2000",
      "url": "opentyrian.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "librequake",
      "name": "LibreQuake",
      "url": "librequake.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "openttd",
      "name": "OpenTTD",
      "url": "openttd.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "freerct",
      "name": "FreeRCT",
      "url": "freerct.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "neverball",
      "name": "Neverball",
      "url": "neverball.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "armawebtron",
      "name": "Armawebtron",
      "url": "armawebtron.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "tuxracer-js",
      "name": "TuxRacer.js",
      "url": "tuxracer.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "starter-kit-racing",
      "name": "Starter Kit Racing",
      "url": "starter-kit-racing.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "astray",
      "name": "Astray",
      "url": "astray.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "neon-rift",
      "name": "Neon Rift",
      "url": "neon-rift.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "obsidian-relay",
      "name": "Obsidian Relay",
      "url": "shadow-station.html",
      "playable": true,
      "runtime": "Bundled OpenResident WebGL2/WASM runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "hexgl",
      "name": "HexGL",
      "url": "hexgl.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled · non-commercial package",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "hextris",
      "name": "Hextris",
      "url": "hextris.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "rocksndiamonds",
      "name": "Rocks'n'Diamonds",
      "url": "rocksndiamonds.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "beats-into-shapes",
      "name": "Beats into Shapes",
      "url": "beats-into-shapes.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "2048",
      "name": "2048",
      "url": "2048.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "javascript-tetris",
      "name": "JavaScript Tetris",
      "url": "javascript-tetris.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "adarkroom",
      "name": "A Dark Room",
      "url": "adarkroom.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "digger-remastered",
      "name": "Digger Remastered",
      "url": "digger.html",
      "playable": true,
      "runtime": "Bundled independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Free / bundled",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "ancient-aliens",
      "name": "Ancient Aliens",
      "url": "https://www.moddb.com/games/doom-ii/addons/ancient-aliens",
      "playable": false,
      "runtime": "Doom II PWAD · Boom",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External engine required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "eviternity",
      "name": "Eviternity",
      "url": "https://www.moddb.com/mods/eviternity",
      "playable": false,
      "runtime": "Doom II PWAD · Boom",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External engine required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "back-to-saturn-x-e1",
      "name": "Back to Saturn X: E1",
      "url": "https://www.moddb.com/mods/back-to-saturn-x",
      "playable": false,
      "runtime": "Doom II PWAD pair",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "Download project WADs locally",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "adventures-of-square",
      "name": "The Adventures of Square",
      "url": "http://adventuresofsquare.com/",
      "playable": false,
      "runtime": "Standalone GZDoom total conversion",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External engine required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "plutonia",
      "name": "The Plutonia Experiment",
      "url": null,
      "playable": false,
      "runtime": "Commercial IWAD",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "Requires your legal IWAD",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "tnt-evilution",
      "name": "TNT: Evilution",
      "url": null,
      "playable": false,
      "runtime": "Commercial IWAD",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "Requires your legal IWAD",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "community-slot",
      "name": "Community WAD shelf",
      "url": null,
      "playable": false,
      "runtime": "IWAD + PWAD",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "Attach a compatible WAD",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "ecwolf",
      "name": "ECWolf",
      "url": "ecwolf.html",
      "playable": true,
      "runtime": "Local-data independent runtime",
      "controls": [
        "keyboard",
        "touch",
        "gamepad",
        "fullscreen"
      ],
      "launchMethod": "direct-link",
      "status": "Engine bundled / data local",
      "actions": [
        "launch",
        "pause",
        "resume",
        "restart",
        "fullscreen",
        "return-to-hub",
        "press-key"
      ],
      "agentStateSelector": "#game-status"
    },
    {
      "id": "openresident-research",
      "name": "OpenResident",
      "url": "openresident.html",
      "playable": false,
      "runtime": "Resident Evil engine",
      "controls": [],
      "launchMethod": "technical-probe",
      "status": "WebAssembly study · not playable",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "supertuxkart",
      "name": "SuperTuxKart",
      "url": "https://supertuxkart.net/Download",
      "playable": false,
      "runtime": "Full-game desktop download",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "Free full game / download required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "vibeslops",
      "name": "Vibeslops / Claude of Duty",
      "url": "https://vibeslops.luckeysystems.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · rights review",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "ovz-global-flashpoint",
      "name": "Contemporary Conflict: Global Flashpoint",
      "url": "https://ovz-game-production.up.railway.app/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · no local mirror",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "surfd-external",
      "name": "Surfd",
      "url": "https://surfd.net/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · maps not mirrored",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "webxash-half-life",
      "name": "webXash / Half-Life browser ports",
      "url": "https://x8bitrain.github.io/webXash/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · lawful files required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "pixelsuft-half-life",
      "name": "PixelSutf Half-Life web build",
      "url": "https://pixelsuft.github.io/hl/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · no asset mirror",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "halo-web-port",
      "name": "Halo: Combat Evolved web port",
      "url": "https://mitchellhynes.com/halo",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · user data required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "halo-ce-mobile",
      "name": "Halo CE Mobile",
      "url": "https://hcemobile.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · user data required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "quake-browser-port",
      "name": "Quake browser port",
      "url": "https://q1.pieter.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · hosted runtime",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "quake2-browser-port",
      "name": "Quake II browser port",
      "url": "https://q2.pieter.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · hosted runtime",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "quake3-browser-port",
      "name": "Quake III browser port",
      "url": "https://q3.pieter.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · hosted runtime",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "rtcw-browser-port",
      "name": "Return to Castle Wolfenstein web port",
      "url": "https://rtcw.pieter.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · game data not mirrored",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "urban-terror-browser-port",
      "name": "Urban Terror browser port",
      "url": "https://ut.pieter.com/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · not Unreal Tournament",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "gta-vice-city-wasm",
      "name": "GTA: Vice City WASM port",
      "url": "https://joncodeofficial.github.io/gta-vice-city-wasm/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · user data required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "pes6-web",
      "name": "PES 6 Web Online Port",
      "url": "https://pes6.optijuegos.net/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · Konami data not mirrored",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "skate3-web-engine",
      "name": "Skate 3 Rust Engine web project",
      "url": "https://skate.aaddpp.lol/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · EA data not mirrored",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "diablo-web",
      "name": "Diablo Web",
      "url": "https://johnimril.github.io/diablo_web/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · full data local",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "webwars",
      "name": "WebWars",
      "url": "https://webwars.link/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · live host status varies",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "openlara",
      "name": "OpenLara",
      "url": "https://xproger.info/projects/OpenLara/",
      "playable": false,
      "runtime": "External web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · original data required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "corsixth",
      "name": "CorsixTH",
      "url": "https://github.com/CorsixTH/CorsixTH",
      "playable": false,
      "runtime": "External engine project",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · original data required",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "freeciv-web",
      "name": "Freeciv-web",
      "url": "https://freeciv.github.io/freeciv-web/",
      "playable": false,
      "runtime": "External browser strategy",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · multi-service deployment",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "endless-sky",
      "name": "Endless Sky",
      "url": "https://endless-sky.github.io/",
      "playable": false,
      "runtime": "External desktop/web experiment",
      "controls": [],
      "launchMethod": "external-project-or-local-import",
      "status": "External link · WASM build not pinned",
      "actions": [
        "open-project"
      ],
      "agentStateSelector": null
    },
    {
      "id": "pacman-mit",
      "name": "Pacman",
      "url": "pacman.html",
      "playable": true,
      "runtime": "Bundled HTML5 runtime",
      "controls": [
        "keyboard",
        "touch",
        "fullscreen"
      ],
      "launchMethod": "local-runtime",
      "status": "READY / LOCAL · MIT bundle",
      "actions": [
        "open-runtime"
      ],
      "agentStateSelector": null
    }
  ]
}
