{
  "version": 1,
  "updated": "2026-09-09",
  "categories": [
    { "slug": "action",    "label": "Action",    "blurb": "Reflexes, crowds and things that chase you." },
    { "slug": "strategy",  "label": "Strategy",  "blurb": "Slow decisions that decide fast fights." },
    { "slug": "puzzle",    "label": "Puzzle",    "blurb": "One correct move, and it is not the obvious one." },
    { "slug": "arcade",    "label": "Arcade",    "blurb": "One button, one run, one score." },
    { "slug": "cards",     "label": "Cards",     "blurb": "Decks, draws and the maths underneath." },
    { "slug": "idle",      "label": "Idle",      "blurb": "Numbers that keep going while you look away." },
    { "slug": "adventure", "label": "Adventure", "blurb": "Somewhere to go and a reason to come back." },
    { "slug": "racing",    "label": "Racing",    "blurb": "The line through the corner." },
    { "slug": "3d",        "label": "3D",        "blurb": "Rendered in the browser, no plugin." },
    { "slug": "sandbox",   "label": "Sandbox",   "blurb": "No score. Poke at it and see." }
  ],
  "games": [
    {
      "slug": "nightfall-survivors",
      "title": "Nightfall: Survivors",
      "tagline": "Survive the haunted clearing until dawn.",
      "description": "You are alone in a clearing that keeps filling up. Your attacks aim themselves, so every choice you make is about where to stand and which skill to level next. Master the four elements, recruit companions from the treasure you open, and hold out long enough to meet all three bosses. A run is short. Losing one is normal.",
      "categories": ["action", "arcade"],
      "tags": ["survivors", "roguelite", "bullet-heaven", "boss-fight", "single-player", "short-runs"],
      "thumb": "/art/nightfall-survivors-thumb.svg",
      "banner": "/art/nightfall-survivors-banner.svg",
      "path": "/games/nightfall-survivors/",
      "orientation": "landscape",
      "controls": {
        "desktop": "WASD or arrow keys to move · E for nova · Space to dash",
        "touch": "Drag the stick to move · tap NOVA and DASH"
      },
      "hasTouch": true,
      "rating": 4.6,
      "plays": 184320,
      "addedAt": "2026-08-22",
      "featured": true,
      "status": "live"
    },
    {
      "slug": "emberdeck",
      "title": "Emberdeck",
      "tagline": "Twenty cards, three opponents, no packs to buy.",
      "description": "Build a deck of exactly twenty cards from three factions and take it into the Threefold Arena. Dawn trades attack for guard and healing, Ember pressures early with fragile attackers, Tide spends its tempo on freeze and card draw. Every card is unlocked from the first match. There is no randomised pack and nothing to pay for, so a deck that beats the arena beat it on construction.",
      "categories": ["cards", "strategy"],
      "tags": ["deckbuilder", "turn-based", "pve", "fantasy", "single-player", "no-luck-boxes"],
      "thumb": "/art/emberdeck-thumb.svg",
      "banner": "/art/emberdeck-banner.svg",
      "path": "/games/emberdeck/",
      "orientation": "any",
      "controls": {
        "desktop": "Click a card to play it · click a unit, then a target, to attack",
        "touch": "Tap a card to play it · tap a unit, then a target, to attack"
      },
      "hasTouch": true,
      "rating": 4.3,
      "plays": 92140,
      "addedAt": "2026-08-19",
      "featured": false,
      "status": "live"
    },
    {
      "slug": "routefront",
      "title": "Routefront",
      "tagline": "Open the shortest road to the enemy keep.",
      "description": "Three fixed routes run between your citadel and the Ashen Keep, and most of them are blocked. Spend supplies on troops, on the bridges that unblock a route, or on research that makes both cheaper — the whole game is that one budget. Your army walks the path you opened, so the map is the strategy and the fighting is the consequence.",
      "categories": ["strategy", "idle"],
      "tags": ["idle", "siege", "incremental", "rts-lite", "pathfinding", "single-player"],
      "thumb": "/art/routefront-thumb.svg",
      "banner": "/art/routefront-banner.svg",
      "path": "/games/routefront/",
      "orientation": "landscape",
      "controls": {
        "desktop": "Mouse · panel tabs manage army, routes and research · +/− to zoom",
        "touch": "Tap the panel tabs · pinch the map to zoom"
      },
      "hasTouch": true,
      "rating": 4.1,
      "plays": 61780,
      "addedAt": "2026-08-25",
      "featured": false,
      "status": "live"
    },
    {
      "slug": "warrior-studio",
      "title": "Warrior Studio",
      "tagline": "Take an armoured warrior apart and watch him move.",
      "description": "A model viewer rather than a game: one articulated warrior, eight animation clips, and a timeline you can scrub frame by frame. Strip the helmet, sword, shield or cape, recolour the cloth and steel, switch on the wireframe, and download the whole rig as an animated GLB when you are done looking.",
      "categories": ["3d", "sandbox"],
      "tags": ["3d", "model-viewer", "animation", "glb", "webgl", "no-fail-state"],
      "thumb": "/art/warrior-studio-thumb.svg",
      "banner": "/art/warrior-studio-banner.svg",
      "path": "/games/warrior-studio/",
      "orientation": "landscape",
      "controls": {
        "desktop": "Drag to orbit · scroll to zoom · right-drag to pan",
        "touch": "Drag to orbit · pinch to zoom · two fingers to pan"
      },
      "hasTouch": true,
      "rating": 4.4,
      "plays": 38650,
      "addedAt": "2026-08-14",
      "featured": false,
      "status": "live"
    },
    {
      "slug": "skyweave",
      "title": "Skyweave",
      "tagline": "Ride the thermals across a hand-drawn sky.",
      "description": "A kite with a very long tail, a sky full of rising air, and landmarks worth crossing the map for. Nothing chases you and nothing runs out — the whole game is reading where the air goes and letting it carry you somewhere you have not been.",
      "categories": ["adventure", "3d"],
      "tags": ["flight", "exploration", "relaxing", "kite", "3d", "no-fail-state"],
      "thumb": "/art/skyweave-thumb.svg",
      "banner": "/art/skyweave-banner.svg",
      "path": "/games/skyweave/",
      "orientation": "landscape",
      "controls": {
        "desktop": "Mouse or arrow keys to steer · hold to dive",
        "touch": "Drag to steer · hold to dive"
      },
      "hasTouch": true,
      "rating": 4.7,
      "plays": 121400,
      "addedAt": "2026-08-11",
      "featured": false,
      "status": "porting"
    },
    {
      "slug": "riftbound-realms",
      "title": "Riftbound Realms",
      "tagline": "Raise a party, clear the rifts, hold the town.",
      "description": "A town you rebuild between runs and a set of rifts that get worse while you do it. Recruit a party, pick the order they act in, and spend what you bring home on the buildings that make the next descent survivable. Turn-based fights, permanent town, expendable heroes.",
      "categories": ["adventure", "strategy"],
      "tags": ["rpg", "turn-based", "dungeon", "party", "town-building", "long-session"],
      "thumb": "/art/riftbound-realms-thumb.svg",
      "banner": "/art/riftbound-realms-banner.svg",
      "path": "/games/riftbound-realms/",
      "orientation": "landscape",
      "controls": {
        "desktop": "Mouse · number keys select party members",
        "touch": "Tap to select and confirm"
      },
      "hasTouch": true,
      "rating": 4.2,
      "plays": 74980,
      "addedAt": "2026-08-06",
      "featured": false,
      "status": "porting"
    },
    {
      "slug": "run-and-gun",
      "title": "Run and Gun",
      "tagline": "Clear the room. Shoot the door open. Take what was behind it.",
      "description": "A top-down run-and-gun through a facility that has stopped answering. Every room locks behind you until the monsters in it are dead, and half the doors out are welded shut — so the way forward is whatever you are holding. Guns are found, not bought, and they run dry: a scattergun that moves the whole room, a ripper that never stops, a railspike that goes through the crowd and then through the door. When it goes wrong there is one air strike and a dash. Scrap you carry out is permanent, and it buys the guns that start appearing in the next run.",
      "categories": ["action", "arcade"],
      "tags": ["shooting", "top-down", "twin-stick", "monsters", "roguelite", "single-player", "short-runs", "gun"],
      "thumb": "/art/run-and-gun-thumb.svg",
      "banner": "/art/run-and-gun-banner.svg",
      "path": "/games/run-and-gun/",
      "orientation": "landscape",
      "controls": {
        "desktop": "WASD or arrows to move · mouse aims · hold to fire · SPACE dash · Q air strike",
        "touch": "Left thumb moves · right thumb aims and fires · AIR and DASH buttons"
      },
      "hasTouch": true,
      "rating": 4.4,
      "plays": 0,
      "addedAt": "2026-09-09",
      "featured": false,
      "status": "live"
    },

    {
      "slug": "neon-drift",
      "title": "Neon Drift",
      "tagline": "One long corner, taken flat out.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["racing", "arcade"],
      "tags": ["racing", "drift", "time-attack", "one-button"],
      "thumb": "/art/neon-drift-thumb.svg",
      "banner": "/art/neon-drift-banner.svg",
      "path": null,
      "orientation": "landscape",
      "controls": { "desktop": "Hold to drift", "touch": "Hold anywhere to drift" },
      "hasTouch": true,
      "rating": 4.0,
      "plays": 12500,
      "addedAt": "2026-06-14",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "block-cascade",
      "title": "Block Cascade",
      "tagline": "Clear the board in one falling chain.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["puzzle", "arcade"],
      "tags": ["match", "chain", "falling-blocks", "high-score"],
      "thumb": "/art/block-cascade-thumb.svg",
      "banner": "/art/block-cascade-banner.svg",
      "path": null,
      "orientation": "portrait",
      "controls": { "desktop": "Arrow keys to move, Z / X to rotate", "touch": "Swipe to move, tap to rotate" },
      "hasTouch": true,
      "rating": 4.5,
      "plays": 48900,
      "addedAt": "2026-07-02",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "hex-holdout",
      "title": "Hex Holdout",
      "tagline": "Six tiles of ground and nowhere to fall back to.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["strategy", "puzzle"],
      "tags": ["hex", "tactics", "turn-based", "defence"],
      "thumb": "/art/hex-holdout-thumb.svg",
      "banner": "/art/hex-holdout-banner.svg",
      "path": null,
      "orientation": "any",
      "controls": { "desktop": "Click a tile to place, right-click to cancel", "touch": "Tap to place, tap again to cancel" },
      "hasTouch": true,
      "rating": 4.2,
      "plays": 21400,
      "addedAt": "2026-06-28",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "orbit-runner",
      "title": "Orbit Runner",
      "tagline": "Let go at exactly the wrong moment.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["arcade", "action"],
      "tags": ["one-button", "endless", "high-score", "physics"],
      "thumb": "/art/orbit-runner-thumb.svg",
      "banner": "/art/orbit-runner-banner.svg",
      "path": null,
      "orientation": "portrait",
      "controls": { "desktop": "Space to release and grab", "touch": "Tap to release and grab" },
      "hasTouch": true,
      "rating": 3.9,
      "plays": 33100,
      "addedAt": "2026-07-11",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "pocket-armada",
      "title": "Pocket Armada",
      "tagline": "Twelve ships, one narrow sea.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["strategy", "action"],
      "tags": ["fleet", "real-time", "naval", "skirmish"],
      "thumb": "/art/pocket-armada-thumb.svg",
      "banner": "/art/pocket-armada-banner.svg",
      "path": null,
      "orientation": "landscape",
      "controls": { "desktop": "Drag to select, right-click to order", "touch": "Drag to select, tap to order" },
      "hasTouch": true,
      "rating": 4.1,
      "plays": 15600,
      "addedAt": "2026-06-05",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "lantern-path",
      "title": "Lantern Path",
      "tagline": "Light the way you already came.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["puzzle", "adventure"],
      "tags": ["light", "maze", "atmospheric", "story"],
      "thumb": "/art/lantern-path-thumb.svg",
      "banner": "/art/lantern-path-banner.svg",
      "path": null,
      "orientation": "any",
      "controls": { "desktop": "Arrow keys to walk, E to light", "touch": "Tap to walk, hold to light" },
      "hasTouch": true,
      "rating": 4.6,
      "plays": 27300,
      "addedAt": "2026-07-19",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "scrapyard-mech",
      "title": "Scrapyard Mech",
      "tagline": "Bolt on whatever survived the last fight.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["action", "3d"],
      "tags": ["mech", "loadout", "arena", "3d"],
      "thumb": "/art/scrapyard-mech-thumb.svg",
      "banner": "/art/scrapyard-mech-banner.svg",
      "path": null,
      "orientation": "landscape",
      "controls": { "desktop": "WASD to move, mouse to aim", "touch": "Stick to move, tap to fire" },
      "hasTouch": true,
      "rating": 4.0,
      "plays": 19800,
      "addedAt": "2026-06-21",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    },
    {
      "slug": "tidepool",
      "title": "Tidepool",
      "tagline": "Leave it alone and it fills itself in.",
      "description": "Placeholder entry. Replace with a real game or delete before launch.",
      "categories": ["idle", "sandbox"],
      "tags": ["idle", "ecosystem", "relaxing", "offline-progress"],
      "thumb": "/art/tidepool-thumb.svg",
      "banner": "/art/tidepool-banner.svg",
      "path": null,
      "orientation": "any",
      "controls": { "desktop": "Click to seed, drag to move water", "touch": "Tap to seed, drag to move water" },
      "hasTouch": true,
      "rating": 4.3,
      "plays": 41200,
      "addedAt": "2026-07-08",
      "featured": false,
      "status": "placeholder",
      "placeholder": true
    }
  ]
}
