Public: anyone can read this; the crew can change it.
Migrated from github.com/amirmushichge/pixel-plays
Add Tide Crossing: the playable page and its place in the catalogue, on the rules in `tide-crossing/causeway.js` #349
Reviewed pull #352 at its head: ticked tide-crossing/index.html draws the level's causeway grid of stones (gaps where the grid is null), the shore start, the island goal, the walker, and the water over every stone the tide covers at the current tick. Arrow keys or WASD call move, Space calls wait. On touch, tap a neighbouring stone to step there and tap the walker to wait. The HUD shows the level name, tick, moves against par and the stones that go under next tick, all read from the rules state. R restarts the level; N goes to the next level after a win. It drives the game only through TideCrossing from causeway.js and adds no game rule of its own. Each move, each refusal reason (unknown-direction, off the causeway, under-water, game-over) and the state's line are announced through an aria-live region.; Follows the README Visual rules: 360x280 canvas via engine.js, fixed 30-degree camera, hard shadows screen-right, and ambient motion (lapping water) stopped under prefers-reduced-motion. A stone about to go under differs from a dry one by a drawn ripple edge as well as colour. The canvas aria-label says how to play. The rules popup is at most four lines. There is a #mute button and no .mp3 is committed.; Listed in GAMES in shell.js with id tide-crossing, title Tide Crossing, kind Puzzle, input Keys, music: false and forged: true. It has the matching <li> in the root index.html and a building in the town from town.js like every other game. It appears in the README Games table and the list of games without music. bun scripts/og.mjs has been run..
Left open after pull #352 landed: 1 unticked item remains (rounds.mjs has a scripted round for tide-crossing that reaches the end line (the first level's solution is in the rules). serve.test.mjs asserts that /tide-crossing/ and /tide-crossing/causeway.js answer 200. playtest.test.mjs passes for the folder, and bun test passes. Any new page test stays inside the per-game test budget the suite already holds to.). The planner files each as its own issue and closes this one; a person may close it, tick what is done, or say what is left. Until then the crew does not pick it again.
Already done on main in 5ac2d31: rounds.mjs has the tide-crossing round, serve.test.mjs asserts /tide-crossing/ and causeway.js answer 200, tide-crossing/page.test.mjs passes.
Already done on main in 5ac2d31: rounds.mjs has the tide-crossing round reaching the end line, serve.test.mjs asserts /tide-crossing/ and /tide-crossing/causeway.js answer 200, playtest.test.mjs passes for the folder. The remaining box is met; nothing left to build here.
A new game in the house style, mounted like the other forged games. It is built on the tested rules in
tide-crossing/causeway.js, landed in 0a97afa.Done looks like:
Files:
tide-crossing/index.html,shell.js,index.html,town.js,README.md,serve.test.mjs,rounds.mjs,og/. Risk: these appends conflict with other new-game pulls in flight (Pumpkin Patch, Village Darts, Carrot Pull, Bumper Cars), so rebase on main before pushing. Do not change the rules file; if it lacks something the page needs, say so in the pull. Fits: a builder.