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.
- package/README.md +113 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/showcase-spec-artifacts.d.ts +105 -0
- package/dist/showcase-spec-artifacts.d.ts.map +1 -0
- package/dist/showcase-spec-artifacts.js +143 -0
- package/dist/showcase-spec-artifacts.js.map +1 -0
- package/dist/showcase-spec-category-plan.d.ts +15 -0
- package/dist/showcase-spec-category-plan.d.ts.map +1 -0
- package/dist/showcase-spec-category-plan.js +45 -0
- package/dist/showcase-spec-category-plan.js.map +1 -0
- package/dist/showcase-spec-compiler.d.ts +5 -0
- package/dist/showcase-spec-compiler.d.ts.map +1 -0
- package/dist/showcase-spec-compiler.js +240 -0
- package/dist/showcase-spec-compiler.js.map +1 -0
- package/dist/showcase-spec-evidence.d.ts +7 -0
- package/dist/showcase-spec-evidence.d.ts.map +1 -0
- package/dist/showcase-spec-evidence.js +881 -0
- package/dist/showcase-spec-evidence.js.map +1 -0
- package/dist/showcase-spec-game-geometry-extractor.d.ts +21 -0
- package/dist/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
- package/dist/showcase-spec-game-geometry-extractor.js +725 -0
- package/dist/showcase-spec-game-geometry-extractor.js.map +1 -0
- package/dist/showcase-spec-game-replacement-evidence.d.ts +14 -0
- package/dist/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
- package/dist/showcase-spec-game-replacement-evidence.js +219 -0
- package/dist/showcase-spec-game-replacement-evidence.js.map +1 -0
- package/dist/showcase-spec-game-template-evidence.d.ts +72 -0
- package/dist/showcase-spec-game-template-evidence.d.ts.map +1 -0
- package/dist/showcase-spec-game-template-evidence.js +435 -0
- package/dist/showcase-spec-game-template-evidence.js.map +1 -0
- package/dist/showcase-spec-gameplay-evidence.d.ts +3 -0
- package/dist/showcase-spec-gameplay-evidence.d.ts.map +1 -0
- package/dist/showcase-spec-gameplay-evidence.js +108 -0
- package/dist/showcase-spec-gameplay-evidence.js.map +1 -0
- package/dist/showcase-spec-parser.d.ts +3 -0
- package/dist/showcase-spec-parser.d.ts.map +1 -0
- package/dist/showcase-spec-parser.js +690 -0
- package/dist/showcase-spec-parser.js.map +1 -0
- package/dist/showcase-spec-platformer-artifacts.d.ts +3 -0
- package/dist/showcase-spec-platformer-artifacts.d.ts.map +1 -0
- package/dist/showcase-spec-platformer-artifacts.js +274 -0
- package/dist/showcase-spec-platformer-artifacts.js.map +1 -0
- package/dist/showcase-spec-racing-artifacts.d.ts +3 -0
- package/dist/showcase-spec-racing-artifacts.d.ts.map +1 -0
- package/dist/showcase-spec-racing-artifacts.js +273 -0
- package/dist/showcase-spec-racing-artifacts.js.map +1 -0
- package/dist/showcase-spec-replacement-apply.d.ts +10 -0
- package/dist/showcase-spec-replacement-apply.d.ts.map +1 -0
- package/dist/showcase-spec-replacement-apply.js +166 -0
- package/dist/showcase-spec-replacement-apply.js.map +1 -0
- package/dist/showcase-spec-replacement-candidates.d.ts +16 -0
- package/dist/showcase-spec-replacement-candidates.d.ts.map +1 -0
- package/dist/showcase-spec-replacement-candidates.js +244 -0
- package/dist/showcase-spec-replacement-candidates.js.map +1 -0
- package/dist/showcase-spec-replacement-game-geometry.d.ts +4 -0
- package/dist/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
- package/dist/showcase-spec-replacement-game-geometry.js +175 -0
- package/dist/showcase-spec-replacement-game-geometry.js.map +1 -0
- package/dist/showcase-spec-replacement-manifest.d.ts +41 -0
- package/dist/showcase-spec-replacement-manifest.d.ts.map +1 -0
- package/dist/showcase-spec-replacement-manifest.js +62 -0
- package/dist/showcase-spec-replacement-manifest.js.map +1 -0
- package/dist/showcase-spec-replacement-values.d.ts +9 -0
- package/dist/showcase-spec-replacement-values.d.ts.map +1 -0
- package/dist/showcase-spec-replacement-values.js +41 -0
- package/dist/showcase-spec-replacement-values.js.map +1 -0
- package/dist/showcase-spec-replacement.d.ts +13 -0
- package/dist/showcase-spec-replacement.d.ts.map +1 -0
- package/dist/showcase-spec-replacement.js +144 -0
- package/dist/showcase-spec-replacement.js.map +1 -0
- package/dist/showcase-spec-types.d.ts +319 -0
- package/dist/showcase-spec-types.d.ts.map +1 -0
- package/dist/showcase-spec-types.js +2 -0
- package/dist/showcase-spec-types.js.map +1 -0
- package/package.json +45 -11
- package/templates/animation-channel/package.json +1 -1
- package/templates/animation-studio/package.json +5 -5
- package/templates/animation-studio/scripts/animation-scene.ts +1 -1
- package/templates/animation-studio/scripts/author-office-scene.ts +1 -1
- package/templates/animation-studio/scripts/build-characters.ts +1 -1
- package/templates/animation-studio/src/director/director-heuristics.ts +2 -2
- package/templates/animation-studio/src/director/{prompt-to-scene.ts → prompt-scene.ts} +1 -1
- package/templates/character-controller/package.json +3 -3
- package/templates/cinematic-scene/package.json +1 -1
- package/templates/cinematic-scene/tests/screenshot.spec.ts +2 -4
- package/templates/episode-builder/package.json +1 -1
- package/templates/falling-blocks-starter/README.md +18 -0
- package/templates/falling-blocks-starter/index.html +23 -0
- package/templates/falling-blocks-starter/package.json +21 -0
- package/templates/falling-blocks-starter/playwright.config.ts +12 -0
- package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.679d52fe.glb +0 -0
- package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.thumb.svg +1 -0
- package/templates/falling-blocks-starter/src/aura-assets.ts +20 -0
- package/templates/falling-blocks-starter/src/main.ts +358 -0
- package/templates/falling-blocks-starter/tests/playable.spec.ts +85 -0
- package/templates/falling-blocks-starter/tests/route-health.spec.ts +34 -0
- package/templates/falling-blocks-starter/tsconfig.json +13 -0
- package/templates/fighting-game/package.json +1 -1
- package/templates/mini-game/README.md +13 -0
- package/templates/mini-game/index.html +1 -1
- package/templates/mini-game/package.json +2 -2
- package/templates/mini-game/src/main.ts +251 -21
- package/templates/mini-game/tests/playable.spec.ts +49 -0
- package/templates/mini-game/tests/screenshot.spec.ts +37 -32
- package/templates/product-viewer/package.json +1 -1
- package/templates/product-viewer/tests/screenshot.spec.ts +3 -5
- package/templates/prompt-animation-channel/package.json +1 -1
- package/templates/racing-starter/README.md +27 -0
- package/templates/racing-starter/index.html +23 -0
- package/templates/racing-starter/package.json +21 -0
- package/templates/racing-starter/playwright.config.ts +12 -0
- package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.1c69283f.glb +0 -0
- package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.thumb.svg +1 -0
- package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.5cbb912e.glb +0 -0
- package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.thumb.svg +1 -0
- package/templates/racing-starter/src/aura-assets.ts +36 -0
- package/templates/racing-starter/src/main.ts +280 -0
- package/templates/racing-starter/tests/playable.spec.ts +93 -0
- package/templates/racing-starter/tests/route-health.spec.ts +40 -0
- package/templates/racing-starter/tsconfig.json +13 -0
- package/templates/three-compat-architecture-interior/package.json +1 -1
- package/templates/three-compat-asset-inspector/package.json +1 -1
- package/templates/three-compat-character-viewer/package.json +1 -1
- package/templates/three-compat-custom-threejs-migration/package.json +1 -1
- package/templates/three-compat-large-scene/package.json +1 -1
- package/templates/three-compat-material-authoring/package.json +1 -1
- package/templates/three-compat-postprocess-scene/package.json +1 -1
- package/templates/three-compat-premium-product-viewer/package.json +1 -1
- package/templates/animation-channel/public/aura-assets/moon-garden-feature-frame.png +0 -0
- package/templates/animation-channel/test-results/.last-run.json +0 -4
- package/templates/animation-channel/tests/reports/prompt-animation/cartoon-sample-episode.png +0 -0
- package/templates/animation-studio/dist/episodes/prompt-to-scene-proof/two-robots-fixing-a-car.document.json +0 -680
- package/templates/animation-studio/dist/episodes/scene/episode-3d.webm +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/action.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/dialogue.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/final.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/first.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/mouth-closed.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/frames/mouth-open.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/render-live-summary.json +0 -9763
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/broken.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/chefs.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/customer.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/friend-1.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/friend-2.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-1.png +0 -0
- package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-2.png +0 -0
- package/templates/animation-studio/dist/generated/second-scene.document.json +0 -1210
- package/templates/animation-studio/dist/generated/studio-edited.document.json +0 -1196
- package/templates/animation-studio/dist/scene/inshader-accept.document.json +0 -1
- package/templates/animation-studio/dist/scene/inshader-test.document.json +0 -1
- package/templates/animation-studio/dist/scene/integ.document.json +0 -1
- package/templates/animation-studio/dist/scene/working.document.json +0 -673
- package/templates/animation-studio/dist/scene/working.history.json +0 -1
- package/templates/animation-studio/node_modules.publish-aside/.vite/deps/_metadata.json +0 -8
- package/templates/animation-studio/node_modules.publish-aside/.vite/deps/package.json +0 -3
- package/templates/animation-studio/package-lock.json +0 -3503
- package/templates/animation-studio/studio/dist/assets/index-C7f8tHfi.css +0 -1
- package/templates/animation-studio/studio/dist/assets/index-CLo3GXyN.js +0 -43
- package/templates/animation-studio/studio/dist/index.html +0 -19
- package/templates/animation-studio/tests/reports/animation-studio/hifi-cast-validation.json +0 -938
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
export type ShowcaseSpecClaimLabel = "createAuraApp" | "prototype" | "roadmap";
|
|
2
|
+
export type ShowcaseSpecFinalStatus = "release-ready candidate" | "prototype-blocked" | "internal-diagnostic" | "removed-from-public-showcase";
|
|
3
|
+
export type ShowcaseSpecReplacementRequiredRole = "architecture" | "building" | "character" | "data-station" | "effect-core" | "environment" | "facility" | "industrial" | "level" | "platformer-world" | "stage" | "track" | "vehicle" | "world";
|
|
4
|
+
export interface ShowcaseSpecAssetPolicy {
|
|
5
|
+
readonly allowReplacement: boolean;
|
|
6
|
+
readonly replacementQuery?: string;
|
|
7
|
+
readonly requiredRole?: ShowcaseSpecReplacementRequiredRole;
|
|
8
|
+
readonly minQuality?: "candidate" | "release";
|
|
9
|
+
readonly requireRenderedProbe?: boolean;
|
|
10
|
+
readonly requireDeployPass?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface ShowcaseSpecAsset {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly role: string;
|
|
15
|
+
readonly typedRef: string;
|
|
16
|
+
readonly quality: "release" | "candidate" | "prototype";
|
|
17
|
+
readonly hasDurableProvenance: boolean;
|
|
18
|
+
readonly hasRenderedProbe: boolean;
|
|
19
|
+
readonly hasOrientationEvidence: boolean;
|
|
20
|
+
readonly hasForegroundBounds: boolean;
|
|
21
|
+
readonly assetPolicy?: ShowcaseSpecAssetPolicy;
|
|
22
|
+
}
|
|
23
|
+
export interface ShowcaseSpecCapability {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly status: "root-proven" | "partial" | "internal-only" | "roadmap" | "unsupported";
|
|
26
|
+
readonly evidence?: string;
|
|
27
|
+
}
|
|
28
|
+
export type ShowcasePlatformerGameplayRequirement = "movement" | "jump" | "checkpoint" | "progression";
|
|
29
|
+
export type ShowcasePlatformerPlayableSurfaceSource = "asset-bound-playable-surfaces" | "asset-derived-playable-surfaces" | "authored-route-rectangles";
|
|
30
|
+
export type ShowcaseGeometryEvidenceSource = "asset-mesh-extracted" | "manifest-authored" | "manifest-authored-overlay-validated" | "compiler-authored" | "compiler-authored-overlay-validated";
|
|
31
|
+
export interface ShowcaseRacingTrackTopologyPoint {
|
|
32
|
+
readonly x: number;
|
|
33
|
+
readonly z: number;
|
|
34
|
+
readonly width?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ShowcaseRacingTrackTopologyCheckpoint {
|
|
37
|
+
readonly progress: number;
|
|
38
|
+
readonly width: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ShowcaseGeometryEvidenceRef {
|
|
41
|
+
readonly sourceAsset: string;
|
|
42
|
+
readonly renderedProbe?: string;
|
|
43
|
+
readonly routeOverlay?: string;
|
|
44
|
+
readonly notes: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ShowcaseGeometryModelBounds {
|
|
47
|
+
readonly min: readonly [number, number, number];
|
|
48
|
+
readonly max: readonly [number, number, number];
|
|
49
|
+
}
|
|
50
|
+
export interface ShowcaseRacingTopologyModelAlignment {
|
|
51
|
+
readonly source: ShowcaseGeometryEvidenceSource;
|
|
52
|
+
readonly modelBounds: ShowcaseGeometryModelBounds;
|
|
53
|
+
readonly modelPoint: readonly [number, number, number];
|
|
54
|
+
readonly gamePoint: {
|
|
55
|
+
readonly x: number;
|
|
56
|
+
readonly z: number;
|
|
57
|
+
};
|
|
58
|
+
readonly anchorPairs?: readonly {
|
|
59
|
+
readonly id: string;
|
|
60
|
+
readonly modelPoint: readonly [number, number, number];
|
|
61
|
+
readonly gamePoint: {
|
|
62
|
+
readonly x: number;
|
|
63
|
+
readonly z: number;
|
|
64
|
+
};
|
|
65
|
+
}[];
|
|
66
|
+
readonly evidence: {
|
|
67
|
+
readonly routeOverlay?: string;
|
|
68
|
+
readonly notes: string;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export interface ShowcasePlatformerSurfaceModelAlignment {
|
|
72
|
+
readonly source: ShowcaseGeometryEvidenceSource;
|
|
73
|
+
readonly modelBounds: ShowcaseGeometryModelBounds;
|
|
74
|
+
readonly modelPoint: readonly [number, number, number];
|
|
75
|
+
readonly gamePoint: {
|
|
76
|
+
readonly x: number;
|
|
77
|
+
readonly y: number;
|
|
78
|
+
};
|
|
79
|
+
readonly anchorPairs?: readonly {
|
|
80
|
+
readonly id: string;
|
|
81
|
+
readonly modelPoint: readonly [number, number, number];
|
|
82
|
+
readonly gamePoint: {
|
|
83
|
+
readonly x: number;
|
|
84
|
+
readonly y: number;
|
|
85
|
+
};
|
|
86
|
+
}[];
|
|
87
|
+
readonly evidence: {
|
|
88
|
+
readonly routeOverlay?: string;
|
|
89
|
+
readonly notes: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export type ShowcaseGameAssetPairEvidenceCategory = "racing" | "platformer";
|
|
93
|
+
export type ShowcaseGameAssetPairEvidenceVerdict = "pass" | "fail";
|
|
94
|
+
export type ShowcaseGameGeometryEvidenceKind = "racing-track-topology" | "platformer-playable-surface-map";
|
|
95
|
+
export interface ShowcaseGameGeometryEvidenceAsset {
|
|
96
|
+
readonly id: string;
|
|
97
|
+
readonly hash: string;
|
|
98
|
+
}
|
|
99
|
+
export interface ShowcaseGameGeometryEvidence {
|
|
100
|
+
readonly category: ShowcaseGameAssetPairEvidenceCategory;
|
|
101
|
+
readonly kind: ShowcaseGameGeometryEvidenceKind;
|
|
102
|
+
readonly source: ShowcaseGeometryEvidenceSource;
|
|
103
|
+
readonly report: string;
|
|
104
|
+
readonly screenshotEvidence: string;
|
|
105
|
+
readonly routePrimaryScreenshotSha256: string;
|
|
106
|
+
readonly assets: readonly ShowcaseGameGeometryEvidenceAsset[];
|
|
107
|
+
}
|
|
108
|
+
export interface ShowcaseGameAssetPairEvidence {
|
|
109
|
+
readonly category: ShowcaseGameAssetPairEvidenceCategory;
|
|
110
|
+
readonly assets: readonly string[];
|
|
111
|
+
readonly screenshotEvidence: string;
|
|
112
|
+
readonly routePrimaryProbe?: string;
|
|
113
|
+
readonly screenshotSha256?: string;
|
|
114
|
+
readonly geometryEvidence?: ShowcaseGameGeometryEvidence;
|
|
115
|
+
readonly verdict: ShowcaseGameAssetPairEvidenceVerdict;
|
|
116
|
+
readonly notes: string;
|
|
117
|
+
readonly blockers: readonly string[];
|
|
118
|
+
}
|
|
119
|
+
export interface ShowcaseRacingTrackTopology {
|
|
120
|
+
readonly assetId: string;
|
|
121
|
+
readonly assetHash: string;
|
|
122
|
+
readonly source: ShowcaseGeometryEvidenceSource;
|
|
123
|
+
readonly roadCenterline: readonly ShowcaseRacingTrackTopologyPoint[];
|
|
124
|
+
readonly checkpoints: readonly ShowcaseRacingTrackTopologyCheckpoint[];
|
|
125
|
+
readonly lapLengthMeters?: number;
|
|
126
|
+
readonly estimatedLapSeconds: number;
|
|
127
|
+
readonly confidence: number;
|
|
128
|
+
readonly modelAlignment: ShowcaseRacingTopologyModelAlignment;
|
|
129
|
+
readonly evidence: ShowcaseGeometryEvidenceRef;
|
|
130
|
+
}
|
|
131
|
+
export interface ShowcasePlatformerPlayableSurface {
|
|
132
|
+
readonly id: string;
|
|
133
|
+
readonly x: number;
|
|
134
|
+
readonly y: number;
|
|
135
|
+
readonly width: number;
|
|
136
|
+
readonly height: number;
|
|
137
|
+
readonly kind: "ground" | "platform" | "moving" | "hazard" | "checkpoint" | "finish";
|
|
138
|
+
}
|
|
139
|
+
export interface ShowcasePlatformerPlayableSurfaceMap {
|
|
140
|
+
readonly assetId: string;
|
|
141
|
+
readonly assetHash: string;
|
|
142
|
+
readonly source: ShowcaseGeometryEvidenceSource;
|
|
143
|
+
readonly surfaces: readonly ShowcasePlatformerPlayableSurface[];
|
|
144
|
+
readonly levelLength: number;
|
|
145
|
+
readonly estimatedCompletionSeconds: number;
|
|
146
|
+
readonly characterScaleRatio: number;
|
|
147
|
+
readonly confidence: number;
|
|
148
|
+
readonly modelAlignment: ShowcasePlatformerSurfaceModelAlignment;
|
|
149
|
+
readonly evidence: ShowcaseGeometryEvidenceRef;
|
|
150
|
+
}
|
|
151
|
+
export interface ShowcasePlatformerSpec {
|
|
152
|
+
readonly characterAsset: string;
|
|
153
|
+
readonly worldAssets: readonly string[];
|
|
154
|
+
readonly cameraIntent: "side-scroller";
|
|
155
|
+
readonly layoutConstraints: {
|
|
156
|
+
readonly keepCharacterReadable: boolean;
|
|
157
|
+
readonly uiAvoidsEvidenceArea: boolean;
|
|
158
|
+
};
|
|
159
|
+
readonly gameplayRequirements: readonly ShowcasePlatformerGameplayRequirement[];
|
|
160
|
+
readonly levelDesign: {
|
|
161
|
+
readonly minPlayableSeconds: number;
|
|
162
|
+
readonly minCheckpoints: number;
|
|
163
|
+
readonly requiresHazardRespawn: boolean;
|
|
164
|
+
readonly requiresFinish: boolean;
|
|
165
|
+
readonly authoredLevelFlow: boolean;
|
|
166
|
+
readonly playableSurfaceSource: ShowcasePlatformerPlayableSurfaceSource;
|
|
167
|
+
readonly playableSurfaceLayoutValidated: boolean;
|
|
168
|
+
readonly playableSurfaceEvidence?: string;
|
|
169
|
+
readonly playableSurfaceMap?: ShowcasePlatformerPlayableSurfaceMap;
|
|
170
|
+
readonly assetPairEvidence?: ShowcaseGameAssetPairEvidence;
|
|
171
|
+
readonly characterWorldScaleCompatible: boolean;
|
|
172
|
+
readonly styleCompatible: boolean;
|
|
173
|
+
readonly primitivePrimaryWorldRejected: boolean;
|
|
174
|
+
};
|
|
175
|
+
readonly releaseAssetRequirements: {
|
|
176
|
+
readonly characterRole: "character";
|
|
177
|
+
readonly worldRoles: readonly ("level" | "world" | "stage")[];
|
|
178
|
+
readonly requiresOrientationEvidence: boolean;
|
|
179
|
+
readonly requiresScaleNormalizationEvidence: boolean;
|
|
180
|
+
readonly requiresRenderedProbe: boolean;
|
|
181
|
+
readonly requiresDurableProvenance: boolean;
|
|
182
|
+
readonly requiresSuitabilityReason: boolean;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export type ShowcaseRacingGameplayRequirement = "throttle" | "steering" | "reset" | "checkpoint" | "lap" | "multi-lap";
|
|
186
|
+
export interface ShowcaseRacingSpec {
|
|
187
|
+
readonly vehicleAsset: string;
|
|
188
|
+
readonly trackAsset: string;
|
|
189
|
+
readonly cameraIntent: "track-overview";
|
|
190
|
+
readonly layoutConstraints: {
|
|
191
|
+
readonly keepVehicleReadable: boolean;
|
|
192
|
+
readonly keepTrackReadable: boolean;
|
|
193
|
+
readonly uiAvoidsEvidenceArea: boolean;
|
|
194
|
+
};
|
|
195
|
+
readonly gameplayRequirements: readonly ShowcaseRacingGameplayRequirement[];
|
|
196
|
+
readonly raceDesign: {
|
|
197
|
+
readonly minCheckpoints: number;
|
|
198
|
+
readonly minLaps: number;
|
|
199
|
+
readonly minLapSeconds: number;
|
|
200
|
+
readonly routeAlignedToTrackAsset: boolean;
|
|
201
|
+
readonly visibleTrackTopology: "asset-bound-road-topology" | "authored-route-over-visible-track" | "mesh-road-topology";
|
|
202
|
+
readonly trackTopologyEvidence?: string;
|
|
203
|
+
readonly trackTopology?: ShowcaseRacingTrackTopology;
|
|
204
|
+
readonly assetPairEvidence?: ShowcaseGameAssetPairEvidence;
|
|
205
|
+
readonly carTrackScaleCompatible: boolean;
|
|
206
|
+
readonly noDebugLocatorDisk: boolean;
|
|
207
|
+
};
|
|
208
|
+
readonly releaseAssetRequirements: {
|
|
209
|
+
readonly vehicleRole: "vehicle";
|
|
210
|
+
readonly trackRole: "track";
|
|
211
|
+
readonly requiresOrientationEvidence: boolean;
|
|
212
|
+
readonly requiresScaleNormalizationEvidence: boolean;
|
|
213
|
+
readonly requiresRenderedProbe: boolean;
|
|
214
|
+
readonly requiresDurableProvenance: boolean;
|
|
215
|
+
readonly requiresSuitabilityReason: boolean;
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
export type ShowcaseCategoryPlanKind = "architecture-environment" | "industrial-digital-twin" | "particle-diagnostic" | "data-diagnostic";
|
|
219
|
+
export type ShowcaseCategoryCameraIntent = "architecture-hero" | "industrial-overview" | "diagnostic-core" | "data-observatory";
|
|
220
|
+
export type ShowcaseCategoryBackendClaim = "webgl-particle" | "native-webgpu" | "fallback";
|
|
221
|
+
export interface ShowcaseCategoryPlan {
|
|
222
|
+
readonly kind: ShowcaseCategoryPlanKind;
|
|
223
|
+
readonly primaryAsset: string;
|
|
224
|
+
readonly cameraIntent: ShowcaseCategoryCameraIntent;
|
|
225
|
+
readonly backendClaim?: ShowcaseCategoryBackendClaim;
|
|
226
|
+
readonly layoutConstraints: {
|
|
227
|
+
readonly keepHeroReadable: boolean;
|
|
228
|
+
readonly uiAvoidsEvidenceArea: boolean;
|
|
229
|
+
};
|
|
230
|
+
readonly claims: {
|
|
231
|
+
readonly allowed: readonly string[];
|
|
232
|
+
readonly notAllowed: readonly string[];
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
export interface ShowcaseSpec {
|
|
236
|
+
readonly schema: "aura3d-showcase-spec/1.0";
|
|
237
|
+
readonly routeId: string;
|
|
238
|
+
readonly label: string;
|
|
239
|
+
readonly category: string;
|
|
240
|
+
readonly path: string;
|
|
241
|
+
readonly globalName: string;
|
|
242
|
+
readonly claimLabel: ShowcaseSpecClaimLabel;
|
|
243
|
+
readonly publicStatus: ShowcaseSpecFinalStatus;
|
|
244
|
+
readonly layout: {
|
|
245
|
+
readonly heroAsset: string;
|
|
246
|
+
readonly uiPlacement: "left-panel" | "right-panel" | "bottom-bar" | "none";
|
|
247
|
+
};
|
|
248
|
+
readonly platformer?: ShowcasePlatformerSpec;
|
|
249
|
+
readonly racing?: ShowcaseRacingSpec;
|
|
250
|
+
readonly categoryPlan?: ShowcaseCategoryPlan;
|
|
251
|
+
readonly primaryAssets: readonly ShowcaseSpecAsset[];
|
|
252
|
+
readonly evidence: {
|
|
253
|
+
readonly routePrimaryProbe: string;
|
|
254
|
+
readonly routePrimaryScreenshot: string;
|
|
255
|
+
readonly deployCommand: string;
|
|
256
|
+
readonly deployEvidence?: string;
|
|
257
|
+
readonly deployPassed: boolean;
|
|
258
|
+
readonly routePrimaryPassed: boolean;
|
|
259
|
+
readonly gameplayProof?: string;
|
|
260
|
+
readonly gameplayPassed?: boolean;
|
|
261
|
+
readonly releaseAssetProbes?: Readonly<Record<string, string>>;
|
|
262
|
+
};
|
|
263
|
+
readonly capabilities: readonly ShowcaseSpecCapability[];
|
|
264
|
+
}
|
|
265
|
+
export interface CompileShowcaseSpecOptions {
|
|
266
|
+
readonly outputDir: string;
|
|
267
|
+
readonly projectDir?: string;
|
|
268
|
+
}
|
|
269
|
+
export interface CompileShowcaseSpecFileOptions extends CompileShowcaseSpecOptions {
|
|
270
|
+
readonly specPath: string;
|
|
271
|
+
}
|
|
272
|
+
export interface CompileShowcaseSpecReport {
|
|
273
|
+
readonly ok: boolean;
|
|
274
|
+
readonly schema: "aura3d-showcase-spec-compile-report/1.0";
|
|
275
|
+
readonly routeId: string;
|
|
276
|
+
readonly finalStatus: ShowcaseSpecFinalStatus;
|
|
277
|
+
readonly generatedFiles: readonly string[];
|
|
278
|
+
readonly blockers: readonly string[];
|
|
279
|
+
readonly evidenceChecklistPath: string;
|
|
280
|
+
readonly routeGatePatchPath: string;
|
|
281
|
+
readonly rejectedAssets: readonly ShowcaseSpecRejectedAsset[];
|
|
282
|
+
readonly replacementCandidates: readonly ShowcaseSpecReplacementCandidate[];
|
|
283
|
+
readonly selectedReplacement?: ShowcaseSpecSelectedReplacement;
|
|
284
|
+
}
|
|
285
|
+
export interface ShowcaseSpecRejectedAsset {
|
|
286
|
+
readonly id: string;
|
|
287
|
+
readonly reason: "release-probe-blank" | "release-probe-failing" | "release-probe-missing" | "route-primary-clipped" | "route-primary-missing" | "route-primary-unreadable" | "game-asset-pair-failing";
|
|
288
|
+
readonly evidence: string;
|
|
289
|
+
readonly failures: readonly string[];
|
|
290
|
+
}
|
|
291
|
+
export interface ShowcaseSpecReplacementProvenance {
|
|
292
|
+
readonly sourcePage?: string;
|
|
293
|
+
readonly downloadUrl?: string;
|
|
294
|
+
readonly license?: string;
|
|
295
|
+
readonly licenseUrl?: string;
|
|
296
|
+
readonly author?: string;
|
|
297
|
+
readonly assetHash?: string;
|
|
298
|
+
}
|
|
299
|
+
export interface ShowcaseSpecReplacementCandidate {
|
|
300
|
+
readonly id: string;
|
|
301
|
+
readonly role: string;
|
|
302
|
+
readonly typedRef: string;
|
|
303
|
+
readonly score: number;
|
|
304
|
+
readonly reasons: readonly string[];
|
|
305
|
+
readonly penalties: readonly string[];
|
|
306
|
+
readonly provenance: ShowcaseSpecReplacementProvenance;
|
|
307
|
+
readonly evidence?: string;
|
|
308
|
+
readonly accepted: boolean;
|
|
309
|
+
readonly selected: boolean;
|
|
310
|
+
}
|
|
311
|
+
export interface ShowcaseSpecSelectedReplacement {
|
|
312
|
+
readonly replaces: string;
|
|
313
|
+
readonly id: string;
|
|
314
|
+
readonly role: string;
|
|
315
|
+
readonly score: number;
|
|
316
|
+
readonly reasons: readonly string[];
|
|
317
|
+
readonly provenance: ShowcaseSpecReplacementProvenance;
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=showcase-spec-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase-spec-types.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase-spec-types.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-aura3d",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-aura3d": "dist/cli.js"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
|
+
"README.md",
|
|
9
10
|
"dist",
|
|
10
11
|
"templates/product-viewer",
|
|
11
12
|
"templates/cinematic-scene",
|
|
12
13
|
"templates/mini-game",
|
|
14
|
+
"templates/racing-starter",
|
|
15
|
+
"templates/falling-blocks-starter",
|
|
13
16
|
"templates/fighting-game",
|
|
14
17
|
"templates/animation-channel",
|
|
15
18
|
"templates/prompt-animation-channel",
|
|
@@ -23,7 +26,21 @@
|
|
|
23
26
|
"templates/three-compat-character-viewer",
|
|
24
27
|
"templates/three-compat-postprocess-scene",
|
|
25
28
|
"templates/three-compat-custom-threejs-migration",
|
|
26
|
-
"templates/three-compat-large-scene"
|
|
29
|
+
"templates/three-compat-large-scene",
|
|
30
|
+
"!templates/**/node_modules/**",
|
|
31
|
+
"!templates/**/node_modules.publish-aside/**",
|
|
32
|
+
"!templates/**/dist/**",
|
|
33
|
+
"!templates/**/.turbo/**",
|
|
34
|
+
"!templates/**/coverage/**",
|
|
35
|
+
"!templates/**/test-results/**",
|
|
36
|
+
"!templates/**/playwright-report/**",
|
|
37
|
+
"!templates/**/tests/reports/**",
|
|
38
|
+
"!templates/**/package-lock.json",
|
|
39
|
+
"!templates/**/.DS_Store",
|
|
40
|
+
"!templates/**/*.png",
|
|
41
|
+
"!templates/**/*.jpg",
|
|
42
|
+
"!templates/**/*.jpeg",
|
|
43
|
+
"!templates/**/*.csv"
|
|
27
44
|
],
|
|
28
45
|
"publishConfig": {
|
|
29
46
|
"access": "public"
|
|
@@ -36,26 +53,43 @@
|
|
|
36
53
|
},
|
|
37
54
|
"main": "./dist/index.js",
|
|
38
55
|
"types": "./dist/index.d.ts",
|
|
39
|
-
"
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@aura3d/asset-index": "1.4.1"
|
|
58
|
+
},
|
|
59
|
+
"description": "Scaffold Vite browser 3D apps with Aura3D, typed GLB/glTF assets, route-health tests, and screenshot-ready starter templates.",
|
|
40
60
|
"keywords": [
|
|
41
61
|
"create-aura3d",
|
|
42
62
|
"vite",
|
|
63
|
+
"vite-template",
|
|
64
|
+
"3d",
|
|
43
65
|
"3d-template",
|
|
66
|
+
"3d-starter",
|
|
67
|
+
"3d-scaffold",
|
|
44
68
|
"browser-3d",
|
|
69
|
+
"web-3d",
|
|
70
|
+
"webgl",
|
|
71
|
+
"typescript",
|
|
72
|
+
"typescript-3d",
|
|
73
|
+
"ai-agents",
|
|
74
|
+
"coding-agents",
|
|
75
|
+
"prompt-to-3d",
|
|
76
|
+
"prompt-to-code",
|
|
77
|
+
"gltf",
|
|
78
|
+
"glb",
|
|
79
|
+
"typed-assets",
|
|
45
80
|
"product-viewer",
|
|
81
|
+
"product-configurator",
|
|
82
|
+
"cinematic-scene",
|
|
83
|
+
"mini-game",
|
|
46
84
|
"fighting-game",
|
|
85
|
+
"game-prototype",
|
|
47
86
|
"prompt-animation-channel",
|
|
87
|
+
"animation-channel",
|
|
48
88
|
"animation-studio",
|
|
49
89
|
"episode-builder",
|
|
50
|
-
"
|
|
51
|
-
"prompt-to-video",
|
|
52
|
-
"game-runtime",
|
|
53
|
-
"gltf",
|
|
54
|
-
"glb",
|
|
55
|
-
"typescript",
|
|
56
|
-
"ai-agents"
|
|
90
|
+
"prompt-to-video"
|
|
57
91
|
],
|
|
58
|
-
"homepage": "https://
|
|
92
|
+
"homepage": "https://aura3d.auraone.ai",
|
|
59
93
|
"repository": {
|
|
60
94
|
"type": "git",
|
|
61
95
|
"url": "git+https://github.com/auraoneai/aura3d.git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"test:negative-failed-puppets": "playwright test tests/concept-2-5d.spec.ts tests/puppet-2d.spec.ts tests/image-puppet.spec.ts tests/concept-2-5d-animation.spec.ts tests/puppet-2d-animation.spec.ts tests/image-puppet-animation.spec.ts --workers=1"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@aura3d/engine": "1.
|
|
15
|
+
"@aura3d/engine": "1.4.1"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@playwright/test": "^1.52.0",
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"preview": "vite preview --host 0.0.0.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@aura3d/animation": "1.
|
|
20
|
-
"@aura3d/assets": "1.
|
|
21
|
-
"@aura3d/core": "1.
|
|
22
|
-
"@aura3d/engine": "1.
|
|
23
|
-
"@aura3d/physics": "1.
|
|
19
|
+
"@aura3d/animation": "1.4.1",
|
|
20
|
+
"@aura3d/assets": "1.4.1",
|
|
21
|
+
"@aura3d/core": "1.4.1",
|
|
22
|
+
"@aura3d/engine": "1.4.1",
|
|
23
|
+
"@aura3d/physics": "1.4.1",
|
|
24
24
|
"react": "^18.3.1",
|
|
25
25
|
"react-dom": "^18.3.1",
|
|
26
26
|
"sharp": "^0.33.5"
|
|
@@ -33,7 +33,7 @@ import { validateEpisodeDocument } from "../src/animation-episode-validator.js";
|
|
|
33
33
|
import { addShot, clearProps, placeProp, removeDialogueLine, removeShot, retimeDialogue, retimeShot, setBlocking, setCamera, setCharacterScale, setDialogueLine, setGesture } from "../src/studio/scene-tools.js";
|
|
34
34
|
import { compileEpisodeDocument } from "../src/director/compile-episode-document.js";
|
|
35
35
|
import type { DirectorSceneInput } from "../src/director/director-heuristics.js";
|
|
36
|
-
import { generateSceneFromPrompt } from "../src/director/prompt-
|
|
36
|
+
import { generateSceneFromPrompt } from "../src/director/prompt-scene.js";
|
|
37
37
|
import { SET_TEMPLATES, getSetTemplate, pickSetForPrompt } from "../src/set-templates.js";
|
|
38
38
|
import { resolveAsset, resolveLocalGlb, type ResolvedAsset } from "./resolve-asset.js";
|
|
39
39
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { writeFileSync } from "node:fs";
|
|
8
8
|
import { resolve, dirname } from "node:path";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
|
-
import { generateSceneFromPrompt } from "../src/director/prompt-
|
|
10
|
+
import { generateSceneFromPrompt } from "../src/director/prompt-scene.js";
|
|
11
11
|
import { directScene } from "../src/director/director-heuristics.js";
|
|
12
12
|
import { estimateSpeechDuration } from "../src/episode-document.js";
|
|
13
13
|
|
|
@@ -1480,7 +1480,7 @@ function main(): void {
|
|
|
1480
1480
|
);
|
|
1481
1481
|
}
|
|
1482
1482
|
// The generator binds prompt casts to NEUTRAL copies (cast-a/cast-b) of the two leads
|
|
1483
|
-
// (see src/director/prompt-
|
|
1483
|
+
// (see src/director/prompt-scene.ts). Re-copy them byte-for-byte from the freshly
|
|
1484
1484
|
// textured leads so the default generated cast picks up the new bitmap textures too.
|
|
1485
1485
|
if (!LOW_FI) {
|
|
1486
1486
|
const COPIES: readonly { from: string; to: string }[] = [
|
|
@@ -409,7 +409,7 @@ const LOW_MOTION = new Set<PerformanceClip>(["idle", "talk"]);
|
|
|
409
409
|
* (as speaker OR listener) — unless that character is explicitly `staged` (e.g. a
|
|
410
410
|
* background extra the director deliberately froze).
|
|
411
411
|
* It also flags the absence of any gesture or any listener reaction, which the
|
|
412
|
-
* prompt-
|
|
412
|
+
* prompt-scene proof asserts must both be present.
|
|
413
413
|
*
|
|
414
414
|
* `stagedStatic` lists character ids that are *allowed* to be motionless on purpose.
|
|
415
415
|
*/
|
|
@@ -462,7 +462,7 @@ export function validateDirectedActing(
|
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
|
|
465
|
-
// (3) Variety asserts the prompt-
|
|
465
|
+
// (3) Variety asserts the prompt-scene proof depends on.
|
|
466
466
|
const GESTURE_INTENTS = new Set<PerformanceClip>(["gesture", "point", "nod"]);
|
|
467
467
|
if (!beats.some((b) => GESTURE_INTENTS.has(b.speakingIntent))) {
|
|
468
468
|
issues.push({ code: "NO_GESTURE", message: "No speaker ever gestures/points/nods — acting is all talk." });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* prompt-
|
|
2
|
+
* prompt-scene.ts — Phase F2: a FULL, deterministic prompt → EpisodeDocument generator
|
|
3
3
|
* with NO fallback to a content fixture (no Moon Garden, no hard-coded miko/luma cast).
|
|
4
4
|
*
|
|
5
5
|
* Given a free-text prompt this produces a *complete, renderable* EpisodeDocument whose
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"test": "playwright test tests/route-health.spec.ts tests/screenshot.spec.ts --workers=1"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@aura3d/animation": "1.
|
|
15
|
-
"@aura3d/engine": "1.
|
|
16
|
-
"@aura3d/physics": "1.
|
|
14
|
+
"@aura3d/animation": "1.4.1",
|
|
15
|
+
"@aura3d/engine": "1.4.1",
|
|
16
|
+
"@aura3d/physics": "1.4.1"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@playwright/test": "^1.52.0",
|
|
@@ -31,8 +31,8 @@ test("Aura3D cinematic scene screenshot shows the rainy neon hero prompt", async
|
|
|
31
31
|
const luminance = r * 0.2126 + g * 0.7152 + b * 0.0722;
|
|
32
32
|
if (luminance > 30) buckets.add(`${r >> 5}-${g >> 5}-${b >> 5}`);
|
|
33
33
|
if (b > 110 && g > 90 && b > r * 1.22) cyanPixels += 1;
|
|
34
|
-
if (r >
|
|
35
|
-
if (r >
|
|
34
|
+
if (r > 145 && g > 105 && b < 180 && r >= g * 0.95 && g >= b * 0.65) amberPixels += 1;
|
|
35
|
+
if (r > 130 && g > 140 && b > 145 && Math.max(r, g, b) - Math.min(r, g, b) < 75) rainPixels += 1;
|
|
36
36
|
if (y < target.height * 0.36 && ((b > 95 && g > 65 && b > r * 1.12) || (r > 105 && g > 62 && b < 95))) wetReflectionPixels += 1;
|
|
37
37
|
if (x > target.width * 0.32 && x < target.width * 0.68 && y > target.height * 0.26 && y < target.height * 0.78 && luminance > 75) centerHeroPixels += 1;
|
|
38
38
|
if (luminance > 8 && luminance < 36 && b >= r && x > target.width * 0.08 && x < target.width * 0.92) darkAlleyPixels += 1;
|
|
@@ -50,8 +50,6 @@ test("Aura3D cinematic scene screenshot shows the rainy neon hero prompt", async
|
|
|
50
50
|
expect(profile.rainPixels).toBeGreaterThan(90);
|
|
51
51
|
expect(profile.wetReflectionPixels).toBeGreaterThan(60);
|
|
52
52
|
expect(profile.centerHeroPixels).toBeGreaterThan(600);
|
|
53
|
-
// Measured 174 on 2026-06-10 after engine lighting/material updates (neutral-gray
|
|
54
|
-
// default fallback, bloom retune) brightened the alley floor slightly.
|
|
55
53
|
expect(profile.darkAlleyPixels).toBeGreaterThan(150);
|
|
56
54
|
expect(profile.uniqueBuckets).toBeGreaterThan(22);
|
|
57
55
|
expect(screenshot.byteLength).toBeGreaterThan(1000);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Aura3D Falling Blocks Starter
|
|
2
|
+
|
|
3
|
+
Keyboard-playable falling-block starter using only the public
|
|
4
|
+
`@aura3d/engine` API.
|
|
5
|
+
|
|
6
|
+
- The arcade cabinet is a typed GLB asset in `src/aura-assets.ts`.
|
|
7
|
+
- `game.fallingBlocks(...)` owns board state, movement, rotation, hold,
|
|
8
|
+
gravity, hard drop, line clear, score, replay, and checksum behavior.
|
|
9
|
+
- `tests/playable.spec.ts` drives keyboard input and verifies move, rotate,
|
|
10
|
+
hold, reset, and line clear behavior.
|
|
11
|
+
|
|
12
|
+
Run:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install
|
|
16
|
+
npm run dev
|
|
17
|
+
npm test
|
|
18
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Aura3D Falling Blocks Starter</title>
|
|
7
|
+
<style>
|
|
8
|
+
html,
|
|
9
|
+
body,
|
|
10
|
+
#app {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
margin: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
background: #05070a;
|
|
16
|
+
}
|
|
17
|
+
</style>
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<div id="app"></div>
|
|
21
|
+
<script type="module" src="./src/main.ts"></script>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aura3d-falling-blocks-starter",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite --host 127.0.0.1",
|
|
8
|
+
"typecheck": "tsc --noEmit",
|
|
9
|
+
"build": "npm run typecheck && vite build",
|
|
10
|
+
"preview": "vite preview --host 127.0.0.1",
|
|
11
|
+
"test": "playwright test tests/playable.spec.ts --workers=1"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@aura3d/engine": "1.4.1"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@playwright/test": "^1.52.0",
|
|
18
|
+
"typescript": "^5.8.3",
|
|
19
|
+
"vite": "^7.3.2"
|
|
20
|
+
}
|
|
21
|
+
}
|