create-aura3d 1.3.3 → 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.
Files changed (166) hide show
  1. package/README.md +113 -0
  2. package/dist/cli.js +10 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/showcase-spec-artifacts.d.ts +105 -0
  9. package/dist/showcase-spec-artifacts.d.ts.map +1 -0
  10. package/dist/showcase-spec-artifacts.js +143 -0
  11. package/dist/showcase-spec-artifacts.js.map +1 -0
  12. package/dist/showcase-spec-category-plan.d.ts +15 -0
  13. package/dist/showcase-spec-category-plan.d.ts.map +1 -0
  14. package/dist/showcase-spec-category-plan.js +45 -0
  15. package/dist/showcase-spec-category-plan.js.map +1 -0
  16. package/dist/showcase-spec-compiler.d.ts +5 -0
  17. package/dist/showcase-spec-compiler.d.ts.map +1 -0
  18. package/dist/showcase-spec-compiler.js +240 -0
  19. package/dist/showcase-spec-compiler.js.map +1 -0
  20. package/dist/showcase-spec-evidence.d.ts +7 -0
  21. package/dist/showcase-spec-evidence.d.ts.map +1 -0
  22. package/dist/showcase-spec-evidence.js +881 -0
  23. package/dist/showcase-spec-evidence.js.map +1 -0
  24. package/dist/showcase-spec-game-geometry-extractor.d.ts +21 -0
  25. package/dist/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
  26. package/dist/showcase-spec-game-geometry-extractor.js +725 -0
  27. package/dist/showcase-spec-game-geometry-extractor.js.map +1 -0
  28. package/dist/showcase-spec-game-replacement-evidence.d.ts +14 -0
  29. package/dist/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
  30. package/dist/showcase-spec-game-replacement-evidence.js +219 -0
  31. package/dist/showcase-spec-game-replacement-evidence.js.map +1 -0
  32. package/dist/showcase-spec-game-template-evidence.d.ts +72 -0
  33. package/dist/showcase-spec-game-template-evidence.d.ts.map +1 -0
  34. package/dist/showcase-spec-game-template-evidence.js +435 -0
  35. package/dist/showcase-spec-game-template-evidence.js.map +1 -0
  36. package/dist/showcase-spec-gameplay-evidence.d.ts +3 -0
  37. package/dist/showcase-spec-gameplay-evidence.d.ts.map +1 -0
  38. package/dist/showcase-spec-gameplay-evidence.js +108 -0
  39. package/dist/showcase-spec-gameplay-evidence.js.map +1 -0
  40. package/dist/showcase-spec-parser.d.ts +3 -0
  41. package/dist/showcase-spec-parser.d.ts.map +1 -0
  42. package/dist/showcase-spec-parser.js +690 -0
  43. package/dist/showcase-spec-parser.js.map +1 -0
  44. package/dist/showcase-spec-platformer-artifacts.d.ts +3 -0
  45. package/dist/showcase-spec-platformer-artifacts.d.ts.map +1 -0
  46. package/dist/showcase-spec-platformer-artifacts.js +274 -0
  47. package/dist/showcase-spec-platformer-artifacts.js.map +1 -0
  48. package/dist/showcase-spec-racing-artifacts.d.ts +3 -0
  49. package/dist/showcase-spec-racing-artifacts.d.ts.map +1 -0
  50. package/dist/showcase-spec-racing-artifacts.js +273 -0
  51. package/dist/showcase-spec-racing-artifacts.js.map +1 -0
  52. package/dist/showcase-spec-replacement-apply.d.ts +10 -0
  53. package/dist/showcase-spec-replacement-apply.d.ts.map +1 -0
  54. package/dist/showcase-spec-replacement-apply.js +166 -0
  55. package/dist/showcase-spec-replacement-apply.js.map +1 -0
  56. package/dist/showcase-spec-replacement-candidates.d.ts +16 -0
  57. package/dist/showcase-spec-replacement-candidates.d.ts.map +1 -0
  58. package/dist/showcase-spec-replacement-candidates.js +244 -0
  59. package/dist/showcase-spec-replacement-candidates.js.map +1 -0
  60. package/dist/showcase-spec-replacement-game-geometry.d.ts +4 -0
  61. package/dist/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
  62. package/dist/showcase-spec-replacement-game-geometry.js +175 -0
  63. package/dist/showcase-spec-replacement-game-geometry.js.map +1 -0
  64. package/dist/showcase-spec-replacement-manifest.d.ts +41 -0
  65. package/dist/showcase-spec-replacement-manifest.d.ts.map +1 -0
  66. package/dist/showcase-spec-replacement-manifest.js +62 -0
  67. package/dist/showcase-spec-replacement-manifest.js.map +1 -0
  68. package/dist/showcase-spec-replacement-values.d.ts +9 -0
  69. package/dist/showcase-spec-replacement-values.d.ts.map +1 -0
  70. package/dist/showcase-spec-replacement-values.js +41 -0
  71. package/dist/showcase-spec-replacement-values.js.map +1 -0
  72. package/dist/showcase-spec-replacement.d.ts +13 -0
  73. package/dist/showcase-spec-replacement.d.ts.map +1 -0
  74. package/dist/showcase-spec-replacement.js +144 -0
  75. package/dist/showcase-spec-replacement.js.map +1 -0
  76. package/dist/showcase-spec-types.d.ts +319 -0
  77. package/dist/showcase-spec-types.d.ts.map +1 -0
  78. package/dist/showcase-spec-types.js +2 -0
  79. package/dist/showcase-spec-types.js.map +1 -0
  80. package/package.json +45 -11
  81. package/templates/animation-channel/package.json +1 -1
  82. package/templates/animation-studio/package.json +5 -5
  83. package/templates/animation-studio/scripts/animation-scene.ts +1 -1
  84. package/templates/animation-studio/scripts/author-office-scene.ts +1 -1
  85. package/templates/animation-studio/scripts/build-characters.ts +1 -1
  86. package/templates/animation-studio/src/director/director-heuristics.ts +2 -2
  87. package/templates/animation-studio/src/director/{prompt-to-scene.ts → prompt-scene.ts} +1 -1
  88. package/templates/character-controller/package.json +3 -3
  89. package/templates/cinematic-scene/package.json +1 -1
  90. package/templates/cinematic-scene/tests/screenshot.spec.ts +2 -4
  91. package/templates/episode-builder/package.json +1 -1
  92. package/templates/falling-blocks-starter/README.md +18 -0
  93. package/templates/falling-blocks-starter/index.html +23 -0
  94. package/templates/falling-blocks-starter/package.json +21 -0
  95. package/templates/falling-blocks-starter/playwright.config.ts +12 -0
  96. package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.679d52fe.glb +0 -0
  97. package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.thumb.svg +1 -0
  98. package/templates/falling-blocks-starter/src/aura-assets.ts +20 -0
  99. package/templates/falling-blocks-starter/src/main.ts +358 -0
  100. package/templates/falling-blocks-starter/tests/playable.spec.ts +85 -0
  101. package/templates/falling-blocks-starter/tests/route-health.spec.ts +34 -0
  102. package/templates/falling-blocks-starter/tsconfig.json +13 -0
  103. package/templates/fighting-game/package.json +1 -1
  104. package/templates/mini-game/README.md +13 -0
  105. package/templates/mini-game/index.html +1 -1
  106. package/templates/mini-game/package.json +2 -2
  107. package/templates/mini-game/src/main.ts +251 -21
  108. package/templates/mini-game/tests/playable.spec.ts +49 -0
  109. package/templates/mini-game/tests/screenshot.spec.ts +37 -32
  110. package/templates/product-viewer/package.json +1 -1
  111. package/templates/product-viewer/tests/screenshot.spec.ts +3 -5
  112. package/templates/prompt-animation-channel/package.json +1 -1
  113. package/templates/racing-starter/README.md +27 -0
  114. package/templates/racing-starter/index.html +23 -0
  115. package/templates/racing-starter/package.json +21 -0
  116. package/templates/racing-starter/playwright.config.ts +12 -0
  117. package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.1c69283f.glb +0 -0
  118. package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.thumb.svg +1 -0
  119. package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.5cbb912e.glb +0 -0
  120. package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.thumb.svg +1 -0
  121. package/templates/racing-starter/src/aura-assets.ts +36 -0
  122. package/templates/racing-starter/src/main.ts +280 -0
  123. package/templates/racing-starter/tests/playable.spec.ts +93 -0
  124. package/templates/racing-starter/tests/route-health.spec.ts +40 -0
  125. package/templates/racing-starter/tsconfig.json +13 -0
  126. package/templates/three-compat-architecture-interior/package.json +1 -1
  127. package/templates/three-compat-asset-inspector/package.json +1 -1
  128. package/templates/three-compat-character-viewer/package.json +1 -1
  129. package/templates/three-compat-custom-threejs-migration/package.json +1 -1
  130. package/templates/three-compat-large-scene/package.json +1 -1
  131. package/templates/three-compat-material-authoring/package.json +1 -1
  132. package/templates/three-compat-postprocess-scene/package.json +1 -1
  133. package/templates/three-compat-premium-product-viewer/package.json +1 -1
  134. package/templates/animation-channel/public/aura-assets/moon-garden-feature-frame.png +0 -0
  135. package/templates/animation-channel/test-results/.last-run.json +0 -4
  136. package/templates/animation-channel/tests/reports/prompt-animation/cartoon-sample-episode.png +0 -0
  137. package/templates/animation-studio/dist/episodes/prompt-to-scene-proof/two-robots-fixing-a-car.document.json +0 -680
  138. package/templates/animation-studio/dist/episodes/scene/episode-3d.webm +0 -0
  139. package/templates/animation-studio/dist/episodes/scene/frames/action.png +0 -0
  140. package/templates/animation-studio/dist/episodes/scene/frames/dialogue.png +0 -0
  141. package/templates/animation-studio/dist/episodes/scene/frames/final.png +0 -0
  142. package/templates/animation-studio/dist/episodes/scene/frames/first.png +0 -0
  143. package/templates/animation-studio/dist/episodes/scene/frames/mouth-closed.png +0 -0
  144. package/templates/animation-studio/dist/episodes/scene/frames/mouth-open.png +0 -0
  145. package/templates/animation-studio/dist/episodes/scene/render-live-summary.json +0 -9763
  146. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/broken.png +0 -0
  147. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/chefs.png +0 -0
  148. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/customer.png +0 -0
  149. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/friend-1.png +0 -0
  150. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/friend-2.png +0 -0
  151. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-1.png +0 -0
  152. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-2.png +0 -0
  153. package/templates/animation-studio/dist/generated/second-scene.document.json +0 -1210
  154. package/templates/animation-studio/dist/generated/studio-edited.document.json +0 -1196
  155. package/templates/animation-studio/dist/scene/inshader-accept.document.json +0 -1
  156. package/templates/animation-studio/dist/scene/inshader-test.document.json +0 -1
  157. package/templates/animation-studio/dist/scene/integ.document.json +0 -1
  158. package/templates/animation-studio/dist/scene/working.document.json +0 -673
  159. package/templates/animation-studio/dist/scene/working.history.json +0 -1
  160. package/templates/animation-studio/node_modules.publish-aside/.vite/deps/_metadata.json +0 -8
  161. package/templates/animation-studio/node_modules.publish-aside/.vite/deps/package.json +0 -3
  162. package/templates/animation-studio/package-lock.json +0 -3503
  163. package/templates/animation-studio/studio/dist/assets/index-C7f8tHfi.css +0 -1
  164. package/templates/animation-studio/studio/dist/assets/index-CLo3GXyN.js +0 -43
  165. package/templates/animation-studio/studio/dist/index.html +0 -19
  166. package/templates/animation-studio/tests/reports/animation-studio/hifi-cast-validation.json +0 -938
