You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+3-10Lines changed: 3 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,16 +27,9 @@ If those terms do not work for you, please discuss before contributing.
27
27
28
28
All games are currently alpha. Balance, pacing, scoring, and content may change substantially, and contributions that make the games easier to understand, fairer, or more fun are welcome.
29
29
30
-
New or changed games usually need updates in all of these places:
Games live in optional repos under `local-games/` during local development. A game repo owns its server logic, protocol types, host scene, controller model, assets, manifest, README, and package entrypoints.
31
+
32
+
The Platform owns common room lifecycle, generated optional game registries, reusable controller layouts, generic setup rendering, and shared DTO/socket contracts. Add a game to `config/known-games.json`, then run `npm run games:sync-local` so the generated registries import only locally available games.
40
33
41
34
The server must remain authoritative. Controllers should send input, not decide winners. Before adding a controller layout, check whether an existing layout can be reused or extended.
`npm run games:sync-local` generates optional registry imports from the local repos it finds. Missing optional game repos are normal and must not break `dev`, `typecheck`, or `build`.
Copy file name to clipboardExpand all lines: docs/protocol.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,4 +40,6 @@ The shared protocol lives in `packages/protocol`.
40
40
41
41
## Game Payloads
42
42
43
-
Game-specific types live in `packages/protocol/src/games/*`. When a game adds public state, controller state, host actions, or inputs, define those contracts there and export them from `packages/protocol/src/index.ts`.
43
+
Game-specific types belong in each optional game repo under its `./protocol` package entrypoint. The Platform should import only public game package entrypoints generated by `npm run games:sync-local`, not private files from a game repo.
44
+
45
+
Some legacy shared layout models still reference older protocol types while the Platform keeps those reusable controller layouts. Do not add new game-specific protocol files to `packages/protocol` without maintainer approval.
0 commit comments