@crowdedkingdoms/crowdyjs 18.11.0-dev.1 → 18.12.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/MIGRATION.md +26 -0
  2. package/README.md +12 -0
  3. package/dist/generated/graphql-schema.d.ts +2 -2
  4. package/dist/generated/graphql-schema.d.ts.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/kit/index.d.ts +9 -0
  8. package/dist/kit/index.d.ts.map +1 -1
  9. package/dist/kit/index.js +9 -0
  10. package/dist/kit/kit.d.ts +60 -2
  11. package/dist/kit/kit.d.ts.map +1 -1
  12. package/dist/kit/kit.js +58 -2
  13. package/dist/kit/modules/arenas.d.ts +87 -0
  14. package/dist/kit/modules/arenas.d.ts.map +1 -0
  15. package/dist/kit/modules/arenas.js +66 -0
  16. package/dist/kit/modules/encounters.d.ts +75 -0
  17. package/dist/kit/modules/encounters.d.ts.map +1 -0
  18. package/dist/kit/modules/encounters.js +57 -0
  19. package/dist/kit/modules/instances.d.ts +78 -0
  20. package/dist/kit/modules/instances.d.ts.map +1 -0
  21. package/dist/kit/modules/instances.js +72 -0
  22. package/dist/kit/modules/leaderboards.d.ts +79 -0
  23. package/dist/kit/modules/leaderboards.d.ts.map +1 -0
  24. package/dist/kit/modules/leaderboards.js +69 -0
  25. package/dist/kit/modules/minigames.d.ts +59 -0
  26. package/dist/kit/modules/minigames.d.ts.map +1 -0
  27. package/dist/kit/modules/minigames.js +55 -0
  28. package/dist/kit/modules/racing.d.ts +131 -0
  29. package/dist/kit/modules/racing.d.ts.map +1 -0
  30. package/dist/kit/modules/racing.js +113 -0
  31. package/dist/kit/modules/tables.d.ts +76 -0
  32. package/dist/kit/modules/tables.d.ts.map +1 -0
  33. package/dist/kit/modules/tables.js +73 -0
  34. package/dist/kit/modules/tactics.d.ts +79 -0
  35. package/dist/kit/modules/tactics.d.ts.map +1 -0
  36. package/dist/kit/modules/tactics.js +67 -0
  37. package/dist/kit/modules/territory.d.ts +92 -0
  38. package/dist/kit/modules/territory.d.ts.map +1 -0
  39. package/dist/kit/modules/territory.js +84 -0
  40. package/dist/live-coding/assets/browser-authoring-index.json +1 -1
  41. package/dist/live-coding/assets/manifest.json +1 -1
  42. package/dist/live-coding/browser-authoring-index.generated.d.ts.map +1 -1
  43. package/dist/live-coding/browser-authoring-index.generated.js +3302 -145
  44. package/package.json +1 -1
package/MIGRATION.md CHANGED
@@ -120,6 +120,32 @@ super-admin's session). There is no SDK replacement.
120
120
  `dev`'s SDL after #417 merged (`npm run schema:sync:paths -- --schema <that schema.gql>`, then
121
121
  `npm run codegen`).
122
122
 
123
+ ## 18.12.0: the genre starters
124
+
125
+ Additive. **Needs a compute toolchain whose starter pack has the genre starters** (ckx-sdk
126
+ 0.11.0); `kit.topology` lists, builds and deploys them like the others. Against an app that does
127
+ not run one, its module's calls are refused with `NotFound` (the app has no such node type).
128
+
129
+ - **Nine more kit modules**, one per new starter hub: `leaderboards.board(name)` (the top
130
+ mirrored, `top`, `around`, `me`, `season`; hubs submit the scores they decided, a client never
131
+ does), `tables.table(key)` (cards: the table mirrored and the caller's hand as private state),
132
+ `tactics.battle(key)` (grid battles in phases), `encounters.encounter(key)` (waves, towers, a
133
+ boss with phases), `minigames.duel(key)` (hidden throws revealed together), `instances.run(key)`
134
+ (a party's private run: seeded floors, permadeath, expiry), `arenas.arena(key)` (classes and
135
+ abilities in real time), `racing.race(key)` and `racing.ball(key)` (races with laps, splits
136
+ and a ghost; ball games with possession), `territory.map(key)` and `territory.zone(key)`
137
+ (control points; a shrinking circle).
138
+ - **The node types they talk to** are the starters' (`leaderboard`, `deck`, `tactics`,
139
+ `director`, `minigame`, `instance`, `arena`, `race`, `ball`, `territory`, `zone`); an app that
140
+ deploys one under another name passes it in `client.kit(appId, { nodes: { ... } })`.
141
+ - **Positions a client reports are the hub's to keep**: `arenas`, `racing` and the ball game take
142
+ `move` / `pos` reports and answer with the position the hub's movement warden kept (a move too
143
+ fast is cut short, a jump refused). Each refused report is a `violation` event, and an arena
144
+ removes a player after a run of them (`removed`). Send them a few times a second, without an
145
+ action id.
146
+ - **Event bodies never use the header's field names** (`v`, `epoch`, `seq`, `kind`): the race's
147
+ `timing` events carry their `stage`, the warden's `violation` events their `what`.
148
+
123
149
  ## 18.11.0: the Game Kit on ck-exec
