forked from eros/curltastic
docs: multi-client free team, free broom, multi-path e2e list
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
1239394578
commit
473e18a751
23
README.md
23
README.md
@ -1,6 +1,6 @@
|
||||
## curltastic
|
||||
|
||||
A 1v1 async multiplayer 2D curling game for mobile browser.
|
||||
A multiplayer 2D curling game for mobile browser. Any number of clients can join a room, pick Red or Yellow freely, and throw when it is that team's turn (solo pass-and-play or remote opponents).
|
||||
|
||||
- **Backend** — Rust, Axum, WebSocket, Rapier2D physics (server-authoritative, 120 Hz).
|
||||
- **Frontend** — TypeScript, Vite, Canvas2D, portrait-first touch UI.
|
||||
@ -33,12 +33,12 @@ The frontend binds to `0.0.0.0` via `--host`. Find your machine's LAN IP and ope
|
||||
|
||||
### Controls
|
||||
|
||||
- Drag inside the house to place the broom (aim point).
|
||||
- Use the team dropdown to choose which team's stone you are throwing.
|
||||
- Use the left/right arrow buttons to select curl; the arrow points the direction the stone will curve.
|
||||
- Tap **THROW**.
|
||||
- The server runs the physics for every stone and streams their paths; the frontend interpolates the animation, so collisions animate smoothly for all stones.
|
||||
- Drag anywhere outside the house (or when it's not your turn) to scroll up toward the hog line.
|
||||
- When it is your team's turn, drag on the sheet to place the broom (aim point) — aim is not limited to the house.
|
||||
- When it is not your turn, drag to pan the ice (default framing shows the house with sidelines; pan up toward the hog line).
|
||||
- Use the team dropdown to choose which team's stone you are throwing; switch any time (including mid-end for solo play).
|
||||
- Use the left/right curl buttons and the weight/friction controls; friction is a local scalar.
|
||||
- Tap **THROW**. Anyone identifying as the turn team may throw.
|
||||
- The server runs physics for every stone and streams multi-stone paths; the client animates them on one clock so collisions move together.
|
||||
|
||||
### Architecture
|
||||
|
||||
@ -54,9 +54,12 @@ With the backend and frontend dev server running:
|
||||
```bash
|
||||
cd e2e
|
||||
npm install -g ws # or npm install ws locally in the project
|
||||
node e2e_test.cjs # room lifecycle, throw, trajectory, out-of-play removal
|
||||
node e2e_score.cjs # stones remain in play and alternate turns
|
||||
node collision_trajectory_qa.cjs # verifies every stone gets a trajectory during a collision
|
||||
node e2e_test.cjs # room lifecycle, throw, trajectory
|
||||
node e2e_score.cjs # alternate turns / stones in play
|
||||
node e2e_persistence.cjs # multi-throw stone persistence
|
||||
node e2e_multi_client.cjs # 3 clients share state (no room-full)
|
||||
node e2e_end_score.cjs # full end → end_scored + next end
|
||||
node collision_trajectory_qa.cjs # multi-stone trajectory on collision
|
||||
```
|
||||
|
||||
### Limitations / known simplifications
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user