@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.
@@ -1,12 +1,12 @@
1
1
  # Relay rooms
2
2
 
3
- Relay rooms are the zero-server-code multiplayer tier. Every game with SDK
4
- multiplayer approved gets them automatically: hosted lobbies, shareable invite
5
- codes, public quick match, reconnect handling, and message fan-out — without
6
- registering a server module or running any backend. The same `joinRoom()` API
7
- drives all tiers, so a game can start on relay rooms and graduate to a
8
- refereed module or an external authoritative server later without client
9
- rewrites.
3
+ Relay rooms are the multiplayer tier that needs no server code. Every game with
4
+ SDK multiplayer approved gets them automatically: hosted lobbies, shareable
5
+ invite codes, public quick match, reconnect handling, and message fan out,
6
+ without registering a server module or running any backend. The same
7
+ `joinRoom()` API drives all tiers, so a game can start on relay rooms and
8
+ graduate to a refereed module or an external authoritative server later without
9
+ client rewrites.
10
10
 
11
11
  ## What the server owns (and what it refuses to)
12
12
 
@@ -15,13 +15,13 @@ The relay server authoritatively owns everything it can own *generically*:
15
15
  - the roster and seat cap,
16
16
  - host designation and succession,
17
17
  - admission (signed tickets, room binding, per-seat connection caps),
18
- - message fan-out with rate and size guardrails.
18
+ - message fan out with rate and size guardrails.
19
19
 
20
20
  It deliberately does not interpret game payloads, so it cannot referee them.
21
- Relay outcomes are client-trusted: relay rooms never emit `match_end`, never
21
+ Relay outcomes are client trusted: relay rooms never emit `match_end`, never
22
22
  report results to Bounty Board, and never feed win/loss records or
23
- leaderboards. Games that need authoritative results — anything ranked,
24
- recorded, or reward-adjacent — must use a refereed Bounty-hosted module or a
23
+ leaderboards. Games that need authoritative results (anything ranked,
24
+ recorded, or reward adjacent) must use a refereed Bounty hosted module or a
25
25
  registered external authority instead.
26
26
 
27
27
  ## Joining
@@ -39,7 +39,7 @@ const room = await joinRoom({
39
39
  - `code` joins a friend's room.
40
40
  - `match: true` enters the game's open public room, or founds one.
41
41
 
42
- All three go through the standard signed-ticket flow; nothing about relay
42
+ All three go through the standard signed ticket flow; nothing about relay
43
43
  rooms weakens admission.
44
44
 
45
45
  ### Room size
@@ -52,7 +52,7 @@ next arrival re-founds it. Ship the same `roomSize` from every client of
52
52
  your game so matchmade rooms are founded consistently.
53
53
 
54
54
  Quick match fills rooms to the founded size. Because matchmaking reserves
55
- seats conservatively, a burst of simultaneous quick-match joins can briefly
55
+ seats conservatively, a burst of simultaneous quick match joins can briefly
56
56
  overshoot a small room; losers of that race receive `room_full` and the SDK
57
57
  automatically retries into the next room.
58
58
 
@@ -61,7 +61,7 @@ automatically retries into the next room.
61
61
  `room.send(payload)` relays `payload` to **every** player in the room,
62
62
  including the sender. There are no private messages: every client sees every
63
63
  payload, so never send secrets (hidden roles, private hands) through a relay
64
- room. Payload semantics are entirely yours — the server never reads them.
64
+ room. Payload semantics are entirely yours. The server never reads them.
65
65
 
66
66
  Messages are batched per server tick and delivered through `room.on('event')`:
67
67
 
@@ -78,7 +78,7 @@ room.on('event', event => {
78
78
  });
79
79
  ```
80
80
 
81
- Guardrails (over-limit traffic is dropped silently; the state snapshot's
81
+ Guardrails (traffic over the limit is dropped silently; the state snapshot's
82
82
  `dropped` counter is the debugging breadcrumb):
83
83
 
84
84
  | Limit | Value |
@@ -101,9 +101,9 @@ grace keeps both the seat and the host role, so a brief network blip does not
101
101
  thrash host succession.
102
102
 
103
103
  Use the host as your game's coordinator: it can own spawn timing, level
104
- seeds, or authoritative-enough game state for casual play. Remember the trust
105
- model — a modified client can lie, which is acceptable for casual co-op and
106
- couch-style games and not acceptable for anything with stakes.
104
+ seeds, or authoritative enough game state for casual play. Remember the trust
105
+ model. A modified client can lie, which is acceptable for casual co-op and
106
+ couch style games and not acceptable for anything with stakes.
107
107
 
108
108
  ## State snapshots
109
109
 
@@ -123,12 +123,12 @@ current.
123
123
  Relay rooms never settle: there is no `end` event, and a room lives while it
124
124
  has players (seats survive a 15-second reconnect grace). Implement your own
125
125
  notion of rounds or matches in game messages, and call `room.leave()` when
126
- the player exits — leaving is immediate and never reconnects.
126
+ the player exits. Leaving is immediate and never reconnects.
127
127
 
128
128
  ## Graduating to a refereed tier
129
129
 
130
- If your game outgrows client trust — ranked results, tournaments, anything
131
- paid — the ticket flow, room codes, and quick match all stay the same; the
130
+ If your game outgrows client trust (ranked results, tournaments, anything
131
+ paid), the ticket flow, room codes, and quick match all stay the same; the
132
132
  room's simulation moves server-side. Contact Bounty Board about a refereed
133
- Bounty-hosted module, or keep your own server and register it under the
133
+ Bounty hosted module, or keep your own server and register it under the
134
134
  external authority contract (see `external-authoritative-servers.md`).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bountyboard/arcade-sdk",
3
- "version": "1.3.0",
4
- "description": "Bounty Board Arcade SDK — leaderboards, cloud saves, rewarded ads, A/B variants, and multiplayer rooms for games on bountyboard.gg",
3
+ "version": "1.4.1",
4
+ "description": "Bounty Board Arcade SDK: leaderboards, cloud saves, rewarded ads, A/B variants, and multiplayer rooms for games on bountyboard.gg",
5
5
  "keywords": [
6
6
  "bountyboard",
7
7
  "arcade",