@indiegems/gem-web-sdk 11.0.0 → 11.1.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.
@@ -872,11 +872,54 @@ seat stands, so `myRooms()` shows the room and `join(id)` enters it.
872
872
  | `matchmaking_not_enabled` (400) | A named template has no enabled `matchmaking` block. A config fault, not a player one. |
873
873
  | `matchmaking_unavailable` (503) | Matchmaking is turned off for the whole platform, or its store is not answering. |
874
874
 
875
+ **A party leader can meet three more.** The platform checks that a party can be seated together
876
+ before it queues it, so a party that could not play is told at once rather than matched and then
877
+ dropped. Only the leader queues, so only the leader's game sees these. No ticket was made, and the
878
+ button can be pressed again.
879
+
880
+ | Code | Meaning | What to show the leader |
881
+ | --- | --- | --- |
882
+ | `version_data_required` (400) | The party has not launched this game together, so the platform has no record of what each member is running. | "Start the game with your party from the Arcade to queue together." Pressing again will not help until they do. |
883
+ | `party_versions_incomplete` (409) | A member's game has not finished starting, so their version has not arrived yet. | "Waiting for your party to finish loading." This one clears by itself: queue again after a few seconds, on the player's press or on a short timer. |
884
+ | `party_version_mismatch` (409) | A member is running a build that cannot play with the leader's. | "Someone in your party is on a different version. Everyone reload the game." |
885
+
886
+ A party's `quickJoin()` and `create()` are refused the same way, with the same codes.
887
+
875
888
  ⚠️ **Nothing falls back to quick-join, and a game should not either.** Not on
876
889
  `matchmaking_unavailable`, not on `expired`. Quick-join puts the player in a different kind of room —
877
890
  alone, in a mode that was queued for precisely because it needs a lobby. Tell the player matchmaking is
878
891
  unavailable and leave the button where it is.
879
892
 
893
+ ## 5d. Quick-joining any of several modes
894
+
895
+ A drop-in game with more than one mode can ask for whichever has players, in one call:
896
+
897
+ ```js
898
+ const room = await gem.rooms.quickJoin({ templateSlugs: ['duel', 'brawl'] });
899
+ startMode(room.templateSlug); // which one the player landed in
900
+ ```
901
+
902
+ - **Open rooms of every listed template are candidates together**, ranked as a single-template
903
+ quick-join ranks them: the fullest first, then the closest cluster.
904
+ - **The order matters only when no room is open.** The room that gets created is made from the
905
+ **first** slug listed, so put the mode an empty lobby should start in first.
906
+ - **One to eight slugs, in place of `templateSlug`, never beside it.** A list together with
907
+ `templateSlug` or `templateId`, an empty list, or more than eight is refused locally, before
908
+ the platform is asked.
909
+ - **Every listed template must be one players can quick-join.** One that is not refuses the whole
910
+ call; it is not skipped.
911
+ - **`room.templateSlug` says which template the room is from.** It is on every room, however it was
912
+ entered.
913
+
914
+ A call that passes `templateSlug` behaves exactly as it always has.
915
+
916
+ Under a developer's tool that runs the game's server on the developer's own machine, only the first
917
+ slug is sent. Such a room is always created rather than joined, so it would be made from the first
918
+ template either way.
919
+
920
+ This is still quick-join: the player is in a room at once, possibly alone. For "any of these modes,
921
+ but never start short", name the same slugs on `queueForMatch()` instead.
922
+
880
923
  ## 6. Scope
881
924
 
882
925
  **In:** rooms, membership, host, ready state, the match lifecycle, and the dedicated-server connect
@@ -80,8 +80,8 @@ To check the download yourself: the package npm serves is, byte for byte, the fi
80
80
  also publishes on its download host, with the hash beside it:
81
81
 
82
82
  ```bash
83
- curl -fsSL -O https://downloads.gemarcade.com/sdk/v11.0.0/gem-web-sdk.tgz
84
- curl -fsSL https://downloads.gemarcade.com/sdk/v11.0.0/gem-web-sdk.tgz.sri
83
+ curl -fsSL -O https://downloads.gemarcade.com/sdk/v11.1.0/gem-web-sdk.tgz
84
+ curl -fsSL https://downloads.gemarcade.com/sdk/v11.1.0/gem-web-sdk.tgz.sri
85
85
  openssl dgst -sha384 -binary gem-web-sdk.tgz | openssl base64 -A
86
86
  ```
87
87
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indiegems/gem-web-sdk",
3
- "version": "11.0.0",
3
+ "version": "11.1.0",
4
4
  "description": "postMessage bridge contract between gem-web and browser-playable games",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",