@rydr/game-sdk 3.9.0 → 3.11.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.
Files changed (51) hide show
  1. package/README.md +64 -0
  2. package/dist/client/PlatformClient.d.ts +6 -0
  3. package/dist/client/PlatformClient.d.ts.map +1 -1
  4. package/dist/client/PlatformClient.js +18 -0
  5. package/dist/client/PlatformClient.js.map +1 -1
  6. package/dist/conversations/index.d.ts +76 -38
  7. package/dist/conversations/index.d.ts.map +1 -1
  8. package/dist/conversations/index.js +136 -58
  9. package/dist/conversations/index.js.map +1 -1
  10. package/dist/conversations/voice-samples.d.ts +45 -0
  11. package/dist/conversations/voice-samples.d.ts.map +1 -0
  12. package/dist/conversations/voice-samples.js +63 -0
  13. package/dist/conversations/voice-samples.js.map +1 -0
  14. package/dist/conversations/voices.d.ts +33 -5
  15. package/dist/conversations/voices.d.ts.map +1 -1
  16. package/dist/conversations/voices.js +59 -31
  17. package/dist/conversations/voices.js.map +1 -1
  18. package/dist/protocol/conversations.d.ts +12 -7
  19. package/dist/protocol/conversations.d.ts.map +1 -1
  20. package/dist/protocol/conversations.js.map +1 -1
  21. package/dist/protocol/version.d.ts +1 -1
  22. package/dist/protocol/version.d.ts.map +1 -1
  23. package/dist/protocol/version.js +1 -1
  24. package/dist/protocol/version.js.map +1 -1
  25. package/dist/ui/README.md +2 -0
  26. package/dist/ui/index.d.ts +2 -0
  27. package/dist/ui/index.d.ts.map +1 -1
  28. package/dist/ui/index.js +2 -0
  29. package/dist/ui/index.js.map +1 -1
  30. package/dist/ui/power-race.d.ts +125 -0
  31. package/dist/ui/power-race.d.ts.map +1 -0
  32. package/dist/ui/power-race.js +726 -0
  33. package/dist/ui/power-race.js.map +1 -0
  34. package/dist/ui/showcase/index.d.ts.map +1 -1
  35. package/dist/ui/showcase/index.js +45 -1
  36. package/dist/ui/showcase/index.js.map +1 -1
  37. package/dist/ui/styles.js +13 -0
  38. package/dist/ui/styles.js.map +1 -1
  39. package/dist/ui/subtitle.d.ts +27 -0
  40. package/dist/ui/subtitle.d.ts.map +1 -0
  41. package/dist/ui/subtitle.js +77 -0
  42. package/dist/ui/subtitle.js.map +1 -0
  43. package/dist/voice-gallery/index.d.ts +31 -0
  44. package/dist/voice-gallery/index.d.ts.map +1 -0
  45. package/dist/voice-gallery/index.js +276 -0
  46. package/dist/voice-gallery/index.js.map +1 -0
  47. package/dist/voiceover-editor/index.d.ts +8 -5
  48. package/dist/voiceover-editor/index.d.ts.map +1 -1
  49. package/dist/voiceover-editor/index.js +158 -76
  50. package/dist/voiceover-editor/index.js.map +1 -1
  51. package/package.json +5 -1
@@ -1,8 +1,10 @@
1
1
  import { CONVERSATIONS_COLLECTION, VOICE_CAST_COLLECTION, DEFAULT_VOICEOVER_SPEED, synthDirection, } from "../protocol/conversations.js";
2
2
  import { lineHash } from "./hash.js";
3
3
  import { mountDialogueCard, } from "../ui/dialogue-card.js";
4
+ import { mountSubtitle } from "../ui/subtitle.js";
4
5
  export * from "./hash.js";
5
6
  export * from "./voices.js";
7
+ export * from "./voice-samples.js";
6
8
  export { CONVERSATIONS_COLLECTION, VOICE_CAST_COLLECTION, DEFAULT_VOICEOVER_SPEED, synthDirection, } from "../protocol/conversations.js";
7
9
  /** Normalize authored spec lines to {@link ConversationLine}s (authored fields only). */
8
10
  function normalize(id, spec) {
@@ -36,12 +38,25 @@ async function resolveCast(session, lines) {
36
38
  }
37
39
  return out;
38
40
  }