@@ -0,0 +1,435 @@
1
+ import { extractPlatformerPlayableSurfaceMapFromAsset, extractRacingTrackTopologyFromAsset } from "./showcase-spec-game-geometry-extractor.js";
2
+ export function applyGeneratedGameTemplateEvidence(spec, options = {}) {
3
+ if (spec.category === "game-racing" && spec.racing && !spec.racing.raceDesign.trackTopologyEvidence) {
4
+ const evidencePath = `game-template/${spec.routeId}-racing-track-topology.json`;
5
+ const racing = {
6
+ ...spec.racing,
7
+ raceDesign: {
8
+ ...spec.racing.raceDesign,
9
+ trackTopologyEvidence: evidencePath
10
+ }
11
+ };
12
+ const nextSpec = { ...spec, racing };
13
+ return {
14
+ spec: nextSpec,
15
+ artifacts: {
16
+ [evidencePath]: createRacingTrackTopologyEvidence(nextSpec, racing, options)
17
+ }
18
+ };
19
+ }
20
+ if (spec.category === "game-platformer" && spec.platformer && !spec.platformer.levelDesign.playableSurfaceEvidence) {
21
+ const evidencePath = `game-template/${spec.routeId}-platformer-playable-surfaces.json`;
22
+ const platformer = {
23
+ ...spec.platformer,
24
+ levelDesign: {
25
+ ...spec.platformer.levelDesign,
26
+ playableSurfaceEvidence: evidencePath
27
+ }
28
+ };
29
+ const nextSpec = { ...spec, platformer };
30
+ return {
31
+ spec: nextSpec,
32
+ artifacts: {
33
+ [evidencePath]: createPlatformerPlayableSurfaceEvidence(nextSpec, platformer, options)
34
+ }
35
+ };
36
+ }
37
+ return { spec, artifacts: {} };
38
+ }
39
+ export function createRacingTemplatePlan(racing, options = {}) {
40
+ const extracted = extractRacingTrackTopologyFromAsset(racing.trackAsset, {
41
+ projectDir: options.projectDir,
42
+ renderedProbePath: racing.raceDesign.trackTopology?.evidence.renderedProbe,
43
+ routeOverlayPath: racing.raceDesign.trackTopology?.evidence.routeOverlay
44
+ });
45
+ if (extracted.ok) {
46
+ const topology = extracted.value;
47
+ const points = topology.roadCenterline.map((point) => ({ x: point.x, y: point.z }));
48
+ const routeLength = topology.lapLengthMeters ?? measureRouteLength(points);
49
+ return {
50
+ width: topology.roadCenterline.find((point) => point.width !== undefined)?.width ?? 0.18,
51
+ points,
52
+ checkpoints: topology.checkpoints.map((checkpoint) => checkpoint.progress),
53
+ routeLength,
54
+ authoredLapSeconds: topology.estimatedLapSeconds,
55
+ topology,
56
+ extractionReasons: extracted.reasons,
57
+ extractionBlockers: []
58
+ };
59
+ }
60
+ if (racing.raceDesign.trackTopology) {
61
+ const topology = racing.raceDesign.trackTopology;
62
+ const points = topology.roadCenterline.map((point) => ({ x: point.x, y: point.z }));
63
+ const routeLength = topology.lapLengthMeters ?? measureRouteLength(points);
64
+ return {
65
+ width: topology.roadCenterline.find((point) => point.width !== undefined)?.width ?? 0.18,
66
+ points,
67
+ checkpoints: topology.checkpoints.map((checkpoint) => checkpoint.progress),
68
+ routeLength,
69
+ authoredLapSeconds: topology.estimatedLapSeconds,
70
+ topology,
71
+ extractionReasons: extracted.reasons,
72
+ extractionBlockers: extracted.blockers
73
+ };
74
+ }
75
+ const points = [
76
+ { x: -1.72, y: 0.76 },
77
+ { x: -1.28, y: 1.18 },
78
+ { x: -0.42, y: 1.08 },
79
+ { x: 0.14, y: 0.52 },
80
+ { x: 0.02, y: -0.12 },
81
+ { x: -0.72, y: -0.4 },
82
+ { x: -1.12, y: -0.02 },
83
+ { x: -0.68, y: 0.5 },
84
+ { x: 0.18, y: 0.36 },
85
+ { x: 0.92, y: 0.78 },
86
+ { x: 1.54, y: 0.42 },
87
+ { x: 1.32, y: -0.34 },
88
+ { x: 0.58, y: -0.74 },
89
+ { x: -0.26, y: -0.88 },
90
+ { x: -1.18, y: -0.56 },
91
+ { x: -1.74, y: 0.04 },
92
+ { x: -1.72, y: 0.76 }
93
+ ];
94
+ const routeLength = measureRouteLength(points);
95
+ const authoredLapSeconds = Math.max(racing.raceDesign.minLapSeconds, Math.round(routeLength / 0.11));
96
+ const fallbackTopology = {
97
+ assetId: racing.trackAsset,
98
+ assetHash: "sha256-0000000000000000000000000000000000000000000000000000000000000000",
99
+ source: "compiler-authored",
100
+ roadCenterline: points.map((point) => ({ x: point.x, z: point.y, width: 0.18 })),
101
+ checkpoints: createCheckpointProgresses(Math.max(6, racing.raceDesign.minCheckpoints)).map((progress) => ({ progress, width: 0.18 })),
102
+ lapLengthMeters: Number(routeLength.toFixed(3)),
103
+ estimatedLapSeconds: authoredLapSeconds,
104
+ confidence: 0.35,
105
+ modelAlignment: {
106
+ source: "compiler-authored",
107
+ modelBounds: { min: [-1, -0.05, -1], max: [1, 0.05, 1] },
108
+ modelPoint: [0, -0.05, 0],
109
+ gamePoint: { x: 0, z: 0 },
110
+ evidence: {
111
+ notes: "Diagnostic fallback alignment only; public racing output requires hash-bound mesh or overlay-validated model alignment."
112
+ }
113
+ },
114
+ evidence: {
115
+ sourceAsset: `assets.${racing.trackAsset}`,
116
+ notes: "Compiler-authored fallback route. This is retained for diagnostics only and is not sufficient for public racing release without hash-bound track topology."
117
+ }
118
+ };
119
+ return {
120
+ width: 0.18,
121
+ points,
122
+ checkpoints: createCheckpointProgresses(Math.max(6, racing.raceDesign.minCheckpoints)),
123
+ routeLength,
124
+ authoredLapSeconds,
125
+ topology: fallbackTopology,
126
+ extractionReasons: extracted.reasons,
127
+ extractionBlockers: extracted.blockers
128
+ };
129
+ }
130
+ export function createPlatformerTemplatePlan(spec, platformer, options = {}) {
131
+ const worldAsset = platformer.worldAssets[0] ?? "missing-world-asset";
132
+ const extracted = extractPlatformerPlayableSurfaceMapFromAsset(worldAsset, {
133
+ projectDir: options.projectDir,
134
+ renderedProbePath: platformer.levelDesign.playableSurfaceMap?.evidence.renderedProbe,
135
+ routeOverlayPath: platformer.levelDesign.playableSurfaceMap?.evidence.routeOverlay
136
+ });
137
+ if (extracted.ok) {
138
+ return platformerPlanFromSurfaceMap(spec, platformer, extracted.value, extracted.reasons, []);
139
+ }
140
+ if (platformer.levelDesign.playableSurfaceMap) {
141
+ const surfaceMap = platformer.levelDesign.playableSurfaceMap;
142
+ return platformerPlanFromSurfaceMap(spec, platformer, surfaceMap, extracted.reasons, extracted.blockers);
143
+ }
144
+ const platforms = [
145
+ { id: "start-plaza", x: -0.4, y: 0, width: 7.2, height: 0.34, worldAsset, evidenceRole: "playable-surface" },
146
+ { id: "lower-bridge", x: 6.4, y: 0.18, width: 6.4, height: 0.34, worldAsset, evidenceRole: "bridge" },
147
+ { id: "mid-run", x: 12.8, y: 0.42, width: 6.8, height: 0.34, worldAsset, evidenceRole: "playable-surface" },
148
+ { id: "hazard-gap", x: 19.6, y: 0.14, width: 5.8, height: 0.34, worldAsset, evidenceRole: "bridge" },
149
+ { id: "finish-ledges", x: 26.4, y: 0.36, width: 8.4, height: 0.34, worldAsset, evidenceRole: "finish-run" },
150
+ { id: "final-platform", x: 34.4, y: 0.2, width: 5.6, height: 0.34, worldAsset, evidenceRole: "finish-run" }
151
+ ];
152
+ const fallbackMap = {
153
+ assetId: worldAsset,
154
+ assetHash: "sha256-0000000000000000000000000000000000000000000000000000000000000000",
155
+ source: "compiler-authored",
156
+ surfaces: [
157
+ ...platforms.map((surface) => ({
158
+ id: surface.id,
159
+ x: Number((surface.x + surface.width / 2).toFixed(3)),
160
+ y: surface.y,
161
+ width: surface.width,
162
+ height: surface.height,
163
+ kind: surface.evidenceRole === "finish-run" ? "finish" : "platform"
164
+ })),
165
+ { id: "hazard-gap-01", x: 18.2, y: 0.52, width: 0.42, height: 0.24, kind: "hazard" },
166
+ { id: "checkpoint-mid-run", x: 16.6, y: 1, width: 1.1, height: 1.1, kind: "checkpoint" }
167
+ ],
168
+ levelLength: 37.2,
169
+ estimatedCompletionSeconds: 30,
170
+ characterScaleRatio: 0.42,
171
+ confidence: 0.35,
172
+ modelAlignment: {
173
+ source: "compiler-authored",
174
+ modelBounds: { min: [-1, -0.05, -1], max: [1, 0.05, 1] },
175
+ modelPoint: [0, -0.05, 0],
176
+ gamePoint: { x: 18.2, y: 0 },
177
+ evidence: {
178
+ notes: "Diagnostic fallback alignment only; public platformer output requires hash-bound mesh or overlay-validated model alignment."
179
+ }
180
+ },
181
+ evidence: {
182
+ sourceAsset: `assets.${worldAsset}`,
183
+ notes: "Compiler-authored fallback surfaces. This is retained for diagnostics only and is not sufficient for public platformer release without a hash-bound playable-surface map."
184
+ }
185
+ };
186
+ return {
187
+ id: `${spec.routeId}-authored-platformer-level`,
188
+ start: { x: 0, y: 0.34 },
189
+ finish: { x: 37.2, y: 0.54 },
190
+ moveSpeed: 1.05,
191
+ jumpVelocity: 7.4,
192
+ lowerBound: -1.4,
193
+ platforms,
194
+ collectibles: [
195
+ { id: "coin-01", x: 3.8, y: 1.0, value: 50 },
196
+ { id: "coin-02", x: 9.6, y: 1.2, value: 50 },
197
+ { id: "coin-03", x: 15.2, y: 1.42, value: 50 },
198
+ { id: "coin-04", x: 22.8, y: 1.12, value: 50 },
199
+ { id: "coin-05", x: 30.2, y: 1.32, value: 50 }
200
+ ],
201
+ hazards: [
202
+ { id: "drone-01", x: 18.2, y: 0.52, width: 0.42, height: 0.24, respawn: true },
203
+ { id: "drone-02", x: 27.4, y: 0.68, width: 0.42, height: 0.24, respawn: true }
204
+ ],
205
+ checkpoints: [
206
+ { id: "checkpoint-start-run", x: 5.4, y: 0.62, radius: 1.1 },
207
+ { id: "checkpoint-bridge", x: 10.4, y: 0.82, radius: 1.1 },
208
+ { id: "checkpoint-mid-run", x: 16.6, y: 1.0, radius: 1.1 },
209
+ { id: "checkpoint-hazard", x: 23.2, y: 0.8, radius: 1.1 },
210
+ { id: "checkpoint-final", x: 31.4, y: 0.94, radius: 1.1 },
211
+ { id: "checkpoint-finish", x: 36.4, y: 0.78, radius: 1.1 }
212
+ ],
213
+ playableSurfaceMap: fallbackMap,
214
+ extractionReasons: extracted.reasons,
215
+ extractionBlockers: extracted.blockers
216
+ };
217
+ }
218
+ function platformerPlanFromSurfaceMap(spec, platformer, playableSurfaceMap, extractionReasons, extractionBlockers) {
219
+ const playableSurfaces = playableSurfaceMap.surfaces.filter((surface) => surface.kind === "ground" || surface.kind === "platform" || surface.kind === "moving");
220
+ const platforms = playableSurfaces.map((surface) => ({
221
+ id: surface.id,
222
+ x: Number((surface.x - surface.width / 2).toFixed(3)),
223
+ y: surface.y,
224
+ width: surface.width,
225
+ height: surface.height,
226
+ worldAsset: playableSurfaceMap.assetId,
227
+ evidenceRole: surface.kind === "moving" ? "bridge" : "playable-surface"
228
+ }));
229
+ const checkpointSurfaces = playableSurfaceMap.surfaces.filter((surface) => surface.kind === "checkpoint");
230
+ const hazardSurfaces = playableSurfaceMap.surfaces.filter((surface) => surface.kind === "hazard");
231
+ const ground = playableSurfaces.find((surface) => surface.kind === "ground") ?? playableSurfaces[0];
232
+ const finishSurface = playableSurfaceMap.surfaces.find((surface) => surface.kind === "finish") ?? playableSurfaces[playableSurfaces.length - 1];
233
+ const start = ground
234
+ ? { x: Number((ground.x - ground.width / 2 + 0.8).toFixed(3)), y: Number((ground.y + ground.height + 0.02).toFixed(3)) }
235
+ : { x: 0, y: 0.34 };
236
+ const finish = finishSurface
237
+ ? { x: Number((finishSurface.x + finishSurface.width / 2).toFixed(3)), y: Number((finishSurface.y + finishSurface.height + 0.02).toFixed(3)) }
238
+ : { x: playableSurfaceMap.levelLength, y: 0.54 };
239
+ return {
240
+ id: `${spec.routeId}-asset-bound-platformer-level`,
241
+ start,
242
+ finish,
243
+ moveSpeed: Number((playableSurfaceMap.levelLength / playableSurfaceMap.estimatedCompletionSeconds).toFixed(3)),
244
+ jumpVelocity: 7.4,
245
+ lowerBound: -1.4,
246
+ platforms,
247
+ collectibles: [
248
+ { id: "coin-01", x: Number((start.x + 3.2).toFixed(3)), y: Number((start.y + 0.7).toFixed(3)), value: 50 },
249
+ { id: "coin-02", x: Number((start.x + 8.2).toFixed(3)), y: Number((start.y + 1.0).toFixed(3)), value: 50 },
250
+ { id: "coin-03", x: Number((start.x + 14.8).toFixed(3)), y: Number((start.y + 1.2).toFixed(3)), value: 50 },
251
+ { id: "coin-04", x: Number((Math.max(start.x + 20, finish.x - 8)).toFixed(3)), y: Number((finish.y + 0.8).toFixed(3)), value: 50 },
252
+ { id: "coin-05", x: Number((Math.max(start.x + 24, finish.x - 3.2)).toFixed(3)), y: Number((finish.y + 1.0).toFixed(3)), value: 50 }
253
+ ],
254
+ hazards: hazardSurfaces.map((surface) => ({
255
+ id: surface.id,
256
+ x: Number((surface.x - surface.width / 2).toFixed(3)),
257
+ y: surface.y,
258
+ width: surface.width,
259
+ height: surface.height,
260
+ respawn: true
261
+ })),
262
+ checkpoints: checkpointSurfaces.map((surface) => ({
263
+ id: surface.id,
264
+ x: surface.x,
265
+ y: surface.y,
266
+ radius: Math.max(0.9, surface.width / 2)
267
+ })),
268
+ playableSurfaceMap,
269
+ extractionReasons,
270
+ extractionBlockers
271
+ };
272
+ }
273
+ function createRacingTrackTopologyEvidence(spec, racing, options) {
274
+ const plan = createRacingTemplatePlan(racing, options);
275
+ const releaseSafeTopology = isReleaseSafeRacingTopology(racing.raceDesign.visibleTrackTopology);
276
+ const failures = [
277
+ ...(releaseSafeTopology ? [] : ["missing-release-safe-track-topology"]),
278
+ ...plan.extractionBlockers,
279
+ ...(isOverlayValidatedGeometrySource(plan.topology.source) ? [] : ["missing-overlay-validated-track-topology"]),
280
+ ...(plan.topology.source !== "asset-mesh-extracted" && !hasRouteOverlayEvidence(plan.topology.evidence.routeOverlay)
281
+ ? ["missing-track-topology-overlay-evidence"]
282
+ : []),
283
+ ...(plan.topology.assetHash.startsWith("sha256-000000") ? ["missing-track-asset-hash-binding"] : []),
284
+ ...(plan.topology.confidence >= 0.65 ? [] : ["track-topology-confidence-too-low"]),
285
+ ...(racing.raceDesign.routeAlignedToTrackAsset ? [] : ["route-not-aligned-to-track-asset"]),
286
+ ...(racing.raceDesign.carTrackScaleCompatible ? [] : ["car-track-scale-incompatible"]),
287
+ ...(racing.raceDesign.noDebugLocatorDisk ? [] : ["debug-locator-disk-present"]),
288
+ ...(plan.authoredLapSeconds >= racing.raceDesign.minLapSeconds ? [] : ["lap-duration-too-short"]),
289
+ ...(plan.checkpoints.length >= racing.raceDesign.minCheckpoints ? [] : ["too-few-checkpoints"])
290
+ ];
291
+ return {
292
+ schema: "aura3d-racing-track-topology/1.0",
293
+ routeId: spec.routeId,
294
+ generatedBy: "showcase-spec-compiler",
295
+ topologySource: racing.raceDesign.visibleTrackTopology,
296
+ templateCapabilityStatus: releaseSafeTopology
297
+ ? `${racing.raceDesign.visibleTrackTopology}-proven`
298
+ : "blocked-missing-release-safe-track-topology",
299
+ vehicleAsset: racing.vehicleAsset,
300
+ trackAsset: racing.trackAsset,
301
+ assetHash: plan.topology.assetHash,
302
+ topology: plan.topology,
303
+ meshExtraction: {
304
+ status: createGeometryExtractionStatus(plan.topology.source, plan.extractionBlockers),
305
+ reasons: plan.extractionReasons,
306
+ blockers: plan.extractionBlockers
307
+ },
308
+ assetBinding: {
309
+ kind: "aura-game-asset-bound-racing-route",
310
+ layoutContractVersion: "1.0",
311
+ generatedFrom: plan.topology.source === "asset-mesh-extracted" ? "mesh-derived-track-topology" : "hash-bound-track-topology",
312
+ vehicleAsset: racing.vehicleAsset,
313
+ trackAsset: racing.trackAsset,
314
+ trackAssetHash: plan.topology.assetHash,
315
+ topologySource: plan.topology.source,
316
+ confidence: plan.topology.confidence,
317
+ routeLength: Number(plan.routeLength.toFixed(3)),
318
+ authoredLapSeconds: plan.authoredLapSeconds,
319
+ pointCount: plan.points.length,
320
+ checkpointCount: plan.checkpoints.length
321
+ },
322
+ route: {
323
+ width: plan.width,
324
+ routeLength: Number(plan.routeLength.toFixed(3)),
325
+ points: plan.points,
326
+ checkpoints: plan.checkpoints
327
+ },
328
+ minLapSeconds: racing.raceDesign.minLapSeconds,
329
+ authoredLapSeconds: plan.authoredLapSeconds,
330
+ minCheckpoints: racing.raceDesign.minCheckpoints,
331
+ minLaps: racing.raceDesign.minLaps,
332
+ routeAlignedToTrackAsset: racing.raceDesign.routeAlignedToTrackAsset,
333
+ carTrackScaleCompatible: racing.raceDesign.carTrackScaleCompatible,
334
+ noDebugLocatorDisk: racing.raceDesign.noDebugLocatorDisk,
335
+ pass: failures.length === 0,
336
+ failures
337
+ };
338
+ }
339
+ function createPlatformerPlayableSurfaceEvidence(spec, platformer, options) {
340
+ const plan = createPlatformerTemplatePlan(spec, platformer, options);
341
+ const releaseSafeSurfaceSource = isReleaseSafePlatformerSurfaceSource(platformer.levelDesign.playableSurfaceSource);
342
+ const failures = [
343
+ ...(releaseSafeSurfaceSource ? [] : ["missing-release-safe-playable-surfaces"]),
344
+ ...plan.extractionBlockers,
345
+ ...(isOverlayValidatedGeometrySource(plan.playableSurfaceMap.source) ? [] : ["missing-overlay-validated-playable-surface-map"]),
346
+ ...(plan.playableSurfaceMap.source !== "asset-mesh-extracted" && !hasRouteOverlayEvidence(plan.playableSurfaceMap.evidence.routeOverlay)
347
+ ? ["missing-playable-surface-overlay-evidence"]
348
+ : []),
349
+ ...(plan.playableSurfaceMap.assetHash.startsWith("sha256-000000") ? ["missing-world-asset-hash-binding"] : []),
350
+ ...(plan.playableSurfaceMap.confidence >= 0.65 ? [] : ["playable-surface-confidence-too-low"]),
351
+ ...(platformer.levelDesign.playableSurfaceLayoutValidated ? [] : ["playable-surface-layout-not-validated"]),
352
+ ...(platformer.levelDesign.characterWorldScaleCompatible ? [] : ["character-world-scale-incompatible"]),
353
+ ...(platformer.levelDesign.styleCompatible ? [] : ["style-incompatible"]),
354
+ ...(platformer.levelDesign.primitivePrimaryWorldRejected ? [] : ["primitive-primary-world-not-rejected"]),
355
+ ...(plan.checkpoints.length >= platformer.levelDesign.minCheckpoints ? [] : ["too-few-checkpoints"]),
356
+ ...(platformer.levelDesign.requiresHazardRespawn && plan.hazards.length === 0 ? ["missing-hazard-respawn"] : []),
357
+ ...(platformer.levelDesign.requiresFinish && plan.finish.x <= plan.start.x ? ["missing-finish-progression"] : [])
358
+ ];
359
+ return {
360
+ schema: "aura3d-platformer-playable-surfaces/1.0",
361
+ routeId: spec.routeId,
362
+ generatedBy: "showcase-spec-compiler",
363
+ surfaceSource: platformer.levelDesign.playableSurfaceSource,
364
+ templateCapabilityStatus: releaseSafeSurfaceSource
365
+ ? `${platformer.levelDesign.playableSurfaceSource}-proven`
366
+ : "blocked-missing-release-safe-playable-surfaces",
367
+ characterAsset: platformer.characterAsset,
368
+ worldAssets: platformer.worldAssets,
369
+ assetHash: plan.playableSurfaceMap.assetHash,
370
+ surfaceMap: plan.playableSurfaceMap,
371
+ meshExtraction: {
372
+ status: createGeometryExtractionStatus(plan.playableSurfaceMap.source, plan.extractionBlockers),
373
+ reasons: plan.extractionReasons,
374
+ blockers: plan.extractionBlockers
375
+ },
376
+ assetBindings: platformer.worldAssets.map((worldAsset) => ({
377
+ kind: "aura-game-asset-bound-platformer-level",
378
+ layoutContractVersion: "1.0",
379
+ generatedFrom: plan.playableSurfaceMap.source === "asset-mesh-extracted" ? "mesh-derived-playable-surface-map" : "hash-bound-playable-surface-map",
380
+ characterAsset: platformer.characterAsset,
381
+ worldAsset,
382
+ worldAssetHash: worldAsset === plan.playableSurfaceMap.assetId ? plan.playableSurfaceMap.assetHash : undefined,
383
+ surfaceSource: plan.playableSurfaceMap.source,
384
+ confidence: plan.playableSurfaceMap.confidence,
385
+ surfaceIds: plan.platforms
386
+ .filter((surface) => surface.worldAsset === worldAsset)
387
+ .map((surface) => surface.id)
388
+ })),
389
+ authoredPlayableSeconds: platformer.levelDesign.minPlayableSeconds,
390
+ minPlayableSeconds: platformer.levelDesign.minPlayableSeconds,
391
+ start: plan.start,
392
+ finish: plan.finish,
393
+ surfaces: plan.platforms,
394
+ checkpoints: plan.checkpoints,
395
+ hazards: plan.hazards,
396
+ styleCompatible: platformer.levelDesign.styleCompatible,
397
+ scaleCompatible: platformer.levelDesign.characterWorldScaleCompatible,
398
+ primitivePrimaryWorldRejected: platformer.levelDesign.primitivePrimaryWorldRejected,
399
+ pass: failures.length === 0,
400
+ failures
401
+ };
402
+ }
403
+ function createCheckpointProgresses(count) {
404
+ return Array.from({ length: count }, (_unused, index) => Number(((index + 1) / count).toFixed(3)));
405
+ }
406
+ function isReleaseSafeRacingTopology(source) {
407
+ return source === "asset-bound-road-topology" || source === "mesh-road-topology";
408
+ }
409
+ function isReleaseSafePlatformerSurfaceSource(source) {
410
+ return source === "asset-bound-playable-surfaces" || source === "asset-derived-playable-surfaces";
411
+ }
412
+ function isOverlayValidatedGeometrySource(source) {
413
+ return source === "asset-mesh-extracted" || source === "manifest-authored-overlay-validated" || source === "compiler-authored-overlay-validated";
414
+ }
415
+ function createGeometryExtractionStatus(source, blockers) {
416
+ if (source === "asset-mesh-extracted")
417
+ return blockers.length === 0 ? "pass" : "fail";
418
+ if (isOverlayValidatedGeometrySource(source))
419
+ return blockers.length === 0 ? "overlay-validated" : "fail";
420
+ return "fail";
421
+ }
422
+ function hasRouteOverlayEvidence(routeOverlay) {
423
+ return typeof routeOverlay === "string" && routeOverlay.length > 0;
424
+ }
425
+ function measureRouteLength(points) {
426
+ let total = 0;
427
+ for (let index = 1; index < points.length; index += 1) {
428
+ const previous = points[index - 1];
429
+ const current = points[index];
430
+ if (previous && current)
431
+ total += Math.hypot(current.x - previous.x, current.y - previous.y);
432
+ }
433
+ return total;
434
+ }
435
+ //# sourceMappingURL=showcase-spec-game-template-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-game-template-evidence.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-game-template-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ShowcaseSpec } from "./showcase-spec-types.js";
2
+ export declare function validateGameGameplayProof(spec: ShowcaseSpec, proof: Readonly<Record<string, unknown>>): readonly string[];
3
+ //# sourceMappingURL=showcase-spec-gameplay-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-gameplay-evidence.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-gameplay-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,MAAM,EAAE,CAMzH"}
@@ -0,0 +1,108 @@
1
+ export function validateGameGameplayProof(spec, proof) {
2
+ const blockers = [];
3
+ blockers.push(...validateScreenshotProof(proof));
4
+ if (spec.category === "game-racing")
5
+ blockers.push(...validateRacingGameplayProof(spec, proof));
6
+ if (spec.category === "game-platformer")
7
+ blockers.push(...validatePlatformerGameplayProof(spec, proof));
8
+ return blockers;
9
+ }
10
+ function validateScreenshotProof(proof) {
11
+ const screenshots = recordValue(proof.screenshots);
12
+ const beforeInput = recordValue(screenshots?.beforeInput);
13
+ const afterInput = recordValue(screenshots?.afterInput);
14
+ const blockers = [];
15
+ if (!isPositiveNumber(beforeInput?.bytes))
16
+ blockers.push("evidence:gameplay-proof:missing-before-screenshot");
17
+ if (!isPositiveNumber(afterInput?.bytes))
18
+ blockers.push("evidence:gameplay-proof:missing-after-screenshot");
19
+ if (!isSha256String(beforeInput?.sha256))
20
+ blockers.push("evidence:gameplay-proof:missing-before-screenshot-sha256");
21
+ if (!isSha256String(afterInput?.sha256))
22
+ blockers.push("evidence:gameplay-proof:missing-after-screenshot-sha256");
23
+ return blockers;
24
+ }
25
+ function validateRacingGameplayProof(spec, proof) {
26
+ const categoryProof = recordValue(proof.categoryProof);
27
+ const racingProof = recordValue(categoryProof?.racing);
28
+ const blockers = [];
29
+ if (racingProof?.inputChangesSpeed !== true)
30
+ blockers.push("evidence:gameplay-proof:racing:input-speed-missing");
31
+ if (racingProof?.inputChangesHeading !== true)
32
+ blockers.push("evidence:gameplay-proof:racing:input-heading-missing");
33
+ if (racingProof?.checkpointOrLapProgression !== true)
34
+ blockers.push("evidence:gameplay-proof:racing:checkpoint-lap-missing");
35
+ if (racingProof?.resetWorks !== true)
36
+ blockers.push("evidence:gameplay-proof:racing:reset-missing");
37
+ blockers.push(...validateVisualReviewEvidence("evidence:gameplay-proof:racing", spec, racingProof));
38
+ if (racingProof?.routeAlignedToVisibleTrack !== true)
39
+ blockers.push("evidence:gameplay-proof:racing:route-alignment-missing");
40
+ if (racingProof?.noDebugLocatorDisk !== true)
41
+ blockers.push("evidence:gameplay-proof:racing:debug-locator-disk-present");
42
+ if (numberValue(racingProof?.authoredLapSeconds) < (spec.racing?.raceDesign.minLapSeconds ?? 30)) {
43
+ blockers.push(`evidence:gameplay-proof:racing:authored-lap-seconds-too-low:${numberValue(racingProof?.authoredLapSeconds)}`);
44
+ }
45
+ return blockers;
46
+ }
47
+ function validatePlatformerGameplayProof(spec, proof) {
48
+ const categoryProof = recordValue(proof.categoryProof);
49
+ const platformerProof = recordValue(categoryProof?.platformer);
50
+ const blockers = [];
51
+ if (platformerProof?.movementChangesPosition !== true)
52
+ blockers.push("evidence:gameplay-proof:platformer:movement-missing");
53
+ if (platformerProof?.jumpChangesState !== true)
54
+ blockers.push("evidence:gameplay-proof:platformer:jump-missing");
55
+ if (platformerProof?.checkpointProgression !== true)
56
+ blockers.push("evidence:gameplay-proof:platformer:checkpoint-missing");
57
+ if (platformerProof?.hazardRespawn !== true)
58
+ blockers.push("evidence:gameplay-proof:platformer:hazard-respawn-missing");
59
+ if (platformerProof?.finishProgression !== true)
60
+ blockers.push("evidence:gameplay-proof:platformer:finish-missing");
61
+ blockers.push(...validateVisualReviewEvidence("evidence:gameplay-proof:platformer", spec, platformerProof));
62
+ if (platformerProof?.styleCompatible !== true)
63
+ blockers.push("evidence:gameplay-proof:platformer:style-fit-missing");
64
+ if (platformerProof?.scaleCompatible !== true)
65
+ blockers.push("evidence:gameplay-proof:platformer:scale-fit-missing");
66
+ if (numberValue(platformerProof?.authoredPlayableSeconds) < (spec.platformer?.levelDesign.minPlayableSeconds ?? 30)) {
67
+ blockers.push(`evidence:gameplay-proof:platformer:authored-playable-seconds-too-low:${numberValue(platformerProof?.authoredPlayableSeconds)}`);
68
+ }
69
+ return blockers;
70
+ }
71
+ function validateVisualReviewEvidence(label, spec, proof) {
72
+ const blockers = [];
73
+ if (proof?.visualReviewPass !== true)
74
+ blockers.push(`${label}:visual-review-missing`);
75
+ const visualReviewEvidence = recordValue(proof?.visualReviewEvidence);
76
+ if (!visualReviewEvidence)
77
+ return [...blockers, `${label}:visual-review-evidence-missing`];
78
+ if (visualReviewEvidence.source !== "docs/project/showcase-visual-review.json") {
79
+ blockers.push(`${label}:visual-review-source-mismatch`);
80
+ }
81
+ if (visualReviewEvidence.verdict !== "pass") {
82
+ blockers.push(`${label}:visual-review-verdict-not-pass:${stringValue(visualReviewEvidence.verdict)}`);
83
+ }
84
+ if (!screenshotEvidenceIncludes(visualReviewEvidence, spec.evidence.routePrimaryScreenshot)) {
85
+ blockers.push(`${label}:visual-review-screenshot-mismatch`);
86
+ }
87
+ return blockers;
88
+ }
89
+ function screenshotEvidenceIncludes(visualReviewEvidence, screenshotPath) {
90
+ const screenshotEvidence = visualReviewEvidence.screenshotEvidence;
91
+ return Array.isArray(screenshotEvidence) && screenshotEvidence.some((path) => path === screenshotPath);
92
+ }
93
+ function recordValue(value) {
94
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : undefined;
95
+ }
96
+ function numberValue(value) {
97
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
98
+ }
99
+ function stringValue(value) {
100
+ return typeof value === "string" && value.length > 0 ? value : "missing";
101
+ }
102
+ function isPositiveNumber(value) {
103
+ return typeof value === "number" && Number.isFinite(value) && value > 0;
104
+ }
105
+ function isSha256String(value) {
106
+ return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
107
+ }
108
+ //# sourceMappingURL=showcase-spec-gameplay-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-gameplay-evidence.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-gameplay-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ShowcaseSpec } from "./showcase-spec-types.js";
2
+ export declare function parseShowcaseSpec(input: unknown): ShowcaseSpec;
3
+ //# sourceMappingURL=showcase-spec-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-parser.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAoBV,YAAY,EAIb,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CA+C9D"}