forked from eros/curltastic
Capture the agreed 34 requirements in REQUIREMENTS.md. Implementation details are omitted.
2.7 KiB
2.7 KiB
Requirements
- Players play curling in a mobile browser from a 2D overhead view.
- The sheet is shown in portrait.
- A room has two teams and an unlimited number of clients.
- Each client picks Team 1 or Team 2 on that device.
- Anyone on the team whose turn it is may throw.
- Players join a room from a shareable link.
- If the link has no room, the client creates one and writes that room into the URL.
- A match has 10 ends. Each team has 8 stones per end.
- Extra ends are played while the score is tied after 10 ends.
- Hammer is random at the start. The team without hammer throws first in the end.
- The team that scores gives hammer away. A blank end keeps hammer.
- After a throw, that team has one fewer stone and the other team throws.
- When all throws have completed, the end is scored.
- Only stones touching the house can score.
- The team closest to the tee scores one point for each of its stones nearer than the opponent's nearest stone.
- If no stone can score, the end is 0-0.
- Every client sees the current end, both scores, hammer, whose turn it is, stones remaining, stone positions, trajectories from all shots, and whether the match is over.
- When the match ends, both scores are shown with a winner, or with no winner if tied.
- A thrown stone starts at the hack and travels toward the broom. The player chooses initial speed and curl.
- Clockwise curl moves the stone to the thrower's right.
- Stones bounce off other stones. Stones do not bounce back from a sideline or the backline.
- A stone is out if it touches a sideline. A stone must fully cross the backline to be out. A stone is out if it never fully crosses the hog line.
- The ice is a curling sheet with a house, hog line, sidelines, and a backline on the 12-foot ring.
- The default view frames the house, sidelines, and backline above the controls.
- The player can pan up and down the sheet to the hog line.
- On turn, the player drags to place the broom anywhere on the sheet, then throws.
- The player sets throw weight on a 1 to 10 scale, including named weights hack, board, control, normal, and peel.
- The player sets curl clockwise or counterclockwise. Clockwise is the default.
- Throw controls work only on that team's turn and only while stones are not moving.
- The HUD shows eight remaining-stone markers per team, a hammer marker, and a scoreboard with each end and a total.
- After the stones stop and the end is scored, an end-result overlay appears. The player dismisses it.
- All clients see the same stone motion. A stone that leaves play is hidden when it leaves the sheet.
- Errors and the final result appear on the page as copyable text, not as a blocking alert.
- Pinch-zoom is off. The client remembers the last team choice.