Briarwink
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.
Scoring
The score only ever rises. RELIGHTS pay a base value by kind: mope 50, peeker 80, rootling 100, nudger 100, twinbud 120 (its two sprigs score separately), sprig 30, tangler 150. A cascade is a pod that bursts on its own timer plus every pod its blooms wake, down the chain; the k-th relight of a cascade pays base times min(k, 8). Relights on one tick in one cascade are ordered by base value ascending, then id, so the larger multiplier lands on the more valuable dimling, and relights into a lingering bloom still count for its cascade. LINKED PODS: when a cascade closes (none of its blooms active and none of its woken pods left) it pays 50 times (min(pods burst, 8) minus 1), but only if it relit at least one dimling. BRIAR: each original briar cell a bloom clears pays 10; regrown briar and sprouts pay 0. POWER-UPS: each pickup you collect pays 25, or 100 when that upgrade is already at its top level. NIGHT CLEAR: stepping onto the moon gate pays 100 times min(night, 30), plus a bright night bonus of 50 times min(night, 30) when you lost no heart that night. Clearing every 4th night grants a heart, or 300 points when you already hold 5. Nothing scores for time, walking, waiting or surviving. endRun adds nothing and takes nothing away: mid-night it pays no night bonus and cascades still open stay unpaid.
Rules
ACTIONS. {type:'start'} begins a night and is legal only while waiting, which is the opening state of a run and every break between nights. {type:'tick', move, plant?, count?} with move 'up', 'right', 'down', 'left' or null, or {type:'tick', walkTo, plant?, count?} with walkTo a cell from 0 to 62; a tick carries move or walkTo, never both. {type:'endRun'} is legal while a night is being played and in a break, never in the opening wait. Nothing throws: an action the status does not allow comes back as ok false with a reason and the exact list of legal actions. While playing, the listed actions are the ten single ticks (each move with plant false and plant true) plus endRun, and walkTo and count are optional variants of any listed tick. A tick sent while waiting is refused with 'send start first', so nothing moves until you start each night, and plant true is always accepted and simply ignored when planting is impossible. Unknown fields are rejected. THE CLOCK. 30 ticks per second, fixed; nothing moves between requests. BATCHES. count from 1 to 30 (default 1) runs exactly that many single ticks with the same move or walkTo, and plant applies on the first of them only. A batch stops early after a tick that costs a heart, clears a night or finishes the run, or, for walkTo, leaves you standing still on the target cell. lastBatch reports the ticks requested and applied and what stopped the batch, and events lists up to 64 things that happened during the action. A batch equals the same ticks sent one at a time. TICK ORDER. Each tick runs, in order: respawn (an absent gardener counts down and returns); plant; your move (being on the open moon gate, by stepping onto it or by standing there as it opens, clears the night and ends the tick); dimlings in ascending id (sight, decisions, steps, pushes, sprouts); pod timers (every pod but one planted this tick counts down 1, then any pod under an active bloom is woken); bloom ageing; bursts (every pod at 0, ascending id); relights; your hazards (bloom first, then contact, at most one heart a tick, and the tick ends if the last heart goes); deferred spawns (sprigs and dropped power-ups appear once their cell has no active bloom, and a power-up that appears under you is collected); cascade closing; regrowth; calm and creep; the gate check; counters. TILES. Floor: everyone enters and a beam covers it and continues. Sprout: you enter it and trample it to floor, dimlings enter it, and a beam covers it, clears it and continues. Briar and regrown briar: blocked for you and for every dimling but a rootling; a beam covers the first one it meets, clears it to floor and stops. Moonstone, hedge and thicket: blocked for everyone; a beam stops without covering them. Pond: blocked for everyone; a beam covers it and continues. A pod blocks every walker (a nudger may push one). Pickups can be walked over, only you enter the open moon gate, and walkers, pickups, fireflies and the gate never stop a beam. MOVEMENT. You and the dimlings are walkers stepping tile to tile. A step from A to an adjacent B takes stepTicks ticks (yours are 8, then 7 and 6 with Quick Step), and a walker occupies A until its progress reaches half the step rounded up, then B; every collision, relight and pickup uses the occupied cell. A direction while idle starts a step when the neighbour is enterable, advancing progress to 1 on that tick. Mid-step, the opposite direction reverses from the same spot if the origin is still enterable (a pod planted there prevents it), any other direction waits for arrival, and null finishes the step and stops. Holding a direction walks exactly stepTicks ticks per tile, and a Quick Step collected mid-step speeds up the next step. If your destination stops being enterable while you still occupy the origin, you turn back, or stop where you stand when the origin holds your own pod; a dimling does the same. WALKTO. walkTo chooses a direction every tick by breadth-first search from your occupied cell over enterable cells, treating cells under an active bloom as blocked and expanding up, right, down, left. An unreachable target sends you to the reachable cell nearest it (Manhattan distance, then search distance, then lowest index). If your current step ends under an active bloom and its origin does not, you turn back. Once standing on the target you stay. walkTo never routes through pods or active blooms, and it does not avoid future blooms or dimlings. PODS AND BLOOMS. plant puts a pod on your occupied cell when you are present, fewer pods are out than your pod cap, the cell holds no pod, and it is floor or sprout and not the gate. The pod keeps your reach at planting and starts at bloomIn 66, counting down from the next tick and bursting at 0. You may leave a pod's cell but not enter it again. A burst covers the pod's cell and up to reach cells each way, following the tile rules and stopping at the edge; a beam that reaches another pod covers that cell, wakes it (its bloomIn becomes at most 3) and stops. Clearing original briar reveals any power-up hidden in it at once, and power-ups are bloom-proof. A bloom is active for 18 ticks counting its burst tick, and anything whose occupied cell is under an active bloom at the relight and hazard stages is affected, including a walker that steps in later. A pod under an active bloom is woken at the pod stage, so a pod pushed or planted into a lingering bloom wakes too, and a pod woken this tick never bursts this tick. CASCADES. A pod bursting on its own timer opens a cascade whose id is its pod id; a woken pod joins the cascade of the bloom that woke it, the lowest id when several qualify, and a dimling under several blooms is relit by the lowest covering cascade. DIMLINGS. Dimlings pass through each other and never avoid blooms. They never enter pods (except by a nudger push), briar (except rootlings), moonstones, hedges, thicket, pond, cells marked by the creep, or the spawn pocket during the opening hush of 150 ticks. Idle at a tile centre, a dimling lists its open exits up, right, down, left, drops the way it came unless that is the only exit, keeps straight on a 70 percent draw when straight is open and otherwise picks one uniformly; with no exit it waits 8 ticks. Choices draw from the night's seeded stream in ascending id. MOPE (from night 1): 15 ticks a step. PEEKER (from night 4): 12 ticks a step. At each tile centre, if you are present on its row or column within 5 cells and every cell between is floor, sprout or pond with no pod, it is spotted: it stands for 12 ticks with glowing eyes, then dashes toward you at 7 ticks a step, checking sight at each tile centre, and wanders again when sight breaks or the next cell is blocked. Grace does not hide you from it. ROOTLING (from night 7): walks floor and briar alike, 16 ticks into an open cell and 24 into briar, showing as a rustle inside briar; a beam that covers and clears its briar relights it. NUDGER (from night 10): 13 ticks a step; a pod counts as an exit when the cell beyond it is floor or sprout with no pod or pickup, is not your occupied cell and is not any walker's occupied or destination cell, and stepping that way pushes the pod one cell, keeping its bloomIn, reach and cascade. TWINBUD (from night 13): 14 ticks a step; its relight queues a split, and on the first tick that cell has no active bloom two sprigs appear there, heading apart along the axis with more open exits (horizontal on a tie). SPRIG: 10 ticks a step, shimmering for its first 15 ticks, when it cannot cost a heart but can still be relit. TANGLER (from night 17): 20 ticks a step; each time its occupied cell has changed 2 times, the floor cell it just left becomes a sprout, unless it is a pocket cell during the hush, holds a pickup, pod or the gate, is your cell, or 12 sprouts already exist. ROSTER. The band table, night by night: nights 1 to 3 (band 1, First Light): dimlings 2, 4, 4, advanced 0, 0, 0, layouts grove, briar 40 percent, 2 hidden power-ups, calm 1950 ticks, creep every 84 ticks, no regrowth, never moonless; nights 4 to 6 (band 2, Peeking Hour): dimlings 4, 5, 5, advanced 1, 1, 2, layouts grove, meadow, briar 45 percent, 2 hidden power-ups, calm 1800 ticks, creep every 78 ticks, a sprout every 360 ticks, never moonless; nights 7 to 9 (band 3, Root Hour): dimlings 5, 5, 6, advanced 2, 2, 3, layouts grove, meadow, lilyPond, briar 45 percent, 2 hidden power-ups, calm 1650 ticks, creep every 72 ticks, a sprout every 300 ticks, never moonless; nights 10 to 12 (band 4, Nudge Hour): dimlings 6, advanced 3, layouts grove, meadow, lilyPond, hedgeRows, briar 50 percent, 2 hidden power-ups, calm 1500 ticks, creep every 66 ticks, a sprout every 270 ticks, never moonless; nights 13 to 16 (band 5, Twin Hour): dimlings 6, advanced 3, 3, 4, 4, layouts grove, meadow, lilyPond, hedgeRows, steppingStones, briar 50 percent, 2 hidden power-ups, calm 1350 ticks, creep every 60 ticks, a sprout every 240 ticks, moonless 1 night in 3, at most 1 running; nights 17 to 20 (band 6, Tangle Hour): dimlings 7, advanced 4, layouts grove, meadow, lilyPond, hedgeRows, steppingStones, briar 50 percent, 3 hidden power-ups, calm 1200 ticks, creep every 54 ticks, a sprout every 210 ticks, moonless 1 night in 2, at most 2 running; nights 21 to 25 (band 7, Deep Night): dimlings 7, advanced 5, layouts grove, meadow, lilyPond, hedgeRows, steppingStones, briar 55 percent, 3 hidden power-ups, calm 1050 ticks, creep every 48 ticks, a sprout every 180 ticks, moonless 1 night in 2, at most 2 running; nights 26 onward (band 8, Endless Night): dimlings 7, advanced 5, layouts grove, meadow, lilyPond, hedgeRows, steppingStones, briar 55 percent, 3 hidden power-ups, calm 1050 ticks, creep every 48 ticks, a sprout every 150 ticks, moonless 1 night in 2, at most 2 running. On a kind's debut night exactly one of it appears; the other advanced slots are drawn from the unlocked kinds under their per-night caps (peeker 3, rootling 2, nudger 2, twinbud 2, tangler 1) and the rest are mopes. Meadow nights add 10 points of briar density. HEARTS. You start with 3, up to 5. You lose one when your occupied cell is under an active bloom (dazzled; your own blooms count), when a dimling that is not shimmering shares your cell (bumped), or when you and a dimling swap cells on the same tick. Relights resolve first, so a dimling relit on the tick it reaches you costs nothing, and no heart is lost during grace or while you are away. After a loss you are away for 24 ticks, your highest upgrade loses one level (ties go Wide Petal, Extra Pod, Quick Step) and that level drops as a pickup where you were once the cell has no active bloom. You return on the best free floor or sprout cell (outside every live pod's projected cross and every active bloom first, then inside the main garden, which is the largest connected walkable region, then farthest from the nearest dimling, then nearest your spawn corner, then lowest index) with 75 ticks of grace, and moving and planting work as normal. At 0 hearts the run is finished. POWER-UPS. Wide Petal raises your reach through 2, 3, 4; Extra Pod raises your pod cap through 1, 2, 3; Quick Step shortens your step through 8, 7, 6 ticks. They hide under original briar (night 1 a Wide Petal and an Extra Pod, night 2 a Quick Step and one seeded kind, later nights the band's count of seeded kinds), they carry over between nights, and pickups still on the ground when a night clears are gone. CALM AND CREEP. Each night opens with a calm, and nothing creeps during it. When the calm ends the creep begins: every dimling steps 2 ticks faster (minimum 6; a peeker's dash is unchanged), the next 3 cells of a fixed spiral are marked, and 3 creep intervals later the first marked cell grows into thicket, then one more every interval, so every cell is marked for 3 intervals before it grows. The spiral starts at the corner diagonally opposite your spawn corner and runs clockwise as seen on screen around the outer ring, then around the next ring in, skipping moonstones, hedges and pond; it never enters the inner core (x 2 to 4, y 2 to 6). Growth moves a walker or pickup on that cell, and any sprigs or dropped power-up waiting to appear there, to the nearest floor or sprout cell by breadth-first search (for you, inside the main garden, the largest connected walkable region, and away from active blooms and from cells next to dimlings when such a cell exists; for dimlings and pickups, off your cell when another exists, and a pickup that can only land on your cell is collected), wakes a pod there and waits for its burst, and turns briar and sprouts to thicket. REGROWTH. From night 4, every regrowth interval one sprout appears on a seeded floor cell that started the night as briar, never on or beside your cell, in the pocket, under a pickup, pod or the gate, on a walker's cell or a creep mark, and never beyond 12 sprouts. A sprout matures into regrown briar after 150 ticks with no walker on it or stepping into it and no pod or pickup on it. The creep, regrowth and restlessness stop the moment the last dimling is relit, and the marks clear. THE MOON GATE. When no dimlings or queued splits remain, the gate opens on the cell of the last relight on the first tick that cell has no active bloom. Stepping onto it, or standing on it when it opens, clears the night: open cascades close and pay, the night bonuses are paid, the heart reward is checked, the night's pods, blooms, pickups, sprouts and fireflies are removed, and the next night waits for start. MOONLESS NIGHTS. From night 13 some nights are moonless, which changes what you can see and never the rules. A cell is lit when its squared distance dx*dx + dy*dy is at most 6 from you, 2 from any firefly, 2 from the open gate or 1 from any pod, or when it is under an active bloom. Terrain, pods, blooms, creep marks, sprouts and fireflies always show; dimlings and pickups show only on lit cells, except that a spotted or dashing peeker's eyes always show. Every relight leaves a firefly that lights the garden for the rest of the night. THE OBSERVATION. text carries a header, your stats, the score line, the pressure line, the 7 by 9 map, then lists of pods (with the cells each will cover), active blooms, visible dimlings, visible pickups, the gate, sprouts with their ticks to maturity and fireflies, and on moonless nights the unlit cells. Map legend: G gardener, @ gardener in grace, m mope, p peeker (P spotted or dashing), r rootling on floor (R in briar), n nudger, t twinbud, s sprig, T tangler, o pod, * active bloom, % briar, , sprout, # moonstone, H hedge, ~ pond, X thicket, x creep mark, + pickup, ^ open gate, . floor. player holds night, band, hearts, podsOut, podCap, reach, stepTicks, grace, respawnIn, score, nightsCleared, relitTotal, dimlingsLeft, calmLeft, creepNextIn, regrowNextIn, moonless, x and y, where -1 means none or away. turn is the tick count. GENERATION. Each night comes from the run seed and the night number: a spawn corner whose 7-cell pocket is clear floor with two 3-step escapes, a layout from the band's pool, dimlings starting at least 5 cells from the spawn corner and 3 from every pocket cell, and briar at the band's density. The whole run is a pure function of the seed and your list of actions.
Action grammar
{
"type": "object",
"oneOf": [
{
"properties": {
"type": {
"const": "start"
}
},
"required": [
"type"
],
"additionalProperties": false
},
{
"properties": {
"type": {
"const": "tick"
},
"move": {
"enum": [
"up",
"right",
"down",
"left",
null
],
"description": "Held direction for these ticks; null finishes the current step and stops."
},
"plant": {
"type": "boolean",
"description": "Plant a pod on your occupied cell on the first tick. Ignored when impossible."
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "How many ticks to run with this input (default 1). The batch stops early on a lost heart, a cleared night or a finished run."
}
},
"required": [
"type",
"move"
],
"additionalProperties": false
},
{
"properties": {
"type": {
"const": "tick"
},
"walkTo": {
"type": "integer",
"minimum": 0,
"maximum": 62,
"description": "Target cell (y * 7 + x); the engine walks you there by breadth-first search each tick, around pods and active blooms."
},
"plant": {
"type": "boolean",
"description": "Plant a pod on your occupied cell on the first tick. Ignored when impossible."
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "How many ticks to run with this input (default 1). The batch also stops once you stand on the target."
}
},
"required": [
"type",
"walkTo"
],
"additionalProperties": false
},
{
"properties": {
"type": {
"const": "endRun"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
}Start a game
curl -s "https://gameboard.gg/api/games/briarwink/init?seed=7"
Then POST { stateToken, action } to https://gameboard.gg/api/games/briarwink/action, carrying the stateToken forward each call. See the API overview for the full loop.