{"service":"Gameboard Agent API","description":"Play Gameboard's turn-based games programmatically. Each game exposes a stateless two-call loop that an LLM or script can drive.","howToPlay":{"step1":"GET /api/games/{slug}/init?seed={number} returns { stateToken, observation, legalActions, spec, score, gameOver }. The spec field is self-documenting (goal, scoring, rules, action grammar). Read the game from observation: it is the fog-aware view, and it is everything you are meant to know.","step2":"POST /api/games/{slug}/action with JSON { stateToken, action } returns the next stateToken and observation. The API is stateless, so send the newest stateToken back on every call.","stateToken":"An opaque, encrypted, single-game handle to your game state. Round-trip it verbatim; do not read, edit or build one. It carries the information a game hides from you (unrevealed mines, a puzzle solution, the generator seed), which is why it is sealed rather than sent in the clear. A token is bound to one game and expires after 24 hours of no moves; an altered, expired, or foreign token is rejected with HTTP 400, and you start again from /init.","choosingActions":"Always pick an action from legalActions. An illegal action returns { ok:false, reason, legalActions } with HTTP 200 and leaves the game where it was, so retry with a valid action and the token you already hold."},"docs":"https://www.gameboard.gg/docs/api","count":72,"games":[{"slug":"ashkite","name":"Ashkite","genre":"arcade","description":"Your tank is your fuel, your health and your guns all at once, so clear whole flights to keep it lit.","goal":"You fly a small brass kite straight up a burning smoke column. There is exactly one number in the whole game, energy, and it is your fuel, your health, your dodge budget and your gun all at once. It drains every single tick you are airborne, so doing nothing is fatal by arithmetic: an untouched tank empties in about 33 seconds at climb 1 and about 21 seconds once the ramp caps. The only ways to refill it are fuel canisters, and a canister only drops when you destroy EVERY member of a flight by gunfire before any of them leaves the screen, plus the three fuel bladders on the Bellows at the end of each climb. Partial kills pay points but no fuel, so chipping at whatever is closest starves you. Getting hit is a price rather than a death: a shot costs 900 energy and ramming a hull costs 1500, and neither ends the run by itself. The run ends when energy reaches 0, or when you send end_run, which is legal at any moment while you are flying as well as at a climb break and always keeps your score as a win. There is no climb cap, no wave count and no clock, so how far you get is set entirely by how long you can keep the tank lit.","initUrl":"https://www.gameboard.gg/api/games/ashkite/init","actionUrl":"https://www.gameboard.gg/api/games/ashkite/action","docsUrl":"https://www.gameboard.gg/docs/api/ashkite"},{"slug":"baskmere","name":"Baskmere","genre":"puzzle","description":"Little turtles climb onto big ones. Stack the pond turtles into their sunny spots before the daylight runs out!","goal":"Baskmere is an endless ladder of sorting ponds. Each pond has a row of 3 to 5 basking rocks and pond turtles numbered by size, 1 the smallest. Every pond shows a plan, a full target layout of which turtles each rock should hold. Move turtles one at a time until every pile matches the plan, then drift on to the next pond. Every move spends Daylight, and each pond grants exactly enough for its par (the true minimum, found by exhaustive search) plus a spare that shrinks as you travel. Unused Daylight carries forward. The run ends when the Daylight left can no longer settle the current pond, or when you send END_RUN. Points are only ever added: nothing you earned is ever taken back. Precise play can continue indefinitely; there is no last pond.","initUrl":"https://www.gameboard.gg/api/games/baskmere/init","actionUrl":"https://www.gameboard.gg/api/games/baskmere/action","docsUrl":"https://www.gameboard.gg/docs/api/baskmere"},{"slug":"bomb-field","name":"Bomb Field","genre":"puzzle","description":"Clear the board without hitting a mine. Flag what you suspect.","goal":"Clear a 9x9 minefield: reveal every cell that does NOT contain a mine. There are 10 hidden mines. Revealing a mine ends the run.","initUrl":"https://www.gameboard.gg/api/games/bomb-field/init","actionUrl":"https://www.gameboard.gg/api/games/bomb-field/action","docsUrl":"https://www.gameboard.gg/docs/api/bomb-field"},{"slug":"brassrise","name":"Brassrise","genre":"arcade","description":"Run the grand hotel lifts. Keep the guests moving as the night gets busier and busier!","goal":"Run the lift of a grand hotel through an ENDLESS night shift. The building has up to 7 floors indexed 0 to 6; floor 0 is the Lobby. A shift starts with 4 floors active and higher floors unlock as later waves approach. Guests keep arriving on the landings for as long as the shift lasts, each showing its destination and a draining patience ring. You steer the cars with a single verb: call one to a floor. Doors open only at that car's target floor, and when they do, riders for that floor step off and waiting guests board by themselves. A shift opens with 1 car, the east car. Once the first 28 guests have all arrived, the hotel opens a second shaft: the west car enters service at floor 6, and from then on you steer 2 cars with the same verb. The shift ends once 5 guests have run out of patience and taken the stairs, so the run is as long as your routing keeps it. No points are ever lost and the score never goes down.","initUrl":"https://www.gameboard.gg/api/games/brassrise/init","actionUrl":"https://www.gameboard.gg/api/games/brassrise/action","docsUrl":"https://www.gameboard.gg/docs/api/brassrise"},{"slug":"briarwink","name":"Briarwink","genre":"arcade","description":"Plant moon pods, bloom the briar and relight the grumpy dimlings. How many moonlit nights can you tend?","goal":"Briarwink is an endless night garden on a 7 by 9 grid of 63 cells: cell = y * 7 + x, x runs 0 to 6 left to right, y runs 0 to 8 top to bottom, neighbours are orthogonal and nothing wraps. You are the gardener. Grumpy dimlings wander the moss between moonstones and plum briar. You plant moon pods, and 66 ticks later a pod bursts into a bloom of moonlight along its row and column, up to its reach each way. Moonlight clears briar, wakes other pods so they chain, and relights every dimling it touches back into a firefly; it also dazzles you if you stand in it. When every dimling of the night is relit, the moon gate opens on the cell of the last relight, and stepping onto it (or standing on it when it opens) clears the night. Between nights you choose to start the next night or to end the run and keep your score. A night never times out, but the garden pushes back: after a calm spell briar creeps in from the edge and the dimlings grow restless, cleared paths sprout fresh briar from night 4, new dimling kinds keep arriving, and from night 13 some nights are moonless. The run finishes when your hearts run out or when you send endRun, and the aim is simply to score as much as you can over as many nights as you can.","initUrl":"https://www.gameboard.gg/api/games/briarwink/init","actionUrl":"https://www.gameboard.gg/api/games/briarwink/action","docsUrl":"https://www.gameboard.gg/docs/api/briarwink"},{"slug":"brinebell","name":"Brinebell","genre":"strategy","description":"Keep the island ferries flowing. Match destinations, make room and bring the whole bay together!","goal":"Deliver island passengers for points. Keep sailing indefinitely, or bank the earned score. The run also finishes after 5 waiting departures. There is no time or score finish.","initUrl":"https://www.gameboard.gg/api/games/brinebell/init","actionUrl":"https://www.gameboard.gg/api/games/brinebell/action","docsUrl":"https://www.gameboard.gg/docs/api/brinebell"},{"slug":"cantlewing","name":"Cantlewing","genre":"puzzle","description":"Guide a canopy courier across a balance beam with two clever counterweights.","goal":"Guide the mass-2 courier from coordinate -2 to +2 on a five-foothold balance beam by walking and moving two separate seed counterweights. Reach +2 within the move allowance, choose Next Crossing, and repeat the eight-board circuit indefinitely. Only Stop and Bank or spending the third reserve ends a run. There is no clock, final introductory victory, score target or automatic advancement. All five winds, masses, positions and resulting force previews are observable.","initUrl":"https://www.gameboard.gg/api/games/cantlewing/init","actionUrl":"https://www.gameboard.gg/api/games/cantlewing/action","docsUrl":"https://www.gameboard.gg/docs/api/cantlewing"},{"slug":"causeway","name":"Causeway","genre":"board","description":"Raise basalt columns and link the near shore to the far shore before G-Bot crosses the strait.","goal":"You are amber on a 9x9 rhombus of 81 hexagonal basalt columns, and you move first. Each turn you raise exactly one empty column. You win the instant your amber columns form an unbroken chain of touching hexagons from your far shore (row 1, the top) to your near shore (row 9, the bottom). G-Bot raises slate teal columns and is crossing the same ground the other way, from its west shore (column A) to its east shore (column I). This is a hex-grid connection game on one shared piece of ground: nothing is ever captured or removed, so every column you raise is both a step forward for you and a wall in front of G-Bot.","initUrl":"https://www.gameboard.gg/api/games/causeway/init","actionUrl":"https://www.gameboard.gg/api/games/causeway/action","docsUrl":"https://www.gameboard.gg/docs/api/causeway"},{"slug":"checkers","name":"Checkers","genre":"board","description":"Classic checkers against G-Bot. Capture all pieces to win.","goal":"Standard 8x8 checkers (draughts) against G-Bot. You play the red pieces and move first. Win by capturing all of G-Bot's pieces or leaving it with no legal move.","initUrl":"https://www.gameboard.gg/api/games/checkers/init","actionUrl":"https://www.gameboard.gg/api/games/checkers/action","docsUrl":"https://www.gameboard.gg/docs/api/checkers"},{"slug":"chimestep","name":"Chimestep","genre":"arcade","description":"Ring every tile of the dawn carillon before the Hush reaches you. Hop the tiers and make the whole thing sing!","goal":"Ring every tile of a fixed stepped pyramid. The board is 7 tiers of tiles, 28 in all: tier 0 is a single tile at the apex and tier 6 is 7 tiles at the base, with 0 <= col <= row inside each tier. It is the same board on every stage, forever; only the threat and the required level change. You are a wading bird chick standing on one tile. You move along the four diagonals of the lattice: downLeft (row+1, col), downRight (row+1, col+1), upLeft (row-1, col-1), upRight (row-1, col). There is no wait action and no way to stand still except to let ticks pass. Every landing strikes the tile and raises its level by one, up to the stage's target level (1 or 2, never more). The stage clears the instant every one of the 28 tiles is at the target level, which the state reports as remaining = 0. Landing on a tile that is already at the target is legal and safe and simply does nothing except break your chain. YOU CAN NEVER LOWER A TILE. Only a muffle can. Stages are endless and the run ends when your last life is gone.","initUrl":"https://www.gameboard.gg/api/games/chimestep/init","actionUrl":"https://www.gameboard.gg/api/games/chimestep/action","docsUrl":"https://www.gameboard.gg/docs/api/chimestep"},{"slug":"color-flood","name":"Color Flood","genre":"puzzle","description":"Flood the board with one color in 25 moves or fewer.","goal":"Flood the entire 14×14 board with a single colour. The flood region starts at the top-left corner (0,0); each move repaints that connected region to a chosen colour, absorbing any neighbouring cells that now match. You win when every cell is the same colour, and you have at most 25 moves.","initUrl":"https://www.gameboard.gg/api/games/color-flood/init","actionUrl":"https://www.gameboard.gg/api/games/color-flood/action","docsUrl":"https://www.gameboard.gg/docs/api/color-flood"},{"slug":"cordwright","name":"Cordwright","genre":"puzzle","description":"Swap brass charms, untangle the cords and keep your workshop growing.","goal":"Swap brass charms between fixed sockets to remove every proper crossing pair from each cord frame. Any crossing-free arrangement clears. Choose Next Frame after a clear or skip to continue indefinitely at a stable nine-socket plateau from frame 7 onward. Bank alone ends the run and retains completed-frame points. There is no clock, life limit, forced failure or final frame.","initUrl":"https://www.gameboard.gg/api/games/cordwright/init","actionUrl":"https://www.gameboard.gg/api/games/cordwright/action","docsUrl":"https://www.gameboard.gg/docs/api/cordwright"},{"slug":"cragwake","name":"Cragwake","genre":"puzzle","description":"Every move costs. Read the wall, spend your stamina well and reach the next ledge.","goal":"Climb an ENDLESS wall six columns wide, one action a turn. Every ten rows there is a belay ledge: reach it and the pitch completes, your stamina refills and you choose whether to carry on. Stamina is the whole game. Every move spends some, and the only income is standing on a big rounded jug and breathing, which costs you a turn while the wall gets worse. There is no clock and no opponent: the wall reacts only when you act, so you can take as long as you like over a turn. There is no final pitch. The wall keeps getting harder until pitch 34, and above that it holds at a fixed maximum severity while the pitch award keeps growing forever.","initUrl":"https://www.gameboard.gg/api/games/cragwake/init","actionUrl":"https://www.gameboard.gg/api/games/cragwake/action","docsUrl":"https://www.gameboard.gg/docs/api/cragwake"},{"slug":"crate-push","name":"Crate Push","genre":"puzzle","description":"Push all crates onto the targets to solve each puzzle.","goal":"Solve 5 crate pushing levels: push every crate (C) onto a target (T). A level is done when all targets are covered, then the next loads; solve all 5 to finish.","initUrl":"https://www.gameboard.gg/api/games/crate-push/init","actionUrl":"https://www.gameboard.gg/api/games/crate-push/action","docsUrl":"https://www.gameboard.gg/docs/api/crate-push"},{"slug":"critter-lineup","name":"Critter Lineup","genre":"puzzle","description":"Line up adorable animals into matching groups. Tap to pick up, tap to drop. Pure logic, no time pressure.","goal":"Sort a set of tubes of stacked critters so that every tube holds a single colour (or is empty). Each level is a fresh, harder scramble (more colours, deeper tangles); clearing a level advances to the next, and the objective is the highest cumulative score across the run.","initUrl":"https://www.gameboard.gg/api/games/critter-lineup/init","actionUrl":"https://www.gameboard.gg/api/games/critter-lineup/action","docsUrl":"https://www.gameboard.gg/docs/api/critter-lineup"},{"slug":"delvewick","name":"Delvewick","genre":"arcade","description":"Dig the old mine, gather gems and mind the rumbling boulders.","goal":"Guide a mole prospector through 8 handcrafted underground levels. Each level is a small grid framed in bedrock; you dig through soil one cell at a time, gather gems until the level's gem quota is met (which opens the exit hatch, X becomes E), then step onto the open exit to bank the clear bonus and descend. Clearing level 8 wins the run. Every accepted action (move up/down/left/right or wait) advances the whole world exactly one tick; between actions everything is frozen, even mid-fall. Score as much as you can: gems, chains, geode cracks, level clears and unused oil all pay, and the score never decreases.","initUrl":"https://www.gameboard.gg/api/games/delvewick/init","actionUrl":"https://www.gameboard.gg/api/games/delvewick/action","docsUrl":"https://www.gameboard.gg/docs/api/delvewick"},{"slug":"dewspout","name":"Dewspout","genre":"puzzle","description":"Fill, pour and measure the perfect dew for a little glasshouse. Grow one garden after another!","goal":"Measure the exact dew targets in three vessels A, B and C at the same time. Fill, empty and fully pour to solve a garden, then choose Next Garden to keep growing indefinitely. Only Bank ends the run; it keeps points from completed gardens, including a valid zero-score stop. There is no clock, loss, move limit or final garden. Garden 1 has capacities [3,5,8], starts empty, and targets [0,0,5] with Par 2: Fill B, then pour B into C.","initUrl":"https://www.gameboard.gg/api/games/dewspout/init","actionUrl":"https://www.gameboard.gg/api/games/dewspout/action","docsUrl":"https://www.gameboard.gg/docs/api/dewspout"},{"slug":"dice-dash","name":"Dice Dash","genre":"strategy","description":"Roll, hold, and score. Fill all 8 categories for the highest total!","goal":"Score as many points as possible across 8 rounds of dice. Each round you roll 5 dice and may re-roll up to twice (3 rolls total), holding the dice you want to keep between rolls, then commit the dice to one of 8 scoring categories. Every category is used exactly once — fill all 8 for the highest total.","initUrl":"https://www.gameboard.gg/api/games/dice-dash/init","actionUrl":"https://www.gameboard.gg/api/games/dice-dash/action","docsUrl":"https://www.gameboard.gg/docs/api/dice-dash"},{"slug":"dots-and-boxes","name":"Dots and Boxes","genre":"board","description":"Connect the dots to claim boxes · capture more territory than G-Bot.","goal":"Claim more of the 16 boxes than G-Bot. The board is a 5×5 grid of dots forming a 4×4 lattice of boxes. On your turn you draw one un-drawn edge between two adjacent dots. Whoever draws the 4th side of a box claims that box.","initUrl":"https://www.gameboard.gg/api/games/dots-and-boxes/init","actionUrl":"https://www.gameboard.gg/api/games/dots-and-boxes/action","docsUrl":"https://www.gameboard.gg/docs/api/dots-and-boxes"},{"slug":"dungeon-descent","name":"Dungeon Descent","genre":"strategy","description":"Explore procedural dungeons, fight monsters, and collect gold across 5 floors.","goal":"Descend through 5 procedurally generated floors. Reach the stairs '>' on each floor and descend; clearing floor 5 wins. Your score is the gold you collect.","initUrl":"https://www.gameboard.gg/api/games/dungeon-descent/init","actionUrl":"https://www.gameboard.gg/api/games/dungeon-descent/action","docsUrl":"https://www.gameboard.gg/docs/api/dungeon-descent"},{"slug":"duskcourt","name":"Duskcourt","genre":"puzzle","description":"Every move is a capture. Clear the sandstone court until one idol stands, then climb the next rung!","goal":"A small sandstone court holds a handful of carved animal idols, and there is exactly one verb: capture. Every move takes an idol with another idol; there is no move to an empty square. Clear the court by capturing until one idol stands alone, and the next rung deals a harder court: more idols, then a bigger court, then more decoys, then the two twists (a jackal that can never be taken and must make the last take, and fallen boulders that block the running idols). The tension is that every capture removes a capturer: take the wrong idol first and the one that could have finished the job is gone. When idols remain and no capture exists anywhere, the court is stuck, a life is lost and a fresh court is dealt at the same rung. You have 3 lives and they do not come back. The ladder never ends: it keeps climbing until your lives run out or you stop at a break and keep your score. Play it backwards: find the idol that could make the last take, then the one before it, and play the chain forwards.","initUrl":"https://www.gameboard.gg/api/games/duskcourt/init","actionUrl":"https://www.gameboard.gg/api/games/duskcourt/action","docsUrl":"https://www.gameboard.gg/docs/api/duskcourt"},{"slug":"emberdown","name":"Emberdown","genre":"arcade","description":"Pilot a lantern skiff down a dusk gorge and land softly on village platforms. Feather the burner!","goal":"Pilot a lantern skiff down a dusk mountain gorge and land gently on the glowing village pads, descent after descent, until the lantern fuel runs out. The world is 360 wide and 480 tall, y measured up from the bottom; you spawn near the top with sideways drift and sink under gravity. Three pads are carved into each round's terrain: wide x1, medium x2, narrow x3 (the narrow pad always sits near a gorge wall). A landing needs BOTH skid points (x - 10 and x + 10) fully on one pad with |vy| <= 55 and |vx| <= 40 at touchdown; any other terrain contact ends the run. After each landing the gorge rebuilds a little tougher, part of your fuel refills, and you descend again. There is no round cap: score as many gentle landings as you can.","initUrl":"https://www.gameboard.gg/api/games/emberdown/init","actionUrl":"https://www.gameboard.gg/api/games/emberdown/action","docsUrl":"https://www.gameboard.gg/docs/api/emberdown"},{"slug":"farloft","name":"Farloft","genre":"strategy","description":"Read the wind, set your arc and land the shot before G-Bot finds the range.","goal":"You and G-Bot sit at opposite ends of a ridge, 1600 units apart at the start, with breakable ground in between. On your turn you choose two whole numbers, an elevation angle and a power, and send one shell over. It arcs under gravity while the wind pushes it sideways the whole way. Land it close to G-Bot and its armour comes down. Land it anywhere else and it blows a crater in the ridge, which changes the shape of the problem for both of you. G-Bot replies inside the same action, so the state you get back is always your turn again, a finished round, or a finished rung. Take two rounds and the rung is yours, and then the ladder gives you a harder one: the emplacements move further apart, the wind gets stronger, the ridge gets rougher and G-Bot gets more armour, while your score carries over. The run ends when G-Bot takes a rung from you, or when you choose to stop and keep what you have. You never get to aim directly: you guess, read how far off you were, and correct. That bracket is the whole game.","initUrl":"https://www.gameboard.gg/api/games/farloft/init","actionUrl":"https://www.gameboard.gg/api/games/farloft/action","docsUrl":"https://www.gameboard.gg/docs/api/farloft"},{"slug":"fernford","name":"Fernford","genre":"arcade","description":"Hop a moonlit fox home through traffic and brooks. The world only moves when you do!","goal":"Guide a fox kit north to the home glade. The board is 7 columns (0 left to 6 right) and rows 0 (start) to 150 (home glade); you begin at row 0, col 3. The world is frozen until you act: each accepted action advances every vehicle, every driftwood float and the mist schedule by exactly one tick. Reach any cell of row 150 to win. The run ends early if a vehicle catches the fox, the fox stands in open water, or the rising mist reaches the fox's row. Score as much as you can either way: new rows, streaks, pickups and milestones all pay.","initUrl":"https://www.gameboard.gg/api/games/fernford/init","actionUrl":"https://www.gameboard.gg/api/games/fernford/action","docsUrl":"https://www.gameboard.gg/docs/api/fernford"},{"slug":"flip-grid","name":"Flip Grid","genre":"board","description":"Outflip your opponent on a 6x6 board. Claim Power Cells for explosive combos!","goal":"You are Blue. Place discs to sandwich and flip G-Bot's (Red) discs; finish with more discs than Red when the 6x6 board fills or neither side can move.","initUrl":"https://www.gameboard.gg/api/games/flip-grid/init","actionUrl":"https://www.gameboard.gg/api/games/flip-grid/action","docsUrl":"https://www.gameboard.gg/docs/api/flip-grid"},{"slug":"four-in-a-row","name":"Four in a Row","genre":"board","description":"Drop discs to connect four in a row before G-Bot does.","goal":"You are X on a 7-wide, 6-tall vertical board. Drop discs into columns (they fall to the lowest empty cell) and be the first to line up four of your own discs horizontally, vertically, or diagonally, before G-Bot (O) does.","initUrl":"https://www.gameboard.gg/api/games/four-in-a-row/init","actionUrl":"https://www.gameboard.gg/api/games/four-in-a-row/action","docsUrl":"https://www.gameboard.gg/docs/api/four-in-a-row"},{"slug":"glasswend","name":"Glasswend","genre":"arcade","description":"Weave threads of light across dark glass to relight the window. The bigger the cut, the bigger the score!","goal":"Relight a great stained glass window, pane by pane. The board is 24 cells wide and 32 tall, cell index = y * 24 + x with (0,0) at the top left. The outer ring is permanently lit leadwork and is safe ground; the 660 interior cells start dark. You steer a glimmer moth that never stops moving. Step off lit ground into the dark and the moth begins drawing a luminous thread behind it and is exposed for exactly as long as that thread stays open. Step back onto any lit cell and the thread seals: it turns to light, and every connected pocket of dark that no shadow mote is standing in floods with light at once. Light the pane's target percentage of the interior and the next pane begins. Clearing pane 15 completes the window and ends the run.","initUrl":"https://www.gameboard.gg/api/games/glasswend/init","actionUrl":"https://www.gameboard.gg/api/games/glasswend/action","docsUrl":"https://www.gameboard.gg/docs/api/glasswend"},{"slug":"glimfall","name":"Glimfall","genre":"arcade","description":"Fall down a kiln shaft and step your light around the rim. Thread every break, sweep every mote!","goal":"Ride the Glim, a single light on a closed ring called the Collar, down a vertical shaft. The Collar carries 12 brackets indexed 0 to 11, bracket 0 sits at twelve o'clock and the index rises clockwise. Rings of stone called Ribs climb toward you out of the dark, each carrying a small set of open brackets. Be standing on an open bracket when a Rib arrives and you thread it; be standing on stone and the Rib knocks, which spends a Spark. Loose lights called Motes are strung through the shaft between Rib arrivals and are gathered simply by occupying their bracket as they pass. The Glim never rises or falls and never moves faster: the only thing you control is which bracket it occupies. The run is endless and ends only when the last Spark is spent, so how deep you get and how bright you keep the Blaze is the whole of it.","initUrl":"https://www.gameboard.gg/api/games/glimfall/init","actionUrl":"https://www.gameboard.gg/api/games/glimfall/action","docsUrl":"https://www.gameboard.gg/docs/api/glimfall"},{"slug":"glowmarch","name":"Glowmarch","genre":"arcade","description":"Sigils on the floor, a stream that never stops. Guide the Chalkbacks home without ever touching one.","goal":"Guide a stream of small armoured creatures called Chalkbacks into the Haven. The cavern is a fixed 18 by 20 grid of cells, index x plus y times 18, and it is fully visible at all times. Chalkbacks pour from each Spout on a fixed cadence and walk on their own: they turn at every wall, step up a single ledge, fall down everything else, and keep going until something changes their mind. YOU NEVER TOUCH ONE. Your only verb is writing on a cell. Three of the five marks are sigils (curl, gnaw, burrow) that hand a role to the FIRST Chalkback on foot to enter that cell, and two are works (shelf, puffcap) that reshape the rock the instant they land. Each stage asks for `need` arrivals out of a `cohort`; reach it and the stage clears, and the stages run on forever with the cadence tightening. Nothing in this game deals damage, has range, or is purchased.","initUrl":"https://www.gameboard.gg/api/games/glowmarch/init","actionUrl":"https://www.gameboard.gg/api/games/glowmarch/action","docsUrl":"https://www.gameboard.gg/docs/api/glowmarch"},{"slug":"grid-toggle","name":"Grid Toggle","genre":"puzzle","description":"Toggle cells to turn them all off. Each click flips the cell and its neighbors.","goal":"Turn every cell on a 5×5 grid off (a 'Lights Out' puzzle). Each move toggles one cell and its four orthogonal neighbours; find the combination of toggles that clears the whole board. Every generated puzzle is solvable.","initUrl":"https://www.gameboard.gg/api/games/grid-toggle/init","actionUrl":"https://www.gameboard.gg/api/games/grid-toggle/action","docsUrl":"https://www.gameboard.gg/docs/api/grid-toggle"},{"slug":"hourloom","name":"Hourloom","genre":"puzzle","description":"Every lap you finish comes back as a ghost of your former self. Your past holds the doors open, and stands in your way.","goal":"Cross an ENDLESS descent of chambers, one tile a turn. A chamber holds several laps; a lap runs from your alcove, through that lap's keystone, to the exit pad, inside the sandglass budget for that lap. The moment you finish a lap it is written into the chamber's memory: on every later lap an echo of you starts on your old alcove and replays your exact inputs, one step per turn, beside you. Finish the last lap of a chamber to seal it, then descend to a deeper one or keep your score. There is no final chamber and no clock on the run: the sandglass bounds a lap, never the descent.","initUrl":"https://www.gameboard.gg/api/games/hourloom/init","actionUrl":"https://www.gameboard.gg/api/games/hourloom/action","docsUrl":"https://www.gameboard.gg/docs/api/hourloom"},{"slug":"ice-slide","name":"Ice Slide","genre":"puzzle","description":"Slide across the ice, dodge the rocks, and reach the exit!","goal":"Slide a character across a frozen grid to reach the exit, clearing 20 increasingly tricky levels for the highest total score. On every slide the character glides in the chosen direction and does not stop until it hits a wall, a rock, or the edge of the board — you cannot stop mid-slide. Some levels scatter gems that must all be collected (by sliding over them) before the exit unlocks. Land exactly on the exit, with every gem collected, to clear the level and advance.","initUrl":"https://www.gameboard.gg/api/games/ice-slide/init","actionUrl":"https://www.gameboard.gg/api/games/ice-slide/action","docsUrl":"https://www.gameboard.gg/docs/api/ice-slide"},{"slug":"keelhold","name":"Keelhold","genre":"puzzle","description":"Stow crates along the deck and keep the barge level. Ship matching lots, and mind the lurch when they lift!","goal":"You are loading a barge. Seven hatches run across her deck, and each one sits a fixed distance from the keel, so a crate dropped into an outer hatch leans her over and a crate dropped into the middle one does not. Trim is that lean as a single whole number: negative to port, positive to starboard. Keep it inside the voyage's tolerance and she rides level; take it outside and she is listing, and the next crate has to bring her back. Crates arrive three at a time, each with a weight and a cargo type, and you choose which hatch each one goes into. Gather a manifest's worth of one cargo type in a single hatch and the whole lot ships out at once, which pays you and, because the weight leaves the hull in one beat, throws the trim the other way. That is the lurch, and it is the game: you are balancing a hull that keeps changing under you. Ship the voyage's quota of lots and you make port, where you may cast off on a harder voyage or stop and keep the score you have. There is no last voyage. The run ends when she goes over, when there is nowhere left to put the crate in hand, or when you decide you have gone far enough.","initUrl":"https://www.gameboard.gg/api/games/keelhold/init","actionUrl":"https://www.gameboard.gg/api/games/keelhold/action","docsUrl":"https://www.gameboard.gg/docs/api/keelhold"},{"slug":"lantern-volley","name":"Lantern Volley","genre":"arcade","description":"Bank glowing wisps off bamboo beams to light every lantern. Trick shots score big!","goal":"Light every paper lantern across 8 waves by firing glowing wisps from the brazier at (540, 1360). The only action is SHOOT with an aim angle in [15.0, 165.0] degrees, measured counterclockwise from the +x axis (screen y grows downward, so shots always travel upward). Each wave grants a fixed wisp allotment; wisps do not carry over. Clear wave 8 to win. Running out of wisps with unlit lanterns ends the round with your score kept.","initUrl":"https://www.gameboard.gg/api/games/lantern-volley/init","actionUrl":"https://www.gameboard.gg/api/games/lantern-volley/action","docsUrl":"https://www.gameboard.gg/docs/api/lantern-volley"},{"slug":"laser-reflect","name":"Laser Reflect","genre":"puzzle","description":"Place mirrors to guide the laser beam to its target.","goal":"Place mirrors on a grid to bend a laser beam from its off-grid source to the target cell, clearing 5 curated puzzles. A puzzle is solved the moment the beam passes through the target; solve all 5 to finish the run.","initUrl":"https://www.gameboard.gg/api/games/laser-reflect/init","actionUrl":"https://www.gameboard.gg/api/games/laser-reflect/action","docsUrl":"https://www.gameboard.gg/docs/api/laser-reflect"},{"slug":"lumen-blocks","name":"Lumen Blocks","genre":"puzzle","description":"Place glowing blocks to fill rows and columns. Clear lines to make room and chase your best.","goal":"Place small glowing polyomino pieces from a tray of three onto an 8x8 board to complete full rows and columns, which clear and free up space. It is an endurance high-score puzzle: there is no win and no lose-by-clock — you keep placing until none of the three tray pieces can fit anywhere, and the goal is the highest score. Pieces do NOT rotate, so read each shape and find where it actually fits.","initUrl":"https://www.gameboard.gg/api/games/lumen-blocks/init","actionUrl":"https://www.gameboard.gg/api/games/lumen-blocks/action","docsUrl":"https://www.gameboard.gg/docs/api/lumen-blocks"},{"slug":"maze-runner","name":"Maze Runner","genre":"puzzle","description":"Navigate the maze from start to finish as fast as you can.","goal":"Navigate from the start cell (0,0) to the goal cell (14,14) of a 15x15 maze.","initUrl":"https://www.gameboard.gg/api/games/maze-runner/init","actionUrl":"https://www.gameboard.gg/api/games/maze-runner/action","docsUrl":"https://www.gameboard.gg/docs/api/maze-runner"},{"slug":"memory-match","name":"Memory Match","genre":"memory","description":"Flip cards to find all matching pairs. Fewest moves wins.","goal":"Clear a 4x4 memory grid (16 cards = 8 pairs): flip cards two at a time to find every matching pair. Match all 8 pairs to win.","initUrl":"https://www.gameboard.gg/api/games/memory-match/init","actionUrl":"https://www.gameboard.gg/api/games/memory-match/action","docsUrl":"https://www.gameboard.gg/docs/api/memory-match"},{"slug":"mothfolio","name":"Mothfolio","genre":"puzzle","description":"Read the light clues, uncover each hidden signal and keep a little moth’s observatory glowing.","goal":"Infer each hidden four-symbol signal from aggregate In place and Elsewhere counts. Send meaningful probes, compare the current notebook and solve in at most eight untimed probes. After solving or revealing a signal, choose next to continue indefinitely. Only bank ends the run and keeps all points already earned. There is no clock, life limit or final signal.","initUrl":"https://www.gameboard.gg/api/games/mothfolio/init","actionUrl":"https://www.gameboard.gg/api/games/mothfolio/action","docsUrl":"https://www.gameboard.gg/docs/api/mothfolio"},{"slug":"naptuft","name":"Naptuft","genre":"strategy","description":"Care for a little cat, follow their wishes, and build a cosy streak.","goal":"Care for one little cat for as long as you choose by balancing four visible needs: food, joy, cleanliness, and energy. A day contains 12 care moments in three 4-moment windows. Each window has a visible ordered Little wish and household pressure, and the full current day plus the next window are forecast. Follow wishes when it is safe, maintain every need, and choose END_RUN at any time to bank the score. After a surviving day, choose NEXT_DAY to continue or END_RUN to bank. There is no last day and no action horizon; a run ends naturally if a need reaches zero or voluntarily when END_RUN is chosen.","initUrl":"https://www.gameboard.gg/api/games/naptuft/init","actionUrl":"https://www.gameboard.gg/api/games/naptuft/action","docsUrl":"https://www.gameboard.gg/docs/api/naptuft"},{"slug":"patchrook","name":"Patchrook","genre":"puzzle","description":"Turn little cloth patches into cosy woodland quilts. Find every fit and keep stitching!","goal":"Fit every cloth patch into the quilt without overlaps or gaps. Every completed quilt earns points. Next Quilt continues indefinitely; only Bank ends the run, including a valid zero-score Bank. There is no clock, loss, move limit or last quilt. Quilt 1 is an ordinary 3×3 lesson worth 300 points, with A, B and C. Its optional first fit is {\"type\":\"place\",\"patchId\":\"A\",\"orientation\":1,\"x\":0,\"y\":0}; the board starts empty and you may cancel the example or use any legal arrangement.","initUrl":"https://www.gameboard.gg/api/games/patchrook/init","actionUrl":"https://www.gameboard.gg/api/games/patchrook/action","docsUrl":"https://www.gameboard.gg/docs/api/patchrook"},{"slug":"pipe-connect","name":"Pipe Connect","genre":"puzzle","description":"Rotate pipes to connect the source to the drain.","goal":"Rotate the pipes on a 6×6 grid so that a continuous pipe path connects the SOURCE (top, cell [0,1], opens south) to the DRAIN (bottom, cell [5,4], opens north). The puzzle is solved the moment the source reaches the drain.","initUrl":"https://www.gameboard.gg/api/games/pipe-connect/init","actionUrl":"https://www.gameboard.gg/api/games/pipe-connect/action","docsUrl":"https://www.gameboard.gg/docs/api/pipe-connect"},{"slug":"pixel-puzzle","name":"Pixel Puzzle","genre":"puzzle","description":"Fill cells using number clues to reveal a hidden picture.","goal":"Solve 5 nonogram picture logic puzzles in order: Heart (5x5), Plus (5x5), Smiley (8x8), House (8x8), Mushroom (10x10). Use the row and column number clues to deduce which cells should be filled to reveal a hidden picture. A puzzle is solved when your filled cells EXACTLY match its solution; solving one advances to the next automatically, and solving all 5 completes the run.","initUrl":"https://www.gameboard.gg/api/games/pixel-puzzle/init","actionUrl":"https://www.gameboard.gg/api/games/pixel-puzzle/action","docsUrl":"https://www.gameboard.gg/docs/api/pixel-puzzle"},{"slug":"ravenward","name":"Ravenward","genre":"board","description":"Sneak your King to a corner before G-Bot's ravens close the ring. An ancient duel of stones.","goal":"Ravenward is a duel on a 7x7 board of 49 squares, indexed 0 to 48 with index = row * 7 + col, row 0 at the top and col 0 at the left. You play the King's side: one King starting on the central throne (square 24) and four defenders on squares 17, 23, 25 and 31. G-Bot plays eight raven attackers on squares 3, 10, 21, 22, 26, 27, 38 and 45. You win by ending one of your moves with the King standing on any corner square (0, 6, 42 or 48) before the ravens capture him.","initUrl":"https://www.gameboard.gg/api/games/ravenward/init","actionUrl":"https://www.gameboard.gg/api/games/ravenward/action","docsUrl":"https://www.gameboard.gg/docs/api/ravenward"},{"slug":"reef-builder","name":"Reef Builder","genre":"puzzle","description":"Place colorful coral pieces to build blooming reef chains!","goal":"Place colorful two-cell coral pieces onto an 8x6 reef to build orthogonally-connected groups of 4 or more same-color corals, which 'bloom' (clear) for points. It is an endurance high-score game: there is no win and no lose-by-mistake — you keep placing pieces until no placement fits any more (the board is too full), and the goal is the highest score.","initUrl":"https://www.gameboard.gg/api/games/reef-builder/init","actionUrl":"https://www.gameboard.gg/api/games/reef-builder/action","docsUrl":"https://www.gameboard.gg/docs/api/reef-builder"},{"slug":"relayroam","name":"Relayroam","genre":"strategy","description":"Explore a sky station, restore its relays and bring sleepy helper bots home.","goal":"Explore a sky station, repair every relay and enter the open exit. Helpers are optional rescues. Continue to Next Chamber after each clear for an endless three-layout cycle, or Bank Run to finish with all earned points. There is no clock or final chamber. Depleting charge outside a successful exit entry ends the run.","initUrl":"https://www.gameboard.gg/api/games/relayroam/init","actionUrl":"https://www.gameboard.gg/api/games/relayroam/action","docsUrl":"https://www.gameboard.gg/docs/api/relayroam"},{"slug":"rune-recall","name":"Rune Recall","genre":"memory","description":"Match mystical rune pairs from memory across 5 levels!","goal":"Clear 5 levels of a rune-matching memory game (Concentration). Each level is a grid of face-down tiles laid out in matching pairs; flip two tiles per turn to find a pair. A matched pair stays face-up; a mismatched pair is shown briefly then turned back face-down — remember what you saw. Match every pair on a level to clear it, then advance. The goal is the highest total score across all 5 levels.","initUrl":"https://www.gameboard.gg/api/games/rune-recall/init","actionUrl":"https://www.gameboard.gg/api/games/rune-recall/action","docsUrl":"https://www.gameboard.gg/docs/api/rune-recall"},{"slug":"runemill","name":"Runemill","genre":"board","description":"Line up three stones to form a mill and pick off G-Bot's pieces. The ancient game of nine.","goal":"You are Amber and move first; G-Bot is Frost. First you take turns 'placing' your nine stones on a 24-point board of three nested squares. Line up three of your stones on any of the 16 marked lines to form a mill and 'remove' one Frost stone. Once every stone is placed you 'move', sliding a stone along a line to an adjacent empty point (and, when a side is down to three stones, flying it to any empty point). Reduce G-Bot to two stones, or leave it with no legal move, to win.","initUrl":"https://www.gameboard.gg/api/games/runemill/init","actionUrl":"https://www.gameboard.gg/api/games/runemill/action","docsUrl":"https://www.gameboard.gg/docs/api/runemill"},{"slug":"seedwell","name":"Seedwell","genre":"board","description":"Sow seeds around the board and capture more than G-Bot. A fresh take on mancala.","goal":"Seedwell is mancala. You own the six pits 0..5 and the well to their right; G-Bot owns pits 7..12 and its own well. On your turn you 'sow' one of your non-empty pits: its seeds are scattered one per following slot counter-clockwise, dropping into your own well as you pass it but skipping G-Bot's well. Gather more seeds in your well than G-Bot by the time one side runs out.","initUrl":"https://www.gameboard.gg/api/games/seedwell/init","actionUrl":"https://www.gameboard.gg/api/games/seedwell/action","docsUrl":"https://www.gameboard.gg/docs/api/seedwell"},{"slug":"silkspan","name":"Silkspan","genre":"arcade","description":"Trail gold thread across the dark and close the loop to claim it. Cut deeper for more, but keep the moths off your line.","goal":"Weave silk across an ENDLESS ladder of panels. The field is a 36 by 48 grid of cells indexed from the top left; the 1-cell frame is woven before a panel opens, so the territory in play is the 1564 interior cells. The spinner walks freely on woven cells. Step off the woven edge into the dark and a live thread trails behind you; touch any woven cell again and the loop closes, every enclosed region holding no moth turns to silk, and it is yours. Reach the panel's coverage target and a fresh, harder panel opens. Moth count keeps rising forever and there is no final panel, so a run is as long as your weaving keeps it. No points are ever lost and the score never goes down.","initUrl":"https://www.gameboard.gg/api/games/silkspan/init","actionUrl":"https://www.gameboard.gg/api/games/silkspan/action","docsUrl":"https://www.gameboard.gg/docs/api/silkspan"},{"slug":"sliding-puzzle","name":"Sliding Puzzle","genre":"puzzle","description":"Slide numbered tiles into order as fast as you can.","goal":"Arrange the fifteen numbered tiles into reading order on a 4×4 board: 1, 2, 3, 4 across the top, then 5, 6, 7, 8, then 9, 10, 11, 12, then 13, 14, 15 — leaving the single empty square in the bottom-right corner. Each move slides one tile that sits orthogonally next to the empty square into that empty square (equivalently, the empty square steps one cell). Every generated board is guaranteed solvable.","initUrl":"https://www.gameboard.gg/api/games/sliding-puzzle/init","actionUrl":"https://www.gameboard.gg/api/games/sliding-puzzle/action","docsUrl":"https://www.gameboard.gg/docs/api/sliding-puzzle"},{"slug":"solitaire","name":"Solitaire","genre":"strategy","description":"Classic Klondike solitaire. Build four foundation piles from Ace to King.","goal":"Win Klondike (draw-1) solitaire: move all 52 cards onto the four foundations, each built up from Ace to King in a single suit.","initUrl":"https://www.gameboard.gg/api/games/solitaire/init","actionUrl":"https://www.gameboard.gg/api/games/solitaire/action","docsUrl":"https://www.gameboard.gg/docs/api/solitaire"},{"slug":"starway-sweeper","name":"Starway Sweeper","genre":"arcade","description":"A cosmic highway collection game where you gather star cores and dodge debris.","goal":"Survive the cosmic highway and collect star cores. Endless run escalates every 120 ticks. Run ends when 3 shields are lost, or when banked.","initUrl":"https://www.gameboard.gg/api/games/starway-sweeper/init","actionUrl":"https://www.gameboard.gg/api/games/starway-sweeper/action","docsUrl":"https://www.gameboard.gg/docs/api/starway-sweeper"},{"slug":"stormlark","name":"Stormlark","genre":"strategy","description":"Thread the storm one column at a time and spend your charge on the cells you cannot dodge.","goal":"You fly the Stormlark, a small survey craft, down a storm canyon. The canyon is a grid 7 lanes tall and 10 columns wide, and your craft sits permanently in column 0 at lane state.shipLane. Everything else scrolls toward you one column at a time, and the world only moves when you do: each turn you take exactly one action, then the storm takes exactly one step. There is no clock and no time limit, so the whole game is a routing puzzle with nine columns of warning. Crags are basalt and cannot be cleared, so the only answer to a crag is to be somewhere else. Cells can be cleared, but a pulse costs 3 charge from a gauge of 9 that refills at 1 per turn, so firing every turn is arithmetically impossible. Every turn is a three way choice: reposition, clear, or bank. A dodge only path across the next 3 columns is proved to exist every single turn, so you are never trapped without warning, but nothing keeps the far end of the pipeline passable except you. Clearing is how you keep it open.","initUrl":"https://www.gameboard.gg/api/games/stormlark/init","actionUrl":"https://www.gameboard.gg/api/games/stormlark/action","docsUrl":"https://www.gameboard.gg/docs/api/stormlark"},{"slug":"sudoku","name":"Sudoku","genre":"puzzle","description":"Fill the grid so every row, column, and box has 1–9.","goal":"Fill the 9×9 grid so every row, every column, and every 3×3 box contains the digits 1-9 exactly once. The puzzle is complete when all 81 cells are filled with no conflicts.","initUrl":"https://www.gameboard.gg/api/games/sudoku/init","actionUrl":"https://www.gameboard.gg/api/games/sudoku/action","docsUrl":"https://www.gameboard.gg/docs/api/sudoku"},{"slug":"sumi-steps","name":"Sumi Steps","genre":"puzzle","description":"Draw one unbroken ink stroke that sweeps every plot. Pass the stones in order!","goal":"Rake ink through nine Zen gardens. Each garden is a small rectangular grid of sand plots: starting on Stone 1, draw one unbroken ink stroke that visits every plot exactly once, passes the numbered stones in strict order (1, then 2, then 3, ...), and comes to rest on the final stone. Completing a garden immediately banks its points and starts the next; completing all nine ends the run (there is no fail state and no timer). endRun stops the run early, keeping every point banked so far.","initUrl":"https://www.gameboard.gg/api/games/sumi-steps/init","actionUrl":"https://www.gameboard.gg/api/games/sumi-steps/action","docsUrl":"https://www.gameboard.gg/docs/api/sumi-steps"},{"slug":"sunloaf","name":"Sunloaf","genre":"puzzle","description":"One move a turn and a sunbeam that will not wait. Settle the cats into the light and keep the purring going!","goal":"A cat in Sunloaf earns nothing by acting: it earns only while it stays exactly where it is, asleep on a lit tile, and moving a cat resets that cat's purr to nothing, so the scoring move is usually to leave the cats alone and the hard question is which one is worth waking. You get one action per turn in a 7 by 7 room while a band of sunlight slides steadily across it, and a cat only earns on a turn it ended without moving and stood in the light. A day is one full traverse of the room, 21 turns on day 1 and 14 turns from day 12. Reach the day's cosy quota before the light runs out and you earn the next day, which pays a larger multiplier and hands you a harder room: more furniture, longer shade, clouds, a lattice window, more food to cover and a friendly dog on patrol. There is no last day and no timer. A run ends when a day's quota is missed, or when you send END_RUN, which is legal on every single turn and keeps everything earned so far. Nothing in this game ever takes a point back, so the only question is how long you can keep the purring going.","initUrl":"https://www.gameboard.gg/api/games/sunloaf/init","actionUrl":"https://www.gameboard.gg/api/games/sunloaf/action","docsUrl":"https://www.gameboard.gg/docs/api/sunloaf"},{"slug":"sunpleat","name":"Sunpleat","genre":"puzzle","description":"Turn a sun-catching garland into order with clever folds.","goal":"Restore a sun-catching garland to [1,2,...,n], in left-to-right number order with every sun face showing, by reversing and turning over a selected prefix. Clear within the exact-par-plus-four move budget, then choose Next Garland. Eight authored introductory garlands lead into templates 5,6,7,8 repeating indefinitely. Only Stop and Bank or spending the third leaf ends the run. There is no clock, automatic advancement, final introductory victory or score target. All decision state, signed faces, exact target, budget, par and legal actions are public.","initUrl":"https://www.gameboard.gg/api/games/sunpleat/init","actionUrl":"https://www.gameboard.gg/api/games/sunpleat/action","docsUrl":"https://www.gameboard.gg/docs/api/sunpleat"},{"slug":"tentwood","name":"Tentwood","genre":"puzzle","description":"Pitch tents beside the trees. Match the clues, keep tents apart, and camp on before the light goes!","goal":"Solve an ENDLESS ladder of forest campsite logic puzzles (camps) of growing difficulty. Each camp is a small grid with trees fixed in place. Pitch tents so that every tree pairs with exactly one tent on an orthogonally adjacent cell, no two tents touch (not even diagonally), and every row and column holds exactly the number of tents its clue shows. A camp completes automatically the moment all three rules are satisfied, and the next camp begins immediately. The run continues for as long as you keep solving: the only thing that ends it is running out of daylight, or calling endRun to stop and keep every banked point.","initUrl":"https://www.gameboard.gg/api/games/tentwood/init","actionUrl":"https://www.gameboard.gg/api/games/tentwood/action","docsUrl":"https://www.gameboard.gg/docs/api/tentwood"},{"slug":"thawlight","name":"Thawlight","genre":"arcade","description":"Warm bursts of light melt the frostfall before it reaches your glowbells. Chain the thaw for big scores!","goal":"Hold back a frostfall with warm light. The field is 3:4 portrait and every position is in WIDTH UNITS: x runs 0 at the left edge to 1 at the right, y runs 0 at the top of the sky to 1.3333 at the bottom of the garden, and both axes use the same unit, so a circle is a true circle and every distance is a plain Euclidean one. Frost falls from y = -0.02 toward five glowbells standing on the ground line at y = 1.19, centred at x = 0.1, 0.3, 0.5, 0.7, 0.9, each covering 0.06 either side. A hearth sits at (0.5, 1.285). You send motes of warm light to a point of empty sky; a mote thaws NOTHING on the way and passes straight through everything, and only the bloom it opens on arrival thaws frost. Every piece of frost a bloom thaws opens a smaller bloom of its own at the spot it stood, up to 6 generations deep, and that cascade is where the points are. Frost that reaches the ground inside a warm glowbell's span sets that bell resting. Waves are endless and the run finishes once all five bells are resting. You are aiming at a PLACE, never at an object: the winning read is where the frost is going to be in half a second.","initUrl":"https://www.gameboard.gg/api/games/thawlight/init","actionUrl":"https://www.gameboard.gg/api/games/thawlight/action","docsUrl":"https://www.gameboard.gg/docs/api/thawlight"},{"slug":"three-d-tic-tac-toe","name":"3D Tic Tac Toe","genre":"strategy","description":"Connect four on a 4×4×4 cube · think in three dimensions to outsmart the AI.","goal":"3D Tic Tac Toe on a 4×4×4 cube. You are X and move first. Place a mark on an empty cell to connect FOUR in a straight line before the AI (O). Lines run along any row, column, or pillar (the same row/col through all 4 layers), along the two diagonals within a layer, the diagonals across layers, and the 4 corner-to-corner space diagonals — 76 winning lines in all.","initUrl":"https://www.gameboard.gg/api/games/three-d-tic-tac-toe/init","actionUrl":"https://www.gameboard.gg/api/games/three-d-tic-tac-toe/action","docsUrl":"https://www.gameboard.gg/docs/api/three-d-tic-tac-toe"},{"slug":"tic-tac-toe","name":"Tic Tac Toe","genre":"strategy","description":"Classic X vs O with an expanding twist. Draw? The board grows!","goal":"Expanding Tic Tac Toe. You are X and move first each level. Place your mark in an empty cell to make N in a row (horizontal, vertical, or diagonal) before the AI (O). Clearing a level by winning or drawing GROWS the board and lengthens the target line; survive all 5 levels for the top score.","initUrl":"https://www.gameboard.gg/api/games/tic-tac-toe/init","actionUrl":"https://www.gameboard.gg/api/games/tic-tac-toe/action","docsUrl":"https://www.gameboard.gg/docs/api/tic-tac-toe"},{"slug":"tidehook","name":"Tidehook","genre":"arcade","description":"Hook the rings and swing up the sea chimney. Let go at the top of the arc and stay above the rising tide!","goal":"Tidehook is one shaft and one button. You are a lantern carrier climbing an endless sea chimney at night while black water rises underneath you. The shaft is 360 units wide between solid rock walls, y is measured UP from the origin and the shaft has no top, and your body is a circle of radius 10 whose centre stays between x 10 and x 350. Iron mooring rings, driftwood snags, kelp loops and swaying lamp chains stud the walls above you. Your only verb is hold: holding while you are flying throws a tether at the anchor the engine has already targeted for you, and letting go while you are attached releases you to fly on exactly the velocity you had. Height is the whole objective, and the pendulum is the whole skill, because the only way up is to swing and let go at the right moment. A run opens hanging from the first ring at (180, 80) on a 60 unit rope with the water far below at y -440, and it finishes when the water reaches you or when you send endRun to keep what you have climbed. Stages keep arriving every 600 units of height and there is no last one, so a run lasts exactly as long as your timing does.","initUrl":"https://www.gameboard.gg/api/games/tidehook/init","actionUrl":"https://www.gameboard.gg/api/games/tidehook/action","docsUrl":"https://www.gameboard.gg/docs/api/tidehook"},{"slug":"tile-merge","name":"Tile Merge","genre":"puzzle","description":"Slide tiles to merge them and reach the highest number. Arrow keys or swipe to move.","goal":"Slide numbered tiles on a 4×4 grid to merge equal tiles into bigger ones, aiming to create a 2048 tile (and beyond) for the highest possible score. Every move slides ALL tiles in the chosen direction at once; equal adjacent tiles that collide merge. The game ends only when the board is full and no move can change it.","initUrl":"https://www.gameboard.gg/api/games/tile-merge/init","actionUrl":"https://www.gameboard.gg/api/games/tile-merge/action","docsUrl":"https://www.gameboard.gg/docs/api/tile-merge"},{"slug":"tinrail","name":"Tinrail","genre":"board","description":"Lay track and ride the rails. Keep your engine on the table longer than G-Bot!","goal":"You and G-Bot each drive an engine on a 6x6 table of tile slots. Your engine waits at a notch: an empty cell plus the port it will enter that cell by. On your turn you MUST place one tile from your 3-tile hand, at any rotation, into the one cell your engine faces (there is no other legal slot and no pass). The tile's rails then carry every engine facing that cell across the connected track until it comes to rest at the edge of an empty cell, or rides off the table. An engine that leaves the table is out of the game. You win the moment G-Bot's engine is eliminated while yours survives, no matter whose placement caused it; your own placement can eliminate you, and G-Bot's can eliminate G-Bot. If one placement eliminates both engines, the match is a draw.","initUrl":"https://www.gameboard.gg/api/games/tinrail/init","actionUrl":"https://www.gameboard.gg/api/games/tinrail/action","docsUrl":"https://www.gameboard.gg/docs/api/tinrail"},{"slug":"totality","name":"Totality","genre":"board","description":"Place Sun discs to flip the Moon. Own the most of the board when the sky fills up.","goal":"You are the Sun on an 8x8 board and move first; G-Bot is the Moon. Place a Sun disc on an empty cell so it traps a straight line of G-Bot's Moon discs between your new disc and another Sun disc you already own. Every trapped Moon disc flips to Sun. Own more discs than G-Bot when the board fills up or neither side can move. This is the classic Reversi flip-capture game.","initUrl":"https://www.gameboard.gg/api/games/totality/init","actionUrl":"https://www.gameboard.gg/api/games/totality/action","docsUrl":"https://www.gameboard.gg/docs/api/totality"},{"slug":"waggleporch","name":"Waggleporch","genre":"strategy","description":"Care for cats and dogs through cozy days at home and in the garden.","goal":"Care for cats and dogs through repeatable cozy days at Home, Washroom and Garden. Choose current requests, share attention and keep the home and garden tidy. Next day continues indefinitely at a stable four-pet household from day three onward. Only Finish visit (bank) ends the run with earned hearts. There is no loss, timer, final day, offline deterioration, purchase or resource shortage. Anonymous visits do not promise persisted households.","initUrl":"https://www.gameboard.gg/api/games/waggleporch/init","actionUrl":"https://www.gameboard.gg/api/games/waggleporch/action","docsUrl":"https://www.gameboard.gg/docs/api/waggleporch"},{"slug":"whirlyard","name":"Whirlyard","genre":"arcade","description":"Herd the wind-up drones into a heap of brass scrap. How many waves can you clear?","goal":"Herd pursuing drones into each other or existing scrap on an endless 6 by 6 board. Survive and clear as many waves as you can. You may bank your score at any time with end_run; otherwise the run ends when a drone reaches your rover. Coordinates are zero-based (x,y) with x increasing right and y increasing down. Cell index is y * 6 + x.","initUrl":"https://www.gameboard.gg/api/games/whirlyard/init","actionUrl":"https://www.gameboard.gg/api/games/whirlyard/action","docsUrl":"https://www.gameboard.gg/docs/api/whirlyard"},{"slug":"wingcote","name":"Wingcote","genre":"arcade","description":"Draw a path for each little plane and land it on the site of its own colour. Keep them apart as the island skies fill up!","goal":"Wingcote is an endless arcade game on one fixed island map. The world is 240 u wide and 320 u tall, the origin is the top left corner and y grows downward (screen convention); one tile is 16 u, so the map is 15 columns by 20 rows. Time only moves when you send tick, at 30 ticks per second of game time, so you may think as long as you like between requests. Little colour coded planes (red, blue, yellow and green) arrive from the sea edges, and each colour has exactly one landing site on the island: the red pad with capture centre (72, 216), the blue pad at (168, 104), the yellow strip at (56, 120) which only takes planes flying along (1, 0) (east), and the green strip at (184, 216) which only takes planes flying along (0, -1) (north, up the screen). You give planes routes, which are lists of waypoints, so that each one lands on the site of its own colour, and you keep every pair of planes apart: when two planes touch in the air the run ends. Nothing else ends a run except endRun, which banks your score. The traffic keeps growing with live time and has no last stage, so the aim is to land as many planes as you can, back to back, for as long as you can keep them apart. A fresh run sits in waiting with one red plane already on the map at (120, 40) flying straight down; nothing moves until you send start.","initUrl":"https://www.gameboard.gg/api/games/wingcote/init","actionUrl":"https://www.gameboard.gg/api/games/wingcote/action","docsUrl":"https://www.gameboard.gg/docs/api/wingcote"},{"slug":"wispbind","name":"Wispbind","genre":"arcade","description":"Two bound wisps, one turn. Thread both through every closing ring.","goal":"Wispbind is one circle and one control. Two or more small lights called wisps ride a focus ring of radius 480 RU. They are rigidly bound: wisp A sits at angle theta, and wisp k sits at theta plus offsets[k - 1]. Angles are AU, where 3600 AU is one full turn, so 10 AU is one degree, and radii are RU, where 4 RU is one logical pixel. Rings of smoked glass called shades close in from radius 784 RU, and each shade carries several clear openings called seams. Your only verb is turning the whole bound set at once: {type:'tick', dir} moves theta by 72 AU per tick with no inertia, and AU rise counterclockwise on screen, so dir 1 ADDS 72 AU to theta and turns the bound set counterclockwise, dir -1 SUBTRACTS 72 AU from theta and turns it clockwise, and dir 0 holds theta exactly where it is. Every theta is taken modulo 3600. The arithmetic on theta is the part you act on; the on screen sense is given only so that you and a human player describe the same turn the same way. When a shade arrives at the ring, EVERY wisp must be inside a seam on the same tick. One wisp short and the glass takes a spark. You start with 3 sparks and a stage is 12 shades, after which a breather of 150 ticks lets you carry on or stop. The stages keep coming forever, so a run ends when the sparks are gone or when you choose to finish at a breather and keep everything you have scored.","initUrl":"https://www.gameboard.gg/api/games/wispbind/init","actionUrl":"https://www.gameboard.gg/api/games/wispbind/action","docsUrl":"https://www.gameboard.gg/docs/api/wispbind"},{"slug":"word-guess","name":"Word Guess","genre":"word","description":"Guess the hidden 5-letter word in 6 tries. Letters change colour to guide you.","goal":"Guess the hidden 5-letter word in as few guesses as possible (at most 6). Each guess must be a real 5-letter dictionary word. After every guess, each letter is colour-coded: correct (right letter, right position), present (right letter, wrong position), or absent (not in the word). Use that feedback to deduce the answer. You win the instant a guess is fully correct; you lose if you use all 6 guesses without solving it.","initUrl":"https://www.gameboard.gg/api/games/word-guess/init","actionUrl":"https://www.gameboard.gg/api/games/word-guess/action","docsUrl":"https://www.gameboard.gg/docs/api/word-guess"},{"slug":"word-search","name":"Word Search","genre":"word","description":"Find hidden words in the grid before time runs out.","goal":"Find every hidden word in a 10x10 letter grid. The words you must find are listed; each is hidden in a straight line (horizontal, vertical, or diagonal), forwards or backwards. Find them all to finish.","initUrl":"https://www.gameboard.gg/api/games/word-search/init","actionUrl":"https://www.gameboard.gg/api/games/word-search/action","docsUrl":"https://www.gameboard.gg/docs/api/word-search"}]}