124
150
 
125
151
  Additive, apart from one fix in `client.exec` (below). **Needs what 18.10.0 needs from the Game
package/README.md CHANGED
@@ -750,6 +750,15 @@ modules are the tree's starter types:
750
750
  | `kit.matchmaking.queue(name)` | `matchmaker` | `join` with a rating, alone or as a party matched whole (the leader names the members; each confirms with `leader`); `accept` / `decline`; `place` and `onMatched` with the session key |
751
751
  | `kit.sessions.open(key)` | `session` | lobby, `ready`, the host's `startGame`, `act` in turn under a time limit; the hub scores and names the winner; `state` mirrored |
752
752
  | `kit.npcs.area(key)` / `areaAt(x, z)` | `npcs` (`npc-mobs`) | an area's mobs, NPCs and pets mirrored; `attack` (the hub decides reach, cooldown, damage), `talk`; pets: `adopt`, `rename`, `summon`, `dismiss`, `release`, `myPets` |
753
+ | `kit.leaderboards.board(name)` | `leaderboard` | the top mirrored; `top`, `around`, `me`, `season`; scores come from the hubs that decided them (`submit` is for developers and hubs), seasons roll on a schedule (18.12.0) |
754
+ | `kit.tables.table(key)` | `deck` | a card table: the table mirrored, the caller's hand as private state; `join`, `start`, `play`, `draw`, `pass` in the hub's turn order |
755
+ | `kit.tactics.battle(key)` | `tactics` | a grid battle in phases: `move`, `attack`, `endTurn` for the player's units; the hub's units act when every player ended the phase |
756
+ | `kit.encounters.encounter(key)` | `director` | waves down a lane on the hub's clock, `build` towers (the lane must stay open), `hit` with a cooldown, a boss with phases |
757
+ | `kit.minigames.duel(key)` | `minigame` | two-player duels of hidden throws, revealed together; `throw`, `rematch` |
758
+ | `kit.instances.run(key)` | `instance` | a private run for one party: `open` (seeded floors), `invite`, `join`, `enter` each room, `descend`; permadeath and expiry; depth to a leaderboard |
759
+ | `kit.arenas.arena(key)` | `arena` | real-time fights: `join` as a class, `move` (the hub's warden keeps what the speed allows), `cast` (cooldown, resource, range; projectiles and areas land on the hub's ticks) |
760
+ | `kit.racing.race(key)` / `ball(key)` | `race`, `ball` (`racing`) | races (gates in order, laps, splits, places, the winner's `ghost`) and ball games (`claim`, `pass`, `shoot`, goals) on reported positions the warden keeps |
761
+ | `kit.territory.map(key)` / `zone(key)` | `territory`, `zone` (`territory`) | control points a faction captures by standing on them (the hub reads where players are), and a circle that shrinks and wears down whoever is outside |
753
762
  | `kit.topology` | — | composes a manifest from `exec.starters` (the types picked, what they hang under and call), checks the tree, builds and deploys (developers, `manage_compute`) |
754
763
  | `kit.spectate`, `kit.emotes`, `kit.shards` | — | a viewer's heartbeat so the world's messages reach it; emotes as client events every kit client reads; shard keys as the hubs compute them |
755
764
  | `kit.social` | — | parties, guilds and chat rooms over teams and channels |
@@ -1227,6 +1236,9 @@ is why the mint also returns `discoveryUrl`.
1227
1236
  `CROWDY_HTTP_URL` and `CROWDY_E2E_THROWAWAY_OWNER=1` it registers a throwaway org admin (its own
1228
1237
  org and app) and a player, opens and closes a grid, and checks the tier's ck-exec gateway. It
1229
1238
  leaves the org behind and archives the app, so it runs only when asked to.
1239
+ `test/e2e/game-kit.test.mjs` does the same for the Game Kit: the throwaway owner composes the
1240
+ starter hubs with `kit.topology`, builds and deploys them, and two players play them (on dev and
1241
+ test it also needs `CROWDY_PROVISIONING_TOKEN`, which their staff-only sign-up asks for).
1230
1242
 
1231
1243
  ## Maintainers: schema artifacts and fixtures
1232
1244
 
@@ -4836,7 +4836,7 @@ export type Mutation = {
4836
4836
  revokeTierAccessProvisioningToken: TierAccessProvisioningToken;
4837
4837
  /** OPERATOR: remove an entry from the list. Accounts it was admitting are refused at their next request, and their sessions and app tokens are ended. Refused on prod. */
4838
4838
  revokeTierAccessRule: TierAccessRule;
4839
- /** Reverts every voxel edit made by `userId` in `appId` between `from` and `to`, returning one RollbackVoxelEventResult per affected voxel (`applied` tells you whether each was actually changed). DEFAULTS to dryRun=true, which only PREVIEWS the planned reversions without writing; pass dryRun=false to actually apply them (DESTRUCTIVE — mutates world state). A reverted voxel’s edit-log row takes the earlier edit’s type, state and author and the ROLLBACK’s time as its createdAt, so a client reading edits `since` its last sync sees the revert. Requires a valid bearer token AND the `manage_apps` permission on the org that owns `appId` (super admins bypass). */
4839
+ /** Reverts every voxel edit made by `userId` in `appId` between `from` and `to`, returning one RollbackVoxelEventResult per affected voxel (`applied` tells you whether each was actually changed). DEFAULTS to dryRun=true, which only PREVIEWS the planned reversions without writing; pass dryRun=false to actually apply them (DESTRUCTIVE — mutates world state). A reverted voxel’s edit-log row takes the earlier edit’s type, state and author and the ROLLBACK’s time as its createdAt, so a client reading edits `since` its last sync sees the revert. When the app’s wilderness is closed (`wildernessOpen` false), an applied rollback that would write any chunk of closed, unclaimed wilderness is refused (403) before it writes anything; a dry run is not. Requires a valid bearer token AND the `manage_apps` permission on the org that owns `appId` (super admins bypass). */
4840
4840
  rollbackVoxelUpdates: Array<RollbackVoxelEventResult>;
4841
4841
  /** OPERATOR ONLY. Runs the shared-usage billing tick once. It still bills only the last CLOSED clock hour — it will not charge an open hour. Use this to prove a closed-hour debit without waiting for the ~60s cron. Backdating usage rows is a local-test fixture, not something this mutation does on a live tier. */
4842
4842
  runSharedUsageBillingTick: Scalars['Boolean']['output'];
@@ -6799,7 +6799,7 @@ export type Query = {
6799
6799
  execMods: Array<ExecMod>;
6800
6800
  /** Your mods in an app, on every grid. */
6801
6801
  execMyMods: Array<ExecMod>;
6802
- /** The starter packs, which replace the compute templates: a world tick (the root hub: clock, weather, resource nodes, liveops events), a matchmaker, game sessions (lobby, host, turns, scores) and an NPC and mob engine, as ckx-sdk crates to pass to `execBuild` and a manifest for `execDeploy`. Requires the org 'manage_compute' permission. */
6802
+ /** The starter packs, which replace the compute templates: ckx-sdk hub crates for a root world, matchmaking, game sessions, NPCs and mobs, and game genres (leaderboards, cards, tactics, waves, duels, private runs, arenas, races, territory), to pass to `execBuild`, with a manifest for `execDeploy`. `starters` has one entry per node type, so a crate that serves two types appears twice: build it once. Requires the org 'manage_compute' permission. */
6803
6803
  execStarters: ExecStarterPack;
6804
6804
  /** An app's deployed ck-exec versions, newest first, and which is active. Requires the org 'view_compute_diagnostics' permission. */
6805
6805
  execVersions: Array<ExecVersion>;