39
- /** Resolve a line's effective voice, delivery direction, and speed from cast catalog defaults. */
40
- function resolveLine(line, character, cast) {
41
+ /** The EFFECTIVE content of a line for playback/synthesis the editor-owned stored values when present,
42
+ * else the code-declared fallback. This is the crux of the inverted model: gamedata (edited in the
43
+ * voice-over editor) is the source of truth at runtime; the code `defineConversation` text/style/speed
44
+ * are only the seed + git copy (refreshed by "eject to code"). */
45
+ function effectiveContent(code, stored) {
46
+ return {
47
+ characterId: stored?.characterId ?? code.characterId,
48
+ text: stored?.text ?? code.text,
49
+ style: stored?.style ?? code.style,
50
+ speed: stored?.speed ?? code.speed,
51
+ };
52
+ }
53
+ /** Resolve a line's effective voice, delivery direction, and speed from cast → catalog → defaults, given
54
+ * its already-resolved effective content (see {@link effectiveContent}). */
55
+ function resolveLine(eff, character, cast) {
41
56
  const voice = cast?.voice ?? character?.voice;
42
57
  const context = cast?.context ?? character?.voiceStyle;
43
- const speed = line.speed ?? cast?.speed ?? DEFAULT_VOICEOVER_SPEED;
44
- return { voice, direction: synthDirection(context, line.style), speed };
58
+ const speed = eff.speed ?? cast?.speed ?? DEFAULT_VOICEOVER_SPEED;
59
+ return { voice, direction: synthDirection(context, eff.style), speed };
45
60
  }
46
61
  /** Default `"auto"` hold factor — visible time = factor × audio duration. */
47
62
  const DEFAULT_HOLD_FACTOR = 1.5;
@@ -81,62 +96,56 @@ class PausableTimer {
81
96
  this.done = true;
82
97
  }
83
98
  }
