curltastic/REQUIREMENTS.md
Jason Dekarske 3bdd67f815 docs: record product requirements as complete sentences
Capture the agreed 34 requirements in REQUIREMENTS.md. Implementation
details are omitted.
2026-09-01 05:55:27 +00:00

37 lines
2.7 KiB
Markdown

# Requirements
1. Players play curling in a mobile browser from a 2D overhead view.
2. The sheet is shown in portrait.
3. A room has two teams and an unlimited number of clients.
4. Each client picks Team 1 or Team 2 on that device.
5. Anyone on the team whose turn it is may throw.
6. Players join a room from a shareable link.
7. If the link has no room, the client creates one and writes that room into the URL.
8. A match has 10 ends. Each team has 8 stones per end.
9. Extra ends are played while the score is tied after 10 ends.
10. Hammer is random at the start. The team without hammer throws first in the end.
11. The team that scores gives hammer away. A blank end keeps hammer.
12. After a throw, that team has one fewer stone and the other team throws.
13. When all throws have completed, the end is scored.
14. Only stones touching the house can score.
15. The team closest to the tee scores one point for each of its stones nearer than the opponent's nearest stone.
16. If no stone can score, the end is 0-0.
17. 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.
18. When the match ends, both scores are shown with a winner, or with no winner if tied.
19. A thrown stone starts at the hack and travels toward the broom. The player chooses initial speed and curl.
20. Clockwise curl moves the stone to the thrower's right.
21. Stones bounce off other stones. Stones do not bounce back from a sideline or the backline.
22. 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.
23. The ice is a curling sheet with a house, hog line, sidelines, and a backline on the 12-foot ring.
24. The default view frames the house, sidelines, and backline above the controls.
25. The player can pan up and down the sheet to the hog line.
26. On turn, the player drags to place the broom anywhere on the sheet, then throws.
27. The player sets throw weight on a 1 to 10 scale, including named weights hack, board, control, normal, and peel.
28. The player sets curl clockwise or counterclockwise. Clockwise is the default.
29. Throw controls work only on that team's turn and only while stones are not moving.
30. The HUD shows eight remaining-stone markers per team, a hammer marker, and a scoreboard with each end and a total.
31. After the stones stop and the end is scored, an end-result overlay appears. The player dismisses it.
32. All clients see the same stone motion. A stone that leaves play is hidden when it leaves the sheet.
33. Errors and the final result appear on the page as copyable text, not as a blocking alert.
34. Pinch-zoom is off. The client remembers the last team choice.