@genex-ai/cli-demo 1.6.7-dev.444 → 1.7.0-dev.445

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genex-ai/cli-demo",
3
- "version": "1.6.7-dev.444",
3
+ "version": "1.7.0-dev.445",
4
4
  "description": "Set up your project's agent workspace (.claude/.codex/.cursor in the game folder), authorize, create a game project, generate AI assets, and publish (genex CLI).",
5
5
  "type": "module",
6
6
  "bin": {
@@ -60,7 +60,9 @@ export interface ProximityVoiceOptions {
60
60
  maxDistance?: number;
61
61
  /** Falloff steepness. Default 1.4 — a little sharper than linear reads as "nearby". */
62
62
  rolloffFactor?: number;
63
- /** TURN servers. Without one, players behind symmetric NAT never connect (~10–20%). */
63
+ /** OVERRIDE the ICE servers. You do not need this the SDK fetches relay (TURN)
64
+ * credentials from the platform on join, which is what lets the ~15% of players behind
65
+ * symmetric NAT or carrier CGNAT be heard at all. Set it only to run your own TURN. */
64
66
  iceServers?: RTCIceServer[];
65
67
  /** Push-to-talk key. Default "KeyV"; pass null for open-mic. */
66
68
  pushToTalkKey?: string | null;
@@ -46,8 +46,9 @@ npm i @genex-ai/multiplayer@^0.12.0
46
46
  > landed in 0.10; confirmed object controls, snaps, host-tick teardown, and reconnect rebasing
47
47
  > in 0.9. An older resolve does not have those.
48
48
 
49
- This skill targets `@genex-ai/multiplayer` **≥ 0.15.0** (`objects`/`host` since 0.4; verified per-player `avatarUrl` since 0.12;
49
+ This skill targets `@genex-ai/multiplayer` **≥ 0.16.0** (`objects`/`host` since 0.4; verified per-player `avatarUrl` since 0.12;
50
50
  room text chat via `room.chat` since 0.14; mesh voice via `room.voice` since 0.15;
51
+ automatic TURN (voice connects behind symmetric NAT with no configuration) since 0.16;
51
52
  `matchmake()` since 0.5; private lobbies since 0.7; auto-reconnect + `inputs`/`onHostTick`
52
53
  since 0.8; soft ownership handoff since 0.8.4; confirmed controls, snap epochs, and host-tick
53
54
  lifecycle guarantees since 0.9; regional relay selection via `getColyseusUrls()` since 0.10; host-only `setRoomOpen()` since 0.13;
@@ -673,9 +674,12 @@ fights (many writers). A ball on `objects` glides and has one owner. That's the
673
674
  prompt and audio playback on a user gesture — and it REJECTS when the player denies the
674
675
  mic, which is an ordinary outcome to show, not an error to swallow. For a 3D game use
675
676
  `npx genex controller voice` (proximity audio + push-to-talk); it joins with
676
- `{ spatial: true }` and drives a `THREE.PositionalAudio` per speaker. **Configure TURN
677
- for anything real**: ~10–20% of players are behind symmetric NAT and connect to nobody
678
- without it, while everyone else works a miserable bug to diagnose from a report.
677
+ `{ spatial: true }` and drives a `THREE.PositionalAudio` per speaker. **TURN is automatic
678
+ do not pass `iceServers`**: `join()` fetches short-lived relay credentials from the
679
+ platform before opening any peer connection, which is what lets the ~15% of players behind
680
+ symmetric NAT or carrier CGNAT be heard at all (in a mesh they fail every leg, so they
681
+ connect to nobody while everyone else works — a miserable bug to diagnose from a report).
682
+ Passing `iceServers` overrides this and is only for running your own TURN.
679
683
  - `room.inputs.send(payload)` / `room.inputs.on((fromId, payload) => …)` — the host-routed
680
684
  input channel for host-authoritative physics: anyone sends, ONLY the current host receives.
681
685
  See [references/host-physics.md](references/host-physics.md).