84
- export function defineConversation(id, spec) {
99
+ export function defineConversation(id, spec, opts) {
85
100
  const lines = normalize(id, spec);
86
101
  /** Resolve each line to its display name + CURRENT audio URL (stored audio whose hash still matches).
87
102
  * Shared by open() (card sequence) and player()/audio() (imperative playback). */
88
103
  const resolveDialogue = async (session) => {
89
- const [chars, cast] = await Promise.all([resolveCharacters(session, lines), resolveCast(session, lines)]);
90
104
  const stored = (await session.getContent(CONVERSATIONS_COLLECTION, id).catch(() => null));
91
105
  const storedLines = new Map();
92
106
  for (const l of stored?.data?.lines ?? [])
93
107
  storedLines.set(l.id, l);
108
+ // Resolve characters/cast against the EFFECTIVE speakers (a line's speaker may be recast in the editor),
109
+ // not just the code speakers — otherwise a recast line's voice wouldn't resolve.
110
+ const effLines = lines.map((l) => ({ ...l, characterId: effectiveContent(l, storedLines.get(l.id)).characterId }));
111
+ const [chars, cast] = await Promise.all([resolveCharacters(session, effLines), resolveCast(session, effLines)]);
94
112
  const out = [];
95
113
  for (const l of lines) {
96
- const ch = chars.get(l.characterId) ?? null;
97
- const { voice, direction, speed } = resolveLine(l, ch, cast.get(l.characterId) ?? null);
114
+ const s = storedLines.get(l.id);
115
+ const eff = effectiveContent(l, s); // gamedata content wins; code is the fallback
116
+ const ch = chars.get(eff.characterId) ?? null;
117
+ const { voice, direction, speed } = resolveLine(eff, ch, cast.get(eff.characterId) ?? null);
98
118
  let audioUrl;
99
119
  if (voice) {
100
- const hash = await lineHash({ text: l.text, voice, style: direction, speed, lang: l.lang });
101
- const s = storedLines.get(l.id);
120
+ // Hash the EFFECTIVE content so editor-edited audio (generated from the stored text) still matches.
121
+ const hash = await lineHash({ text: eff.text, voice, style: direction, speed, lang: l.lang });
102
122
  if (s?.audioUrl && s.audioHash === hash)
103
123
  audioUrl = s.audioUrl;
104
124
  }
105
- out.push({ id: l.id, characterId: l.characterId, name: ch?.label ?? l.characterId, text: l.text, audioUrl });
125
+ out.push({ id: l.id, characterId: eff.characterId, name: ch?.label ?? eff.characterId, text: eff.text, audioUrl });
106
126
  }
107
127
  return out;
108
128
  };
109
129
  const register = async (session) => {
110
130
  if (!session.identity.isAdmin)
111
131
  return; // shell gates `shared` writes; don't even try as a player
112
- const [chars, cast] = await Promise.all([resolveCharacters(session, lines), resolveCast(session, lines)]);
113
132
  const existing = (await session.getContent(CONVERSATIONS_COLLECTION, id).catch(() => null));
114
133
  const prevData = existing?.data;
115
134
  const prev = new Map();
116
135
  for (const l of prevData?.lines ?? [])
117
136
  prev.set(l.id, l);
118
- const merged = [];
119
- for (const l of lines) {
120
- const { voice, direction, speed } = resolveLine(l, chars.get(l.characterId) ?? null, cast.get(l.characterId) ?? null);
121
- const out = { ...l, voice };
122
- if (voice) {
123
- const hash = await lineHash({ text: l.text, voice, style: direction, speed, lang: l.lang });
124
- const p = prev.get(l.id);
125
- if (p?.audioUrl && p.audioHash === hash) {
126
- out.audioUrl = p.audioUrl;
127
- out.audioHash = p.audioHash;
128
- out.generatedAt = p.generatedAt;
129
- }
130
- }
131
- merged.push(out);
132
- }
137
+ // ADDITIVE SEED. Code owns STRUCTURE (which line ids exist + their order); the editor owns CONTENT
138
+ // (text/style/speed + generated audio), which is the runtime source of truth. So we keep every stored
139
+ // line VERBATIM (never clobber an edit or drop its audio) and only SEED lines that don't exist in
140
+ // gamedata yet, from the code fallback. Lines whose id left the code fall away (structural cleanup).
141
+ const merged = lines.map((l) => {
142
+ const p = prev.get(l.id);
143
+ return p ?? { id: l.id, characterId: l.characterId, text: l.text, style: l.style, speed: l.speed, lang: l.lang };
144
+ });
133
145
  const doc = { id, label: prevData?.label ?? id, lines: merged, origin: "code" };
134
146
  await session.saveContent(CONVERSATIONS_COLLECTION, id, doc);
135
147
  };
136
148
  const open = async (host, session, opts) => {
137
- if (session.identity.isAdmin && !opts?.noRegister) {
138
- await register(session).catch(() => { });
139
- }
140
149
  const resolved = await resolveDialogue(session);
141
150
  const dlg = resolved.map((r) => ({ text: r.text, name: r.name, audioUrl: r.audioUrl }));
142
151
  const card = mountDialogueCard(host, opts);
@@ -151,25 +160,32 @@ export function defineConversation(id, spec) {
151
160
  const player = (host, session, opts) => {
152
161
  const defaultDisplay = opts?.display ?? (host ? "card" : "none");
153
162
  const defaultFactor = opts?.holdFactor ?? DEFAULT_HOLD_FACTOR;
154
- // Text is code-defined → available NOW (sync); speaker name falls back to the id.
155
- const linesById = new Map(lines.map((l) => [l.id, l]));
156
- // Audio URLs need a gamedata read → resolve in the BACKGROUND and fill the pool. Until then (or for a
157
- // line with no generated clip) `play()` finds nothing and runs silent — voice-over is a pure enhancement.
163
+ // Code text is available NOW (sync fallback); the EDITED text + audio need a gamedata read, so they
164
+ // resolve in the BACKGROUND. `text(id)` returns the code fallback until then, the resolved (edited)
165
+ // text after; `ready` lets a scene await the resolved text before it paints cards (see below).
166
+ const codeById = new Map(lines.map((l) => [l.id, l]));
167
+ const resolvedText = new Map(); // gamedata → code, filled once resolved
168
+ const resolvedName = new Map(); // speaker display label, filled once resolved
158
169
  const pool = new Map();
159
170
  let disposed = false;
171
+ let markReady;
172
+ const ready = new Promise((res) => { markReady = res; });
160
173
  void (async () => {
161
- if (session.identity.isAdmin && !opts?.noRegister)
162
- await register(session).catch(() => { });
163
174
  const resolved = await resolveDialogue(session).catch(() => []);
164
- if (disposed)
175
+ if (disposed) {
176
+ markReady();
165
177
  return;
178
+ }
166
179
  for (const r of resolved) {
180
+ resolvedText.set(r.id, r.text);
181
+ resolvedName.set(r.id, r.name);
167
182
  if (r.audioUrl) {
168
183
  const a = new Audio(r.audioUrl);
169
184
  a.preload = "auto";
170
185
  pool.set(r.id, a);
171
186
  }
172
187
  }
188
+ markReady();
173
189
  })();
174
190
  // The card is our TEXT surface only (audio:false) — the controller owns audio so it can time it.
175
191
  const cardOpts = {
@@ -184,11 +200,20 @@ export function defineConversation(id, spec) {
184
200
  card = mountDialogueCard(host, cardOpts);
185
201
  return card;
186
202
  };
203
+ // The `"auto"` mode's surface: a boxless, self-dismissing subtitle (position + name from opts.subtitle).
204
+ let subtitle = null;
205
+ const ensureSubtitle = () => {
206
+ if (!host)
207
+ return null;
208
+ if (!subtitle)
209
+ subtitle = mountSubtitle(host, opts?.subtitle ?? {});
210
+ return subtitle;
211
+ };
187
212
  let unlocked = false;
188
213
  let current = null; // the line the caller is currently awaiting (the "gate")
189
214
  let pending = null; // a line whose autoplay was blocked, awaiting unlock()
190
215
  const detached = new Set(); // lines that gated early (waitMs) and keep playing out
191
- let cardOwner = null; // the single card shows at most one beat's text at a time
216
+ let surfaceOwner = null; // at most one beat's text shows on screen at a time (card OR subtitle)
192
217
  /** Resolve the gate promise exactly once (does NOT stop the presentation). */
193
218
  const settle = (b, done) => {
194
219
  if (b.settled)
@@ -210,9 +235,12 @@ export function defineConversation(id, spec) {
210
235
  }
211
236
  catch { /* ignore */ }
212
237
  }
213
- if (b.usedCard && cardOwner === b) {
214
- card?.close();
215
- cardOwner = null;
238
+ if (b.surface && surfaceOwner === b) {
239
+ if (b.surface === "card")
240
+ card?.close();
241
+ else
242
+ subtitle?.close();
243
+ surfaceOwner = null;
216
244
  }
217
245
  if (current === b)
218
246
  current = null;
@@ -257,15 +285,19 @@ export function defineConversation(id, spec) {
257
285
  const play = (lineId, pOpts) => {
258
286
  if (current)
259
287
  finish(current, "interrupted"); // supersede the gating line (detached lines keep going)
260
- const line = linesById.get(lineId); // text/speaker are sync (code-defined)
288
+ const line = codeById.get(lineId); // speaker + code-text fallback (sync)
289
+ const shownText = resolvedText.get(lineId) ?? line?.text ?? ""; // edited text once resolved, else code
290
+ const speaker = resolvedName.get(lineId) ?? line?.characterId ?? ""; // display label once resolved, else id
261
291
  const want = pOpts?.display ?? defaultDisplay;
262
- const dlgCard = want !== "none" ? ensureCard() : null;
263
- // A card mode with no host degrades to audio-only "none".
264
- const mode = want !== "none" && !dlgCard ? "none" : want;
292
+ // Resolve the on-screen surface for this mode: "card" dialogue card, "auto" → boxless subtitle.
293
+ // A visual mode with no host degrades to audio-only "none".
294
+ const surface = want === "card" ? ensureCard() : want === "auto" ? ensureSubtitle() : null;
295
+ const surfaceKind = want === "card" && surface ? "card" : want === "auto" && surface ? "subtitle" : null;
296
+ const mode = want !== "none" && !surface ? "none" : want;
265
297
  const factor = pOpts?.holdFactor ?? defaultFactor;
266
298
  const audio = pool.get(lineId) ?? null; // background-resolved; null until the clip lands / if silent
267
299
  return new Promise((resolve) => {
268
- const b = { resolve, settled: false, timer: null, gateTimer: null, audio, offs: [], usedCard: mode !== "none", pausedByVis: false };
300
+ const b = { resolve, settled: false, timer: null, gateTimer: null, audio, offs: [], surface: surfaceKind, pausedByVis: false };
269
301
  current = b;
270
302
  if (pOpts?.signal) {
271
303
  if (pOpts.signal.aborted) {
@@ -277,10 +309,17 @@ export function defineConversation(id, spec) {
277
309
  signal.addEventListener("abort", onAbort, { once: true });
278
310
  b.offs.push(() => signal.removeEventListener("abort", onAbort));
279
311
  }
280
- // Taking the card closes whatever it was showing (incl. a detached subtitle) — one text at a time.
281
- if (dlgCard && mode !== "none") {
282
- cardOwner = b;
283
- dlgCard.open(line?.characterId ?? "", [{ text: line?.text ?? "" }]);
312
+ // Taking a surface closes whatever the OTHER surface was showing (incl. a detached line) — one
313
+ // text on screen at a time, across both the card and the subtitle.
314
+ if (surfaceKind === "card") {
315
+ subtitle?.close();
316
+ surfaceOwner = b;
317
+ surface.open(speaker, [{ text: shownText }]);
318
+ }
319
+ else if (surfaceKind === "subtitle") {
320
+ card?.close();
321
+ surfaceOwner = b;
322
+ surface.open(speaker, shownText);
284
323
  }
285
324
  const startAudio = () => {
286
325
  if (!audio)
@@ -337,19 +376,21 @@ export function defineConversation(id, spec) {
337
376
  const b = current;
338
377
  if (!b)
339
378
  return false;
340
- if (b.usedCard && card && cardOwner === b) {
379
+ if (b.surface === "card" && card && surfaceOwner === b) {
341
380
  const more = card.advance(); // first press finishes the typewriter, next closes the single-line card
342
381
  if (more)
343
382
  return true;
344
383
  finish(b, "ended");
345
384
  return false;
346
385
  }
347
- finish(b, "skipped"); // auto/none → A skips early
386
+ finish(b, "skipped"); // auto (subtitle) / none → A skips early
348
387
  return false;
349
388
  };
350
389
  return {
351
390
  get card() { return card; },
352
- text: (lineId) => linesById.get(lineId)?.text ?? "",
391
+ get subtitle() { return subtitle; },
392
+ ready,
393
+ text: (lineId) => resolvedText.get(lineId) ?? codeById.get(lineId)?.text ?? "",
353
394
  play,
354
395
  advance,
355
396
  stop: () => { if (current)
@@ -371,6 +412,8 @@ export function defineConversation(id, spec) {
371
412
  document.removeEventListener("visibilitychange", onVisibility);
372
413
  card?.dispose();
373
414
  card = null;
415
+ subtitle?.dispose();
416
+ subtitle = null;
374
417
  for (const a of pool.values()) {
375
418
  a.pause();
376
419
  a.removeAttribute("src");
@@ -385,21 +428,56 @@ export function defineConversation(id, spec) {
385
428
  return;
386
429
  await session.deleteContent(CONVERSATIONS_COLLECTION, id).catch(() => { });
387
430
  };
388
- const def = { id, lines, register, delete: del, open, player, audio };
431
+ const def = { id, varName: opts?.varName, lines, register, delete: del, open, player, audio };
389
432
  REGISTRY.set(id, def); // track for syncConversations() (re-defining an id replaces it)
390
433
  return def;
391
434
  }
392
435
  /** Every conversation defined via {@link defineConversation} this session, for {@link syncConversations}. */
393
436
  const REGISTRY = new Map();
437
+ /**
438
+ * "Eject to code": render a stored (editor-edited) {@link Conversation} back into the TypeScript
439
+ * `defineConversation` call you paste into your game's conversations module — the one deliberate
440
+ * gamedata → code snapshot that refreshes the code fallback text/style/speed for version control and
441
+ * fresh-environment seeding. It emits ONLY the authored spec (id/speaker/text/style/speed); generated
442
+ * audio stays in gamedata. `speaker` is the line's current `characterId`; `varName` names the export.
443
+ *
444
+ * The runtime already reads the edited text from gamedata (see {@link VoicePlayer.text}); ejecting is how
445
+ * you commit that text to git so a diff/review/rollback exists and a brand-new deploy ships good defaults.
446
+ */
447
+ export function ejectConversationSource(conv, opts) {
448
+ const q = (s) => JSON.stringify(s); // valid TS double-quoted string w/ escaping
449
+ const rows = conv.lines.map((l) => {
450
+ const parts = [`id: ${q(l.id)}`, `speaker: ${q(l.characterId)}`, `text: ${q(l.text)}`];
451
+ if (l.style?.trim())
452
+ parts.push(`style: ${q(l.style.trim())}`);
453
+ if (l.speed != null)
454
+ parts.push(`speed: ${l.speed}`);
455
+ return ` { ${parts.join(", ")} },`;
456
+ });
457
+ const varName = opts?.varName ?? camelId(conv.id);
458
+ // Re-emit the `{ varName }` option when one was given so the ejected call is a byte-for-byte drop-in
459
+ // over the hand-written `defineConversation(..., { varName })` — and so the next eject round-trips it.
460
+ const tail = opts?.varName ? `, { varName: ${q(opts.varName)} }` : "";
461
+ return (`export const ${varName} = defineConversation(${q(conv.id)}, [\n` +
462
+ `${rows.join("\n")}\n` +
463
+ `]${tail});\n`);
464
+ }
465
+ /** `"vivax-intro-farm"` → `"vivaxIntroFarm"` — a sensible default export name for {@link ejectConversationSource}. */
466
+ function camelId(id) {
467
+ const camel = id.replace(/[^a-zA-Z0-9]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ""));
468
+ return /^[a-zA-Z_]/.test(camel) ? camel : `conv_${camel}`;
469
+ }
394
470
  /** All conversations declared in code so far. */
395
471
  export function listDefinedConversations() {
396
472
  return [...REGISTRY.values()];
397
473
  }
398
474
  /**
399
- * Reconcile ALL code-declared conversations to the game's `shared` gamedata in one call — for a
400
- * dev-only "Sync" button. Upserts every {@link defineConversation} (preserving generated audio for
401
- * unchanged lines); with `prune`, deletes stored conversations whose id no longer exists in code.
402
- * Admin only (no-op otherwise). Returns the ids pushed and pruned.
475
+ * Additively seed ALL code-declared conversations into the game's `shared` gamedata in one call — for the
476
+ * editor's "Seed from code" button. Runs each {@link ConversationDef.register} (create missing lines from
477
+ * the code fallback; never overwrite editor-edited content); with `prune`, deletes stored code-origin
478
+ * conversations whose id no longer exists in code. Admin only (no-op otherwise). Returns the ids seeded
479
+ * (`pushed`) and pruned. This is the code → gamedata direction; for gamedata → code use
480
+ * {@link ejectConversationSource}.
403
481
  */
404
482
  export async function syncConversations(session, opts) {
405
483
  if (!session.identity.isAdmin)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type VoiceSampleLang } from "./voices.js";
2
+ /** Speaking rate every sample is generated at (matches the platform default so it sounds in-game). */
3
+ export declare const VOICE_SAMPLE_SPEED = 1.2;
4
+ /** Stable manifest/generation key for a single (voice, language, emotion) sample. */
5
+ export declare function voiceSampleKey(voice: string, lang: VoiceSampleLang, emotion: string): string;
6
+ /** One unit of work: the exact inputs to synthesise a single sample. */
7
+ export interface VoiceSampleJob {
8
+ key: string;
9
+ voice: string;
10
+ lang: VoiceSampleLang;
11
+ emotion: string;
12
+ /** The spoken line (French or English) for this emotion. */
13
+ text: string;
14
+ /** English delivery direction fed to the TTS as `prompt`. */
15
+ style: string;
16
+ speed: number;
17
+ }
18
+ /**
19
+ * Every sample the catalogue covers: `voices × langs × emotions` (currently 30 × 2 × 3 = 180).
20
+ * Drives both the gallery grid and the "Generate all" run — the single source of what "complete" means.
21
+ */
22
+ export declare function voiceSampleJobs(): VoiceSampleJob[];
23
+ /** A generated clip: the public R2 URL and its content hash (for dedup/debugging). */
24
+ export interface VoiceSampleClip {
25
+ url: string;
26
+ hash: string;
27
+ }
28
+ export interface VoiceSampleManifest {
29
+ /** Epoch ms of the last full generation run, or `null` if never generated. */
30
+ generatedAt: number | null;
31
+ /** The speed the clips were generated at (for reference/regeneration). */
32
+ speed: number;
33
+ /** {@link voiceSampleKey} → clip. A missing key means "not generated yet". */
34
+ clips: Record<string, VoiceSampleClip>;
35
+ }
36
+ /**
37
+ * The committed catalogue. Populated by the voice-gallery "Generate all" run — until then `clips` is
38
+ * empty and the gallery renders every cell as "not generated". Do not hand-edit URLs; regenerate.
39
+ */
40
+ export declare const VOICE_SAMPLES: VoiceSampleManifest;
41
+ /** The whole manifest (e.g. to render a picker). */
42
+ export declare function getVoiceSamples(): VoiceSampleManifest;
43
+ /** The clip for one (voice, language, emotion), or `undefined` if it hasn't been generated. */
44
+ export declare function getVoiceSample(voice: string, lang: VoiceSampleLang, emotion: string): VoiceSampleClip | undefined;
45
+ //# sourceMappingURL=voice-samples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-samples.d.ts","sourceRoot":"","sources":["../../src/conversations/voice-samples.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,MAA0B,CAAC;AAE1D,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5F;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,cAAc,EAAE,CAoBlD;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,mBAI3B,CAAC;AAEF,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,mBAAmB,CAErD;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,GACd,eAAe,GAAG,SAAS,CAE7B"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * The "generate once, play anywhere" voice-sample catalogue.
3
+ *
4
+ * Every prebuilt voice ({@link GEMINI_VOICES}) is sampled in each language ({@link VOICE_SAMPLE_LANGS})
5
+ * with each emotion ({@link VOICE_SAMPLE_EMOTIONS}) — one short line per emotion. The clips are
6
+ * generated ONCE by the voice-gallery ("Generate all") and content-addressed in R2, so any consumer
7
+ * plays them with a plain `<audio>`: no TTS key, no runtime generation, no per-game duplication.
8
+ *
9
+ * The URLs live in {@link VOICE_SAMPLES} below, committed to the SDK. To (re)populate them, open the
10
+ * voice gallery as an admin, click "Generate all", then paste its exported block over `VOICE_SAMPLES`.
11
+ */
12
+ import { DEFAULT_VOICEOVER_SPEED } from "../protocol/conversations.js";
13
+ import { GEMINI_VOICES, VOICE_SAMPLE_EMOTIONS, VOICE_SAMPLE_LANGS, VOICE_SAMPLE_TEXT, } from "./voices.js";
14
+ /** Speaking rate every sample is generated at (matches the platform default so it sounds in-game). */
15
+ export const VOICE_SAMPLE_SPEED = DEFAULT_VOICEOVER_SPEED;
16
+ /** Stable manifest/generation key for a single (voice, language, emotion) sample. */
17
+ export function voiceSampleKey(voice, lang, emotion) {
18
+ return `${voice}|${lang}|${emotion}`;
19
+ }
20
+ /**
21
+ * Every sample the catalogue covers: `voices × langs × emotions` (currently 30 × 2 × 3 = 180).
22
+ * Drives both the gallery grid and the "Generate all" run — the single source of what "complete" means.
23
+ */
24
+ export function voiceSampleJobs() {
25
+ const jobs = [];
26
+ for (const voice of GEMINI_VOICES) {
27
+ for (const lang of VOICE_SAMPLE_LANGS) {
28
+ for (const emotion of VOICE_SAMPLE_EMOTIONS) {
29
+ const line = VOICE_SAMPLE_TEXT[emotion.id];
30
+ if (!line)
31
+ continue;
32
+ jobs.push({
33
+ key: voiceSampleKey(voice.id, lang, emotion.id),
34
+ voice: voice.id,
35
+ lang,
36
+ emotion: emotion.id,
37
+ text: line[lang],
38
+ style: emotion.style,
39
+ speed: VOICE_SAMPLE_SPEED,
40
+ });
41
+ }
42
+ }
43
+ }
44
+ return jobs;
45
+ }
46
+ /**
47
+ * The committed catalogue. Populated by the voice-gallery "Generate all" run — until then `clips` is
48
+ * empty and the gallery renders every cell as "not generated". Do not hand-edit URLs; regenerate.
49
+ */
50
+ export const VOICE_SAMPLES = {
51
+ generatedAt: null,
52
+ speed: VOICE_SAMPLE_SPEED,
53
+ clips: {},
54
+ };
55
+ /** The whole manifest (e.g. to render a picker). */
56
+ export function getVoiceSamples() {
57
+ return VOICE_SAMPLES;
58
+ }
59
+ /** The clip for one (voice, language, emotion), or `undefined` if it hasn't been generated. */
60
+ export function getVoiceSample(voice, lang, emotion) {
61
+ return VOICE_SAMPLES.clips[voiceSampleKey(voice, lang, emotion)];
62
+ }
63
+ //# sourceMappingURL=voice-samples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-samples.js","sourceRoot":"","sources":["../../src/conversations/voice-samples.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAErB,sGAAsG;AACtG,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAE1D,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,IAAqB,EAAE,OAAe;IAClF,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;AACvC,CAAC;AAeD;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,IAAI,CAAC,IAAI,CAAC;oBACR,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC/C,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,IAAI;oBACJ,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,kBAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAiBD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,oDAAoD;AACpD,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,IAAqB,EACrB,OAAe;IAEf,OAAO,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -1,16 +1,44 @@
1
1
  /**
2
- * The prebuilt Gemini TTS voices, for character/voice pickers (Character Studio, the VO editor).
3
- * The names are Gemini's own; `label` adds the documented timbre hint. Language is auto-detected at
4
- * synthesis (we always feed French text), so a voice is just a timbre, not a locale.
2
+ * The prebuilt Gemini TTS voices, for character/voice pickers (Character Studio, the VO editor)
3
+ * and the voice-sample gallery. The names are Gemini's own; `label` adds the documented timbre
4
+ * hint, `gender` is Google's published designation, and `persona` is a short pick-helper blurb.
5
+ * Language is chosen at synthesis (French or English), so a voice is a timbre, not a locale.
5
6
  */
6
7
  export interface GeminiVoice {
7
8
  /** The exact voice name passed to the TTS API (also stored on {@link CatalogCharacter.voice}). */
8
9
  id: string;
9
- /** Human hint for pickers. */
10
+ /** Human hint for pickers, e.g. "Kore · firm". */
10
11
  label: string;
12
+ /** Google's published voice gender;helps a consumer cast the right character. */
13
+ gender: "male" | "female";
14
+ /** Short evocative blurb (timbre + suggested casting) shown in the gallery. */
15
+ persona: string;
11
16
  }
12
- /** The 30 prebuilt voices (Gemini 2.5/3.1 flash TTS). */
17
+ /**
18
+ * The 30 prebuilt voices (Gemini 2.5/3.1 flash TTS). `gender` is from Google's Chirp 3: HD /
19
+ * Gemini-TTS voice roster (docs.cloud.google.com/text-to-speech/docs/chirp3-hd), not inferred.
20
+ */
13
21
  export declare const GEMINI_VOICES: readonly GeminiVoice[];
14
22
  /** Default voice when a character has none set. */
15
23
  export declare const DEFAULT_VOICE = "Charon";
24
+ /** Languages the sample gallery renders a column for. Mirrors the widened `VoiceoverLang`. */
25
+ export type VoiceSampleLang = "fr" | "en";
26
+ export declare const VOICE_SAMPLE_LANGS: readonly VoiceSampleLang[];
27
+ /**
28
+ * The emotion palette every voice is sampled with. `style` is the English direction fed to Gemini
29
+ * as the synthesis `prompt`; `label` is what the gallery shows.
30
+ */
31
+ export interface VoiceSampleEmotion {
32
+ id: string;
33
+ label: string;
34
+ /** English delivery direction → Gemini `input.prompt`. */
35
+ style: string;
36
+ }
37
+ export declare const VOICE_SAMPLE_EMOTIONS: readonly VoiceSampleEmotion[];
38
+ /**
39
+ * The sentence each emotion is spoken with, per language. One line per emotion (the words carry the
40
+ * emotion) so a listener hears each voice's take on the same brief. French lines avoid first-person
41
+ * gendered agreement so they read correctly for both male and female voices.
42
+ */
43
+ export declare const VOICE_SAMPLE_TEXT: Record<string, Record<VoiceSampleLang, string>>;
16
44
  //# sourceMappingURL=voices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/conversations/voices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,kGAAkG;IAClG,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yDAAyD;AACzD,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA+B/C,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,aAAa,WAAW,CAAC"}
1
+ {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/conversations/voices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kGAAkG;IAClG,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA+B/C,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAAiB,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAI9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAa7E,CAAC"}