@bountyboard/arcade-sdk 1.3.0 → 1.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @bountyboard/arcade-sdk
2
2
 
3
+ ## 1.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 004192a: Honor the room ID returned by the host ticket service when joining by code. This lets isolated playtest invitations select a fixed room while retaining the normal join and reconnect lifecycle.
8
+
9
+ ## 1.4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - publish workflow and docs cleanup
14
+
15
+ ## 1.3.1
16
+
17
+ ### Patch Changes
18
+
19
+ - 7273667: Stop prompting flexible-orientation Arcade games to rotate on mobile.
20
+
3
21
  ## 1.3.0
4
22
 
5
23
  ### Minor Changes
@@ -64,7 +82,7 @@
64
82
  - 145d951: Document the built-in relay room tier: every multiplayer-approved game gets
65
83
  hosted casual lobbies (public quick match, invite codes, host succession,
66
84
  rate-guarded public message fan-out) with zero server code, via the existing
67
- `joinRoom()` API. New `docs/relay-rooms.md` covers the wire contract — the
85
+ `joinRoom()` API. New `docs/relay-rooms.md` covers the wire contract: the
68
86
  `joinData.roomSize` founding rule (2–64, default 8), `relay`/`relay_host`
69
87
  events, the 1 KiB / 15 msg/s / 120 msg/room/s guardrails, and the
70
88
  client-trusted outcome model (relay rooms never emit `end` or report results).
package/README.md CHANGED
@@ -144,8 +144,8 @@ Hosted uploads run in an opaque-origin sandbox without `localStorage`; SDK
144
144
  cloud save is primary there. URL embeds and standalone builds need their own
145
145
  same-origin storage. Oversized blobs reject `too_large` immediately (a
146
146
  client-side precheck against the same 1 MiB cap the server enforces), and a
147
- host that never answers rejects `error` after a 15-second request timeout —
148
- the same timeout covers load, variant, and multiplayer-ticket requests. Every
147
+ host that never answers rejects `error` after a 15-second request timeout.
148
+ The same timeout covers load, variant, and multiplayer ticket requests. Every
149
149
  save/load rejection is a real `Error` with a typed `code`:
150
150
 
151
151
  ```text
@@ -156,7 +156,7 @@ unsupported | unauthenticated | too_large | rejected | error
156
156
 
157
157
  Prefer `save()`/`load()` when you control the source. The shim is for engine
158
158
  runtimes whose storage layer can't be rewired without patching engine
159
- internals — GameMaker HTML5 (`ini_open`, `ini_write_*`, and `game_save` all sit
159
+ internals: GameMaker HTML5 (`ini_open`, `ini_write_*`, and `game_save` all sit
160
160
  on `localStorage`), Godot, Unity, Construct. It replaces the throwing
161
161
  `localStorage` with a Storage-shaped object backed by your cloud save, so those
162
162
  builds persist per player and across devices with no engine changes.
@@ -181,7 +181,7 @@ startGame();
181
181
 
182
182
  Writes made before hydration are kept and merged with the cloud read (your
183
183
  write wins; a `removeItem` isn't resurrected), and nothing is pushed to the
184
- server until that read has SUCCEEDED — a failed read is retried, and a write
184
+ server until that read has SUCCEEDED. A failed read is retried, and a write
185
185
  that still can't confirm what the player had is refused rather than allowed to
186
186
  overwrite it blind, so neither a fresh-start write at boot nor a transport blip
187
187
  can wipe an existing save. `sessionStorage` is shimmed too, but memory-only. Guests and
@@ -325,11 +325,11 @@ Two tuning hooks: `joinRoom({ timeoutMs })` overrides how long a join (and
325
325
  each reconnect attempt) waits for the server's welcome before rejecting with
326
326
  `code: 'error'` (default 10000, clamped to 1000–60000), and `room.latencyMs`
327
327
  reports the join-handshake latency (socket open to server welcome, refreshed
328
- on every reconnect; `null` until the first welcome) — an estimate to tune
329
- render-side smoothing against, not a measured RTT.
328
+ on every reconnect; `null` until the first welcome). Treat it as an estimate
329
+ for tuning render-side smoothing, not a measured RTT.
330
330
 
331
331
  Rooms are lobby-based: each game module declares its player range (up to 64
332
- per room). `match: true` is public quick match — Bounty Board fills the game's
332
+ per room). `match: true` is public quick match: Bounty Board fills the game's
333
333
  open public room and starts a fresh one when no seat is free; the matched
334
334
  room's `room.code` still works as an invite code. When the last free seat is
335
335
  lost to a race the SDK re-matchmakes automatically (up to two retries) before
@@ -344,7 +344,7 @@ snapshots at the room tick rate, and every input takes a network round trip
344
344
  before its effect appears in a snapshot. There is no built-in client-side
345
345
  prediction, interpolation, or rollback. Design for it: turn-based, timing-duel,
346
346
  score-race, and party games feel native; twitch physics (fighting games,
347
- precision platform duels) need your own render-side smoothing — interpolate
347
+ precision platform duels) need your own render-side smoothing: interpolate
348
348
  between snapshots and animate optimistic feedback for the local player's input,
349
349
  but treat the next snapshot as truth. Assume 50-150 ms of input-to-snapshot
350
350
  latency on real connections when tuning game feel. (Relay rooms differ: game
package/dist/global.js CHANGED
@@ -1597,7 +1597,10 @@
1597
1597
  return new RoomConnection(code, devGrant, joinData, timeoutMs).connect(devGrant);
1598
1598
  }
1599
1599
  return requestTicket({ roomId: code }).then(
1600
- (grant) => new RoomConnection(code, null, joinData, timeoutMs).connect(grant)
1600
+ (grant) => {
1601
+ var _a;
1602
+ return new RoomConnection((_a = grant.roomId) != null ? _a : code, null, joinData, timeoutMs).connect(grant);
1603
+ }
1601
1604
  );
1602
1605
  }
1603
1606
  var multiplayer = { joinRoom };
@@ -1622,7 +1622,10 @@ function joinRoom(options) {
1622
1622
  return new RoomConnection(code, devGrant, joinData, timeoutMs).connect(devGrant);
1623
1623
  }
1624
1624
  return requestTicket({ roomId: code }).then(
1625
- (grant) => new RoomConnection(code, null, joinData, timeoutMs).connect(grant)
1625
+ (grant) => {
1626
+ var _a;
1627
+ return new RoomConnection((_a = grant.roomId) != null ? _a : code, null, joinData, timeoutMs).connect(grant);
1628
+ }
1626
1629
  );
1627
1630
  }
1628
1631
  var multiplayer = { joinRoom };