BoardGame

A two-player pass-and-play abstract strategy game running in the browser. A 5x5 grid. Three piece types. Two ways to win. No luck. Two people sit down at the same machine and play.

The Three Piece Types

Flat: lies horizontal, counts as road material, can be stacked on. Wall: stands vertical, blocks roads for both players, cannot be moved through normally, does not count as road for either player. Cap (Capstone): a dome, each player has exactly one, builds roads, can flatten a standing Wall by moving onto it alone — the only piece with this power. Cannot be stacked over; terminates any stack it tops.

Two Ways to Win

Road Win: connect your two opposite edges (top to bottom or left to right) with an unbroken orthogonal chain of your flats and caps. Diagonals do not count. Walls do not count. Checked immediately after every placement or move.

Flat Win: when every square on the board is occupied, count top-of-stack flats per player. Most flats wins. Walls and caps are ignored in this count. Tie is possible. The road win for the moving player is checked before the board-full condition.

Stack Movement

Any stack you own (top piece is yours) can be picked up. Carry up to 5 pieces from the top. Move in one cardinal direction, dropping at least one piece per square. Cannot change direction mid-move. Cannot move through a cap. Cannot move through a wall unless your carried piece is a lone cap, which flattens the wall on contact.

Game Flow

idle: click a piece type in your inventory to enter place mode, then click any empty square to place. idle: click your own stack to enter pickup mode, choose how many pieces to carry, then click adjacent squares to drop pieces one at a time. Cancelling pickup returns all pieces to origin. Cancelling place deselects the piece type. Turn passes after every completed placement or move.

Implementation

React 19 and Vite 6, TypeScript. 3D rendering via Three.js, @react-three/fiber, @react-three/drei. State management via Zustand. No server. No backend. No accounts. Entirely client-side. Board geometry: dark wood tiles with brass edge strips and book-corner bracket details. Pieces: flat and wall are extruded trapezoids, cap is a hemisphere. Lighting: warm key light from upper-left, secondary fill opposite, cool rim from below-back.

Verified Mechanics

Road win: empty board does not win; N-S flat line wins; wall in path blocks; cap counts as road; snake E-W path wins; opponent piece blocks; diagonal does not count. Stack movement: carry count correct; pieces drop in order; phase returns to idle after final drop; rejections for off-axis, through-cap, through-wall without lone cap; wall flattening by lone cap only; cap always terminates.

Full specification: llms.txt