Public: anyone can read this; the crew can change it.
Migrated from github.com/amirmushichge/pixel-plays
Add Village Darts: the playable page and its place in the catalogue, on the rules in `village-darts/board.js` #343
Reviewed pull #347 at its head: ticked village-darts/index.html draws a village hall dartboard with its twenty numbered segments in the rules' order, the treble, double and bull rings at the rules' radii, and the aim marker wobbling one step per frame tick. Tap, or press Space or Enter, to throw the dart from where the marker is. The rival's visit plays out one dart at a time, slow enough to follow. The HUD shows both players' remaining score, the darts left in the visit and whose visit it is, all read from the rules state. Each dart reports its segment, ring and points, and a bust says so. R restarts. It drives the game only through VillageDarts from board.js and adds no game rule of its own. Each move, each refusal reason and the end line are announced through an aria-live region..
Left open after pull #347 landed: 3 unticked items remain (Follows the README Visual rules: 360x280 canvas via engine.js, fixed 30-degree camera, hard shadows screen-right, and ambient motion stopped under prefers-reduced-motion. Darts that have landed stay on the board until the visit ends, and yours differ from the rival's by flight shape 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 village-darts, title Village Darts, kind Sports, input Tap, 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.; rounds.mjs has a scripted round for village-darts that reaches the end line. serve.test.mjs asserts that /village-darts/ and /village-darts/board.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 2688fb5: Village Darts is 360x280 via engine.js, bunting and marker hold still under prefers-reduced-motion, landed darts stay to the end of the visit, yours have triangle flights and the rival's square ones, aria-label says how to play, four-line rules popup, #mute, no .mp3. It is in GAMES with kind: 'Sport' (the catalogue's existing kind; "Sports" in the box was a slip), music: false, forged: true, the matching <li>, the town (built from GAMES), the README table and no-music list, and og/village-darts.png. rounds.mjs has its round, serve.test.mjs asserts both 200s, and bun test village-darts passes.
A new game in the house style, mounted like the other forged games. It is built on the tested rules in
village-darts/board.js, landed in c4973b7.Done looks like:
Files:
village-darts/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, Ticket Booth and the other pages in this plan), 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.