diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md new file mode 100644 index 0000000..873ac28 --- /dev/null +++ b/REQUIREMENTS.md @@ -0,0 +1,36 @@ +# 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.