@flayerlabs/gamemode-cli 0.5.5 → 0.6.0

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.
@@ -55,3 +55,7 @@ In the SDK:
55
55
  3. Run `pnpm release:check` when a published contract or package surface changed.
56
56
 
57
57
  Check replay, reconnect, hidden-data leaks, late actions, duplicate actions, oversized input, wake timing and the reward ceiling where they apply. If infrastructure blocks a check, report the exact check you could not run. Do not weaken or skip it.
58
+
59
+ ## Ship
60
+
61
+ Build with `@flayerlabs/gamemode-client` 0.5.5 or later, deploy the scaffolded gate (`src/gate.ts`), and upload the zip at the developer dashboard, `https://flaunch.gg/game-mode/dashboard`: one gate per chain (Base Sepolia 84532 required for testing; Base 8453 and Robinhood 4663 production), tick "supports practice mode" when the build runs on `createMockRoom`, mark it mobile-friendly if it is, and run the Base Sepolia test launch. Bundling rules and the full ship checklist are steps 7–8 of `$port-game-mode`; a game with its own multiplayer server follows `$run-a-game-server`.
@@ -8,7 +8,7 @@ description: Connects a game with its own authoritative multiplayer server to Fl
8
8
  You have a game whose gameplay lives on your own server. The platform never hosts or relays your
9
9
  realtime traffic: you run the server and the gate, and the platform gives your hosted game a strict
10
10
  policy that only reaches what you declared. This skill exists because that declaration lives in
11
- three places that must agree, and because the launch form refuses a gate that does not announce
11
+ three places that must agree, and because the dashboard refuses a gate that does not announce
12
12
  itself. Work through the sections in order; each ends with a check you can run.
13
13
 
14
14
  ## Know the three services and who hosts them
@@ -27,8 +27,9 @@ itself. Work through the sections in order; each ends with a check you can run.
27
27
 
28
28
  The reviewed game-server origins must match exactly — same scheme, same host, no path — in:
29
29
 
30
- 1. The platform submission form's game server addresses field (one per line). This becomes your
31
- hosted game's `connect-src`: the browser can only reach origins listed here or your gate.
30
+ 1. The game server addresses field of the developer dashboard at
31
+ `https://flaunch.gg/game-mode/dashboard` (one per line). This becomes your hosted game's
32
+ `connect-src`: the browser can only reach origins listed here or your gate.
32
33
  2. `gameServerOrigins` in your `createGameServerGate()` options. This puts each origin into the
33
34
  set of valid join-ticket audiences.
34
35
  3. The `joinTicket(origin)` call in your game client and the `audience` your server verifies.
@@ -39,14 +40,15 @@ wrong in (3) and verification rejects every player. At most four origins, exact
39
40
  wildcards, paths and plain HTTP are refused. Rotating regions? Put them behind stable hostnames;
40
41
  the list is not meant to churn.
41
42
 
42
- ## Serve /config, or the launch form refuses your gate
43
+ ## Serve /config, or the dashboard refuses your gate
43
44
 
44
- The launch page reads `GET /config` from your gate before it lets anyone launch a coin through
45
- your game. `startGate()` serves it automatically; `createGameServerGate()` serves it only when
46
- you pass `announce`. Without it the form reports your server "isn't answering — it may be offline,
45
+ The dashboard reads `GET /config` from your gate when you declare it, and the launch page reads it
46
+ again before it lets anyone launch a coin through your game. `startGate()` serves it automatically; `createGameServerGate()` serves it only when
47
+ you pass `announce`. Without it the dashboard reports your server "isn't answering — it may be offline,
47
48
  or built before the current Game Mode SDK". Pass it:
48
49
 
49
50
  ```ts
51
+ // Base Sepolia (84532) — the TESTNET example. Production chains announce their own pair; see below.
50
52
  const app = createGameServerGate({
51
53
  // ...pool, sessions, claims, discovery, settlement, gameId, awardToken...
52
54
  gameServerOrigins: ['https://us.game.example.com', 'https://eu.game.example.com'],
@@ -71,7 +73,13 @@ const app = createGameServerGate({
71
73
  })
72
74
  ```
73
75
 
74
- The addresses above are Base Sepolia (chain 84532), read back from the chain. `signer` is what a
76
+ The addresses above are Base Sepolia (chain 84532), read back from the chain, and `v1_2` is that
77
+ stack's generation. A Base mainnet (8453) gate announces `chainId: 8453`, `flaunchVariant: 'v1_3'`
78
+ and the V1_3 PositionManager and spend-gated calculator deployed there — read them back from the
79
+ chain, never copy the Sepolia pair. One gate process serves one chain and one calculator, and
80
+ adopts coins on any PositionManager wired to that calculator; `contracts.positionManager` is the
81
+ primary manager, and `/config` announces `positionManagerPolicy: 'wired-to-calculator'` (0.6.0) so
82
+ launch tooling knows other wired managers are accepted. `signer` is what a
75
83
  launch writes into its pool as the trusted signer — announce an address you do not hold and every
76
84
  coin launched through your game is unplayable. `walletCap` must cover a flawless round
77
85
  (`maxPointsPerPlayer` times the wei value of a point) or boot refuses.
@@ -162,8 +170,12 @@ bundle contains none of them.
162
170
 
163
171
  ## Submit, then verify against the real policy
164
172
 
165
- Submit the zip with the gate option on (your gate origin) and the game server addresses filled in.
166
- The form live-probes your gate's `/health` at submission, so deploy the gate first. Localhost
173
+ Upload the zip in the developer dashboard at `https://flaunch.gg/game-mode/dashboard`, declare
174
+ your gate origin as a network — one gate per chain: Base Sepolia (84532) is required for testing,
175
+ Base (8453) and Robinhood (4663) are production — and fill in the game server addresses. The
176
+ dashboard live-probes `/health` at submission, so deploy the gate first; it refuses builds below
177
+ `@flayerlabs/gamemode-client` 0.5.5 and gates whose `/config` `gateVersion` is below 0.5.5. Mark
178
+ the game mobile-friendly if it is, and run the Base Sepolia test launch from the dashboard. Localhost
167
179
  cannot rehearse the deployed CSP: after hosting, open the deployed game and confirm every declared
168
180
  origin connects and an undeclared one is blocked. Then launch a fresh test coin through the room
169
181
  link — a coin launched before a registration change stays bound to what it was launched with.
package/dist/scaffold.js CHANGED
@@ -118,8 +118,9 @@ pnpm typecheck
118
118
  ## Deploy your gate
119
119
 
120
120
  Game Mode needs your game to bring its own round server — a gate — and its public https origin is
121
- exactly the **Gate URL** you enter when you submit the game at flaunch.gg/game-mode/create. Flaunch
122
- never runs a gate for you and never holds your signing key.
121
+ exactly the **Gate URL** you declare as a network for the game in the developer dashboard at
122
+ https://flaunch.gg/game-mode/dashboard. Flaunch never runs a gate for you and never holds your
123
+ signing key.
123
124
 
124
125
  \`src/gate.ts\` is the whole entrypoint; \`.env.example\` is the whole contract. On Railway:
125
126
 
@@ -408,10 +409,11 @@ USD_PER_ETH=3000
408
409
  # Per-wallet cap for ETH-paired launches, in wei. Default 0.025 ETH.
409
410
  WALLET_CAP_WEI=25000000000000000
410
411
  # Paired-token rounds: coins paired with something other than ETH spend in THAT token's base
411
- # units. List each token you will host with its dollar price and the per-wallet cap a launch on
412
- # it should write (base units — 50000000 is 50 MUSD at six decimals). Symbol and decimals are
413
- # read from the chain. A token not listed here is refused at adoption; the gate never guesses a
414
- # price. Hosting them also needs the paired stack: POSITION_MANAGER=<the V1_3 paired manager>.
412
+ # units. On a paired stack (POSITION_MANAGER=<the V1_3 paired manager>) the gate prices every
413
+ # token the chain's PairedTokenRegistry approves by itself, through the calculator the token was
414
+ # registered with, so nothing is listed here. Pin a price only when you must: dollar price and
415
+ # the per-wallet cap a launch should write (base units — 50000000 is 50 MUSD at six decimals).
416
+ # Symbol and decimals are read from the chain. A token the registry does not approve is refused.
415
417
  # SPEND_TOKENS=[{"address":"0xd0B4398976572515a269C6331A143e08a70E9ccC","usdPerToken":1,"walletCap":"50000000"}]
416
418
  `,
417
419
  'railpack.json': `${JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flayerlabs/gamemode-cli",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "Create and validate Flaunch Game Modes",
5
5
  "license": "MIT",
6
6
  "author": "Flayer Labs",
package/src/scaffold.ts CHANGED
@@ -147,8 +147,9 @@ pnpm typecheck
147
147
  ## Deploy your gate
148
148
 
149
149
  Game Mode needs your game to bring its own round server — a gate — and its public https origin is
150
- exactly the **Gate URL** you enter when you submit the game at flaunch.gg/game-mode/create. Flaunch
151
- never runs a gate for you and never holds your signing key.
150
+ exactly the **Gate URL** you declare as a network for the game in the developer dashboard at
151
+ https://flaunch.gg/game-mode/dashboard. Flaunch never runs a gate for you and never holds your
152
+ signing key.
152
153
 
153
154
  \`src/gate.ts\` is the whole entrypoint; \`.env.example\` is the whole contract. On Railway:
154
155
 
@@ -441,10 +442,11 @@ USD_PER_ETH=3000
441
442
  # Per-wallet cap for ETH-paired launches, in wei. Default 0.025 ETH.
442
443
  WALLET_CAP_WEI=25000000000000000
443
444
  # Paired-token rounds: coins paired with something other than ETH spend in THAT token's base
444
- # units. List each token you will host with its dollar price and the per-wallet cap a launch on
445
- # it should write (base units — 50000000 is 50 MUSD at six decimals). Symbol and decimals are
446
- # read from the chain. A token not listed here is refused at adoption; the gate never guesses a
447
- # price. Hosting them also needs the paired stack: POSITION_MANAGER=<the V1_3 paired manager>.
445
+ # units. On a paired stack (POSITION_MANAGER=<the V1_3 paired manager>) the gate prices every
446
+ # token the chain's PairedTokenRegistry approves by itself, through the calculator the token was
447
+ # registered with, so nothing is listed here. Pin a price only when you must: dollar price and
448
+ # the per-wallet cap a launch should write (base units — 50000000 is 50 MUSD at six decimals).
449
+ # Symbol and decimals are read from the chain. A token the registry does not approve is refused.
448
450
  # SPEND_TOKENS=[{"address":"0xd0B4398976572515a269C6331A143e08a70E9ccC","usdPerToken":1,"walletCap":"50000000"}]
449
451
  `,
450
452