@pix3/cli 1.6.0 → 1.6.2
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/LICENSE +201 -201
- package/README.md +788 -754
- package/dist/index.js +208 -203
- package/dist/runtime-types.json +1 -1
- package/dist/smoke/prebuilt/{chunk-J2SJVMDO.mjs → chunk-7MZGPAUK.mjs} +1 -1
- package/dist/smoke/prebuilt/chunk-7WOFGLW3.mjs +239 -0
- package/dist/smoke/prebuilt/runtime.mjs +1 -1
- package/dist/smoke/prebuilt/smoke-worker.mjs +1 -1
- package/dist/smoke/prebuilt/tree-defaults.mjs +1 -1
- package/dist/validate/prebuilt/bundle-main.js +13 -13
- package/dist/validate/prebuilt/chunk-HKG6YI6Y.js +239 -0
- package/dist/validate/prebuilt/runtime.js +1 -1
- package/kit/files/.claude/skills/pix3-nodes/SKILL.md +210 -210
- package/kit/files/.claude/skills/pix3-nodes/reference.md +32 -24
- package/kit/files/.claude/skills/pix3-scene-format/SKILL.md +238 -235
- package/kit/files/.claude/skills/pix3-scene-format/reference.md +28 -28
- package/kit/files/.claude/skills/pix3-scripts/SKILL.md +285 -281
- package/kit/files/.claude/skills/pix3-scripts/reference.md +69 -52
- package/kit/files/.claude/skills/pix3-verify/SKILL.md +298 -256
- package/kit/files/.claude/skills/pix3-verify/reference.md +21 -21
- package/kit/files/AGENTS.md +203 -203
- package/kit/files/CLAUDE.md +1 -1
- package/kit/kit.json +2 -2
- package/package.json +54 -54
- package/templates/empty-2d/files/README.md +20 -20
- package/templates/empty-2d/files/scenes/main.pix3scene +68 -68
- package/templates/empty-2d/template.yaml +7 -7
- package/templates/empty-3d/files/README.md +20 -20
- package/templates/empty-3d/files/scenes/main.pix3scene +108 -108
- package/templates/empty-3d/template.yaml +7 -7
- package/templates/idea-blank/files/README.md +22 -22
- package/templates/idea-blank/files/scenes/main.pix3scene +37 -37
- package/templates/idea-blank/template.yaml +10 -10
- package/templates/minigame-2d/files/README.md +44 -44
- package/templates/minigame-2d/files/design/tests/reachability.json +1 -1
- package/templates/minigame-2d/files/design/tests/routines/mute-music.json +44 -44
- package/templates/minigame-2d/files/scenes/main.pix3scene +84 -84
- package/templates/minigame-2d/files/scenes/menu.pix3scene +118 -118
- package/templates/minigame-2d/files/scenes/ui/settings-window.pix3scene +138 -138
- package/templates/minigame-2d/files/scripts/GameFlow.ts +133 -133
- package/templates/minigame-2d/files/scripts/MenuFlow.ts +217 -217
- package/templates/minigame-2d/files/scripts/SettingsWindow.ts +198 -198
- package/templates/minigame-2d/template.yaml +10 -10
- package/templates/playable-2d/files/README.md +30 -30
- package/templates/playable-2d/files/design/recipe.md +83 -83
- package/templates/playable-2d/files/design/tests/reachability.json +4 -4
- package/templates/playable-2d/files/design/tests/routines/intro-to-cta.json +32 -32
- package/templates/playable-2d/files/scenes/main.pix3scene +111 -111
- package/templates/playable-2d/files/scenes/ui/end-screen.pix3scene +91 -91
- package/templates/playable-2d/files/scenes/ui/intro.pix3scene +65 -65
- package/templates/playable-2d/files/scripts/GameFlow.ts +256 -256
- package/templates/playable-2d/template.yaml +9 -9
- package/templates/playable-3d/files/README.md +32 -32
- package/templates/playable-3d/files/design/recipe.md +127 -127
- package/templates/playable-3d/files/design/tests/reachability.json +4 -4
- package/templates/playable-3d/files/design/tests/routines/intro-to-cta.json +32 -32
- package/templates/playable-3d/files/scenes/main.pix3scene +230 -230
- package/templates/playable-3d/files/scenes/ui/end-screen.pix3scene +91 -91
- package/templates/playable-3d/files/scenes/ui/intro.pix3scene +65 -65
- package/templates/playable-3d/files/scripts/GameFlow.ts +309 -309
- package/templates/playable-3d/files/scripts/GameRules.ts +290 -290
- package/templates/playable-3d/files/scripts/ScoreHud.ts +113 -113
- package/templates/playable-3d/template.yaml +9 -9
- package/templates/recipe-arena-2d/files/README.md +48 -48
- package/templates/recipe-arena-2d/files/design/recipe.md +127 -127
- package/templates/recipe-arena-2d/files/scenes/main.pix3scene +292 -292
- package/templates/recipe-arena-2d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-arena-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
- package/templates/recipe-arena-2d/files/scenes/prefabs/pickup.pix3scene +45 -45
- package/templates/recipe-arena-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-arena-2d/files/scripts/GameRules.ts +368 -368
- package/templates/recipe-arena-2d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-arena-2d/files/scripts/PlayerController.ts +151 -151
- package/templates/recipe-arena-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-arena-2d/files/scripts/Spawner.ts +214 -214
- package/templates/recipe-arena-2d/files/scripts/TouchRules.ts +174 -174
- package/templates/recipe-arena-2d/template.yaml +10 -10
- package/templates/recipe-blank-2d/files/README.md +61 -61
- package/templates/recipe-blank-2d/files/design/recipe.md +148 -148
- package/templates/recipe-blank-2d/files/design/tests/reachability.json +4 -4
- package/templates/recipe-blank-2d/files/design/tests/routines/restart.json +27 -27
- package/templates/recipe-blank-2d/files/scenes/main.pix3scene +224 -224
- package/templates/recipe-blank-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-blank-2d/files/scripts/GameRules.ts +350 -350
- package/templates/recipe-blank-2d/files/scripts/ScoreHud.ts +110 -110
- package/templates/recipe-blank-2d/template.yaml +10 -10
- package/templates/recipe-bouncer-2d/files/README.md +81 -81
- package/templates/recipe-bouncer-2d/files/design/recipe.md +146 -146
- package/templates/recipe-bouncer-2d/files/scenes/main.pix3scene +615 -615
- package/templates/recipe-bouncer-2d/files/scenes/menu.pix3scene +191 -191
- package/templates/recipe-bouncer-2d/files/scenes/ui/result.pix3scene +87 -87
- package/templates/recipe-bouncer-2d/files/scripts/BallBody.ts +298 -298
- package/templates/recipe-bouncer-2d/files/scripts/GameRules.ts +377 -377
- package/templates/recipe-bouncer-2d/files/scripts/MenuFlow.ts +109 -109
- package/templates/recipe-bouncer-2d/files/scripts/PaddleController.ts +112 -112
- package/templates/recipe-bouncer-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-bouncer-2d/files/scripts/TouchRules.ts +263 -263
- package/templates/recipe-bouncer-2d/files/scripts/ball-collision.ts +307 -307
- package/templates/recipe-bouncer-2d/template.yaml +10 -10
- package/templates/recipe-grid-3d/files/README.md +22 -22
- package/templates/recipe-grid-3d/files/design/recipe.md +110 -110
- package/templates/recipe-grid-3d/files/scenes/main.pix3scene +169 -169
- package/templates/recipe-grid-3d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-grid-3d/files/scenes/ui/result.pix3scene +105 -105
- package/templates/recipe-grid-3d/files/scripts/GridBoard.ts +319 -319
- package/templates/recipe-grid-3d/files/scripts/GridRules.ts +278 -278
- package/templates/recipe-grid-3d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-grid-3d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-grid-3d/template.yaml +10 -10
- package/templates/recipe-tapper-2d/files/README.md +39 -39
- package/templates/recipe-tapper-2d/files/design/recipe.md +132 -132
- package/templates/recipe-tapper-2d/files/design/tests/reachability.json +4 -4
- package/templates/recipe-tapper-2d/files/design/tests/routines/terminal-retry.json +23 -23
- package/templates/recipe-tapper-2d/files/scenes/main.pix3scene +269 -269
- package/templates/recipe-tapper-2d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-tapper-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
- package/templates/recipe-tapper-2d/files/scenes/prefabs/target.pix3scene +45 -45
- package/templates/recipe-tapper-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-tapper-2d/files/scripts/GameRules.ts +368 -368
- package/templates/recipe-tapper-2d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-tapper-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-tapper-2d/files/scripts/Spawner.ts +214 -214
- package/templates/recipe-tapper-2d/files/scripts/TouchRules.ts +192 -192
- package/templates/recipe-tapper-2d/template.yaml +10 -10
- package/dist/smoke/prebuilt/chunk-OJXQXIIQ.mjs +0 -239
- package/dist/validate/prebuilt/chunk-BS2OZM7U.js +0 -239
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"proven": []
|
|
4
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"proven": []
|
|
4
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "intro-to-cta",
|
|
3
|
-
"description": "Tap through the intro gate, end the run by intent, and press the CTA on the end screen.",
|
|
4
|
-
"note": "Run it with game_run {routine:'intro-to-cta'}. Steps are the game_input vocabulary (tap/key/keys/drag/hover/wait/invoke) plus {type:'command', name} for an intent the scene registered; `expect` holds the ordinary game_run predicates, ANDed and judged once after the last step. A step's `why` and this `note` are documentation — the runner ignores both — but they are why the routine also reads as a checklist. Note what is NOT here: no step calls a component method directly. Ending the run goes through the `finish` command, because a routine that called the handler would prove the handler works while skipping every wire between the player and it.",
|
|
5
|
-
"scope": "scenes/main.pix3scene",
|
|
6
|
-
"params": {},
|
|
7
|
-
"uses": ["game-root", "intro-overlay", "end-screen", "cta-button"],
|
|
8
|
-
"steps": [
|
|
9
|
-
{
|
|
10
|
-
"type": "tap",
|
|
11
|
-
"target": "intro-overlay",
|
|
12
|
-
"why": "The tap gate is the gesture under test: it hides the overlay and unlocks browser audio, so it is driven as a real tap rather than by dispatching start-game."
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"type": "command",
|
|
16
|
-
"name": "finish",
|
|
17
|
-
"why": "Reveal the end screen by intent instead of waiting out autoWinAfterSec — the timer is a placeholder every real playable replaces, and 15 s of wall clock in every run is a budget nobody gets back."
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"type": "tap",
|
|
21
|
-
"target": "cta-button",
|
|
22
|
-
"holdMs": 700,
|
|
23
|
-
"why": "Button2D needs a real press; this proves the button is on screen and hittable, not just present in the tree."
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"expect": [
|
|
27
|
-
{ "kind": "gameState", "path": "phase", "op": "eq", "value": "ended" },
|
|
28
|
-
{ "kind": "gameState", "path": "introVisible", "op": "eq", "value": false },
|
|
29
|
-
{ "kind": "gameState", "path": "endVisible", "op": "eq", "value": true },
|
|
30
|
-
{ "kind": "gameState", "path": "gameEnded", "op": "eq", "value": true }
|
|
31
|
-
]
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "intro-to-cta",
|
|
3
|
+
"description": "Tap through the intro gate, end the run by intent, and press the CTA on the end screen.",
|
|
4
|
+
"note": "Run it with game_run {routine:'intro-to-cta'}. Steps are the game_input vocabulary (tap/key/keys/drag/hover/wait/invoke) plus {type:'command', name} for an intent the scene registered; `expect` holds the ordinary game_run predicates, ANDed and judged once after the last step. A step's `why` and this `note` are documentation — the runner ignores both — but they are why the routine also reads as a checklist. Note what is NOT here: no step calls a component method directly. Ending the run goes through the `finish` command, because a routine that called the handler would prove the handler works while skipping every wire between the player and it.",
|
|
5
|
+
"scope": "scenes/main.pix3scene",
|
|
6
|
+
"params": {},
|
|
7
|
+
"uses": ["game-root", "intro-overlay", "end-screen", "cta-button"],
|
|
8
|
+
"steps": [
|
|
9
|
+
{
|
|
10
|
+
"type": "tap",
|
|
11
|
+
"target": "intro-overlay",
|
|
12
|
+
"why": "The tap gate is the gesture under test: it hides the overlay and unlocks browser audio, so it is driven as a real tap rather than by dispatching start-game."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "command",
|
|
16
|
+
"name": "finish",
|
|
17
|
+
"why": "Reveal the end screen by intent instead of waiting out autoWinAfterSec — the timer is a placeholder every real playable replaces, and 15 s of wall clock in every run is a budget nobody gets back."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "tap",
|
|
21
|
+
"target": "cta-button",
|
|
22
|
+
"holdMs": 700,
|
|
23
|
+
"why": "Button2D needs a real press; this proves the button is on screen and hittable, not just present in the tree."
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"expect": [
|
|
27
|
+
{ "kind": "gameState", "path": "phase", "op": "eq", "value": "ended" },
|
|
28
|
+
{ "kind": "gameState", "path": "introVisible", "op": "eq", "value": false },
|
|
29
|
+
{ "kind": "gameState", "path": "endVisible", "op": "eq", "value": true },
|
|
30
|
+
{ "kind": "gameState", "path": "gameEnded", "op": "eq", "value": true }
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
# Pix3 Scene File (YAML)
|
|
2
|
-
# Playable 2D blank (portrait 1080x1920): 2D gameplay placeholder plus a
|
|
3
|
-
# tap-to-start intro overlay and an end screen with a CTA button.
|
|
4
|
-
#
|
|
5
|
-
# Full-screen UI lives in its own file under scenes/ui/ and is instanced here
|
|
6
|
-
# hidden (`visible: false` = editor only; `initiallyVisible` in the overlay file
|
|
7
|
-
# is what play mode reads), so opening this scene shows the game rather than a
|
|
8
|
-
# dim or a CTA card:
|
|
9
|
-
# intro-overlay (intro-dim, intro-label) scenes/ui/intro.pix3scene
|
|
10
|
-
# end-screen (end-dim, end-label, cta-button) scenes/ui/end-screen.pix3scene
|
|
11
|
-
# Instance children keep their ids, so `GameFlow`'s introNode/endNode and every
|
|
12
|
-
# `findNode` still resolve. Node order in the tree is paint order.
|
|
13
|
-
version: 1.0.0
|
|
14
|
-
metadata:
|
|
15
|
-
author: Pix3 Template
|
|
16
|
-
description: Playable 2D blank with intro overlay and CTA end screen
|
|
17
|
-
root:
|
|
18
|
-
- id: game-root
|
|
19
|
-
type: Group2D
|
|
20
|
-
name: Game Root
|
|
21
|
-
properties:
|
|
22
|
-
width: 1080
|
|
23
|
-
height: 1920
|
|
24
|
-
layout:
|
|
25
|
-
enabled: true
|
|
26
|
-
horizontalAlign: stretch
|
|
27
|
-
verticalAlign: stretch
|
|
28
|
-
components:
|
|
29
|
-
- id: game-flow
|
|
30
|
-
type: user:GameFlow
|
|
31
|
-
enabled: true
|
|
32
|
-
config:
|
|
33
|
-
introNode: intro-overlay
|
|
34
|
-
endNode: end-screen
|
|
35
|
-
autoWinAfterSec: 15
|
|
36
|
-
children:
|
|
37
|
-
- id: background
|
|
38
|
-
type: ColorRect2D
|
|
39
|
-
name: Background
|
|
40
|
-
properties:
|
|
41
|
-
width: 1080
|
|
42
|
-
height: 1920
|
|
43
|
-
color: "#16213e"
|
|
44
|
-
transform:
|
|
45
|
-
position: [0, 0]
|
|
46
|
-
scale: [1, 1]
|
|
47
|
-
rotation: 0
|
|
48
|
-
layout:
|
|
49
|
-
enabled: true
|
|
50
|
-
horizontalAlign: stretch
|
|
51
|
-
verticalAlign: stretch
|
|
52
|
-
children: []
|
|
53
|
-
- id: hero-sprite
|
|
54
|
-
type: Sprite2D
|
|
55
|
-
name: Hero Sprite
|
|
56
|
-
properties:
|
|
57
|
-
texture: { type: 'texture', url: 'res://sprites/pix3-logo.png' }
|
|
58
|
-
width: 242
|
|
59
|
-
height: 96
|
|
60
|
-
transform:
|
|
61
|
-
position: [0, 0]
|
|
62
|
-
scale: [1, 1]
|
|
63
|
-
rotation: 0
|
|
64
|
-
layout:
|
|
65
|
-
enabled: true
|
|
66
|
-
horizontalAlign: center
|
|
67
|
-
verticalAlign: center
|
|
68
|
-
components:
|
|
69
|
-
- id: hero-bob
|
|
70
|
-
type: core:Sine
|
|
71
|
-
enabled: true
|
|
72
|
-
config:
|
|
73
|
-
amplitude: 40
|
|
74
|
-
frequency: 0.6
|
|
75
|
-
axis: y
|
|
76
|
-
children: []
|
|
77
|
-
- id: hud-label
|
|
78
|
-
type: Label2D
|
|
79
|
-
name: HUD Label
|
|
80
|
-
properties:
|
|
81
|
-
label: "PROTOTYPE"
|
|
82
|
-
labelFontSize: 40
|
|
83
|
-
labelColor: "#ffffff"
|
|
84
|
-
labelAlign: center
|
|
85
|
-
transform:
|
|
86
|
-
position: [0, 860]
|
|
87
|
-
scale: [1, 1]
|
|
88
|
-
rotation: 0
|
|
89
|
-
layout:
|
|
90
|
-
enabled: true
|
|
91
|
-
horizontalAlign: center
|
|
92
|
-
verticalAlign: top
|
|
93
|
-
children: []
|
|
94
|
-
# Tap gate — authored in scenes/ui/intro.pix3scene so this scene opens on
|
|
95
|
-
# the GAME. `visible: false` hides it in the EDITOR only; `initiallyVisible`
|
|
96
|
-
# (in the overlay file) is what play mode reads. Tick the eye to preview it
|
|
97
|
-
# composited over the game.
|
|
98
|
-
- id: intro-overlay
|
|
99
|
-
name: Intro Overlay
|
|
100
|
-
instance: res://scenes/ui/intro.pix3scene
|
|
101
|
-
properties:
|
|
102
|
-
visible: false
|
|
103
|
-
# End screen — authored in scenes/ui/end-screen.pix3scene so this scene opens
|
|
104
|
-
# on the GAME. `visible: false` hides it in the EDITOR only; `initiallyVisible`
|
|
105
|
-
# (in the overlay file) is what play mode reads. Tick the eye to preview it
|
|
106
|
-
# composited over the game.
|
|
107
|
-
- id: end-screen
|
|
108
|
-
name: End Screen
|
|
109
|
-
instance: res://scenes/ui/end-screen.pix3scene
|
|
110
|
-
properties:
|
|
111
|
-
visible: false
|
|
1
|
+
# Pix3 Scene File (YAML)
|
|
2
|
+
# Playable 2D blank (portrait 1080x1920): 2D gameplay placeholder plus a
|
|
3
|
+
# tap-to-start intro overlay and an end screen with a CTA button.
|
|
4
|
+
#
|
|
5
|
+
# Full-screen UI lives in its own file under scenes/ui/ and is instanced here
|
|
6
|
+
# hidden (`visible: false` = editor only; `initiallyVisible` in the overlay file
|
|
7
|
+
# is what play mode reads), so opening this scene shows the game rather than a
|
|
8
|
+
# dim or a CTA card:
|
|
9
|
+
# intro-overlay (intro-dim, intro-label) scenes/ui/intro.pix3scene
|
|
10
|
+
# end-screen (end-dim, end-label, cta-button) scenes/ui/end-screen.pix3scene
|
|
11
|
+
# Instance children keep their ids, so `GameFlow`'s introNode/endNode and every
|
|
12
|
+
# `findNode` still resolve. Node order in the tree is paint order.
|
|
13
|
+
version: 1.0.0
|
|
14
|
+
metadata:
|
|
15
|
+
author: Pix3 Template
|
|
16
|
+
description: Playable 2D blank with intro overlay and CTA end screen
|
|
17
|
+
root:
|
|
18
|
+
- id: game-root
|
|
19
|
+
type: Group2D
|
|
20
|
+
name: Game Root
|
|
21
|
+
properties:
|
|
22
|
+
width: 1080
|
|
23
|
+
height: 1920
|
|
24
|
+
layout:
|
|
25
|
+
enabled: true
|
|
26
|
+
horizontalAlign: stretch
|
|
27
|
+
verticalAlign: stretch
|
|
28
|
+
components:
|
|
29
|
+
- id: game-flow
|
|
30
|
+
type: user:GameFlow
|
|
31
|
+
enabled: true
|
|
32
|
+
config:
|
|
33
|
+
introNode: intro-overlay
|
|
34
|
+
endNode: end-screen
|
|
35
|
+
autoWinAfterSec: 15
|
|
36
|
+
children:
|
|
37
|
+
- id: background
|
|
38
|
+
type: ColorRect2D
|
|
39
|
+
name: Background
|
|
40
|
+
properties:
|
|
41
|
+
width: 1080
|
|
42
|
+
height: 1920
|
|
43
|
+
color: "#16213e"
|
|
44
|
+
transform:
|
|
45
|
+
position: [0, 0]
|
|
46
|
+
scale: [1, 1]
|
|
47
|
+
rotation: 0
|
|
48
|
+
layout:
|
|
49
|
+
enabled: true
|
|
50
|
+
horizontalAlign: stretch
|
|
51
|
+
verticalAlign: stretch
|
|
52
|
+
children: []
|
|
53
|
+
- id: hero-sprite
|
|
54
|
+
type: Sprite2D
|
|
55
|
+
name: Hero Sprite
|
|
56
|
+
properties:
|
|
57
|
+
texture: { type: 'texture', url: 'res://sprites/pix3-logo.png' }
|
|
58
|
+
width: 242
|
|
59
|
+
height: 96
|
|
60
|
+
transform:
|
|
61
|
+
position: [0, 0]
|
|
62
|
+
scale: [1, 1]
|
|
63
|
+
rotation: 0
|
|
64
|
+
layout:
|
|
65
|
+
enabled: true
|
|
66
|
+
horizontalAlign: center
|
|
67
|
+
verticalAlign: center
|
|
68
|
+
components:
|
|
69
|
+
- id: hero-bob
|
|
70
|
+
type: core:Sine
|
|
71
|
+
enabled: true
|
|
72
|
+
config:
|
|
73
|
+
amplitude: 40
|
|
74
|
+
frequency: 0.6
|
|
75
|
+
axis: y
|
|
76
|
+
children: []
|
|
77
|
+
- id: hud-label
|
|
78
|
+
type: Label2D
|
|
79
|
+
name: HUD Label
|
|
80
|
+
properties:
|
|
81
|
+
label: "PROTOTYPE"
|
|
82
|
+
labelFontSize: 40
|
|
83
|
+
labelColor: "#ffffff"
|
|
84
|
+
labelAlign: center
|
|
85
|
+
transform:
|
|
86
|
+
position: [0, 860]
|
|
87
|
+
scale: [1, 1]
|
|
88
|
+
rotation: 0
|
|
89
|
+
layout:
|
|
90
|
+
enabled: true
|
|
91
|
+
horizontalAlign: center
|
|
92
|
+
verticalAlign: top
|
|
93
|
+
children: []
|
|
94
|
+
# Tap gate — authored in scenes/ui/intro.pix3scene so this scene opens on
|
|
95
|
+
# the GAME. `visible: false` hides it in the EDITOR only; `initiallyVisible`
|
|
96
|
+
# (in the overlay file) is what play mode reads. Tick the eye to preview it
|
|
97
|
+
# composited over the game.
|
|
98
|
+
- id: intro-overlay
|
|
99
|
+
name: Intro Overlay
|
|
100
|
+
instance: res://scenes/ui/intro.pix3scene
|
|
101
|
+
properties:
|
|
102
|
+
visible: false
|
|
103
|
+
# End screen — authored in scenes/ui/end-screen.pix3scene so this scene opens
|
|
104
|
+
# on the GAME. `visible: false` hides it in the EDITOR only; `initiallyVisible`
|
|
105
|
+
# (in the overlay file) is what play mode reads. Tick the eye to preview it
|
|
106
|
+
# composited over the game.
|
|
107
|
+
- id: end-screen
|
|
108
|
+
name: End Screen
|
|
109
|
+
instance: res://scenes/ui/end-screen.pix3scene
|
|
110
|
+
properties:
|
|
111
|
+
visible: false
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
# Pix3 Scene File (YAML)
|
|
2
|
-
# Playable 2D — the END screen (result + CTA), in its own file so the game
|
|
3
|
-
# scene opens clean. `main.pix3scene` carries it as a one-line `instance:`
|
|
4
|
-
# reference marked `visible: false`, which hides it in the EDITOR only;
|
|
5
|
-
# `initiallyVisible: false` below is what play mode reads, and `user:GameFlow`
|
|
6
|
-
# reveals it on `finish()`.
|
|
7
|
-
#
|
|
8
|
-
# Edit it here, full-screen, in its own tab. To preview it composited over the
|
|
9
|
-
# game, tick the eye on `end-screen` in main.pix3scene — just do not commit
|
|
10
|
-
# that tick, or every iteration starts behind a CTA card again.
|
|
11
|
-
#
|
|
12
|
-
# Stable node ids (design/recipe.md is the contract — do not rename these):
|
|
13
|
-
# end-screen, end-dim, end-label, cta-button
|
|
14
|
-
version: 1.0.0
|
|
15
|
-
metadata:
|
|
16
|
-
author: Pix3 Template
|
|
17
|
-
description: End screen — dim, result headline and a PLAY NOW CTA button
|
|
18
|
-
root:
|
|
19
|
-
- id: end-screen
|
|
20
|
-
type: Group2D
|
|
21
|
-
name: End Screen
|
|
22
|
-
properties:
|
|
23
|
-
width: 1080
|
|
24
|
-
height: 1920
|
|
25
|
-
initiallyVisible: false
|
|
26
|
-
layout:
|
|
27
|
-
enabled: true
|
|
28
|
-
horizontalAlign: stretch
|
|
29
|
-
verticalAlign: stretch
|
|
30
|
-
children:
|
|
31
|
-
- id: end-dim
|
|
32
|
-
type: ColorRect2D
|
|
33
|
-
name: End Dim
|
|
34
|
-
properties:
|
|
35
|
-
width: 1080
|
|
36
|
-
height: 1920
|
|
37
|
-
color: "#000000"
|
|
38
|
-
opacity: 0.75
|
|
39
|
-
transform:
|
|
40
|
-
position: [0, 0]
|
|
41
|
-
scale: [1, 1]
|
|
42
|
-
rotation: 0
|
|
43
|
-
layout:
|
|
44
|
-
enabled: true
|
|
45
|
-
horizontalAlign: stretch
|
|
46
|
-
verticalAlign: stretch
|
|
47
|
-
children: []
|
|
48
|
-
- id: end-label
|
|
49
|
-
type: Label2D
|
|
50
|
-
name: End Label
|
|
51
|
-
properties:
|
|
52
|
-
label: "GREAT RUN!"
|
|
53
|
-
labelFontSize: 84
|
|
54
|
-
labelColor: "#ffcf33"
|
|
55
|
-
labelAlign: center
|
|
56
|
-
transform:
|
|
57
|
-
position: [0, 220]
|
|
58
|
-
scale: [1, 1]
|
|
59
|
-
rotation: 0
|
|
60
|
-
layout:
|
|
61
|
-
enabled: true
|
|
62
|
-
horizontalAlign: center
|
|
63
|
-
verticalAlign: center
|
|
64
|
-
children: []
|
|
65
|
-
- id: cta-button
|
|
66
|
-
type: Button2D
|
|
67
|
-
name: CTA Button
|
|
68
|
-
properties:
|
|
69
|
-
width: 480
|
|
70
|
-
height: 140
|
|
71
|
-
label: "PLAY NOW"
|
|
72
|
-
labelFontSize: 56
|
|
73
|
-
labelColor: "#1a1a2e"
|
|
74
|
-
backgroundColor: "#ffcf33"
|
|
75
|
-
hoverColor: "#ffe066"
|
|
76
|
-
pressedColor: "#e6b800"
|
|
77
|
-
buttonAction: cta
|
|
78
|
-
transform:
|
|
79
|
-
position: [0, -120]
|
|
80
|
-
scale: [1, 1]
|
|
81
|
-
rotation: 0
|
|
82
|
-
layout:
|
|
83
|
-
enabled: true
|
|
84
|
-
horizontalAlign: center
|
|
85
|
-
verticalAlign: center
|
|
86
|
-
components:
|
|
87
|
-
- id: cta-action
|
|
88
|
-
type: user:CtaButton
|
|
89
|
-
enabled: true
|
|
90
|
-
config: {}
|
|
91
|
-
children: []
|
|
1
|
+
# Pix3 Scene File (YAML)
|
|
2
|
+
# Playable 2D — the END screen (result + CTA), in its own file so the game
|
|
3
|
+
# scene opens clean. `main.pix3scene` carries it as a one-line `instance:`
|
|
4
|
+
# reference marked `visible: false`, which hides it in the EDITOR only;
|
|
5
|
+
# `initiallyVisible: false` below is what play mode reads, and `user:GameFlow`
|
|
6
|
+
# reveals it on `finish()`.
|
|
7
|
+
#
|
|
8
|
+
# Edit it here, full-screen, in its own tab. To preview it composited over the
|
|
9
|
+
# game, tick the eye on `end-screen` in main.pix3scene — just do not commit
|
|
10
|
+
# that tick, or every iteration starts behind a CTA card again.
|
|
11
|
+
#
|
|
12
|
+
# Stable node ids (design/recipe.md is the contract — do not rename these):
|
|
13
|
+
# end-screen, end-dim, end-label, cta-button
|
|
14
|
+
version: 1.0.0
|
|
15
|
+
metadata:
|
|
16
|
+
author: Pix3 Template
|
|
17
|
+
description: End screen — dim, result headline and a PLAY NOW CTA button
|
|
18
|
+
root:
|
|
19
|
+
- id: end-screen
|
|
20
|
+
type: Group2D
|
|
21
|
+
name: End Screen
|
|
22
|
+
properties:
|
|
23
|
+
width: 1080
|
|
24
|
+
height: 1920
|
|
25
|
+
initiallyVisible: false
|
|
26
|
+
layout:
|
|
27
|
+
enabled: true
|
|
28
|
+
horizontalAlign: stretch
|
|
29
|
+
verticalAlign: stretch
|
|
30
|
+
children:
|
|
31
|
+
- id: end-dim
|
|
32
|
+
type: ColorRect2D
|
|
33
|
+
name: End Dim
|
|
34
|
+
properties:
|
|
35
|
+
width: 1080
|
|
36
|
+
height: 1920
|
|
37
|
+
color: "#000000"
|
|
38
|
+
opacity: 0.75
|
|
39
|
+
transform:
|
|
40
|
+
position: [0, 0]
|
|
41
|
+
scale: [1, 1]
|
|
42
|
+
rotation: 0
|
|
43
|
+
layout:
|
|
44
|
+
enabled: true
|
|
45
|
+
horizontalAlign: stretch
|
|
46
|
+
verticalAlign: stretch
|
|
47
|
+
children: []
|
|
48
|
+
- id: end-label
|
|
49
|
+
type: Label2D
|
|
50
|
+
name: End Label
|
|
51
|
+
properties:
|
|
52
|
+
label: "GREAT RUN!"
|
|
53
|
+
labelFontSize: 84
|
|
54
|
+
labelColor: "#ffcf33"
|
|
55
|
+
labelAlign: center
|
|
56
|
+
transform:
|
|
57
|
+
position: [0, 220]
|
|
58
|
+
scale: [1, 1]
|
|
59
|
+
rotation: 0
|
|
60
|
+
layout:
|
|
61
|
+
enabled: true
|
|
62
|
+
horizontalAlign: center
|
|
63
|
+
verticalAlign: center
|
|
64
|
+
children: []
|
|
65
|
+
- id: cta-button
|
|
66
|
+
type: Button2D
|
|
67
|
+
name: CTA Button
|
|
68
|
+
properties:
|
|
69
|
+
width: 480
|
|
70
|
+
height: 140
|
|
71
|
+
label: "PLAY NOW"
|
|
72
|
+
labelFontSize: 56
|
|
73
|
+
labelColor: "#1a1a2e"
|
|
74
|
+
backgroundColor: "#ffcf33"
|
|
75
|
+
hoverColor: "#ffe066"
|
|
76
|
+
pressedColor: "#e6b800"
|
|
77
|
+
buttonAction: cta
|
|
78
|
+
transform:
|
|
79
|
+
position: [0, -120]
|
|
80
|
+
scale: [1, 1]
|
|
81
|
+
rotation: 0
|
|
82
|
+
layout:
|
|
83
|
+
enabled: true
|
|
84
|
+
horizontalAlign: center
|
|
85
|
+
verticalAlign: center
|
|
86
|
+
components:
|
|
87
|
+
- id: cta-action
|
|
88
|
+
type: user:CtaButton
|
|
89
|
+
enabled: true
|
|
90
|
+
config: {}
|
|
91
|
+
children: []
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
# Pix3 Scene File (YAML)
|
|
2
|
-
# Playable 2D — the tap-to-start INTRO overlay, in its own file so the
|
|
3
|
-
# game scene opens clean. `main.pix3scene` carries it as a one-line `instance:`
|
|
4
|
-
# reference marked `visible: false`, which hides it in the EDITOR only.
|
|
5
|
-
# `initiallyVisible: true` below is what play mode reads, so the gate is UP at
|
|
6
|
-
# t=0 — in an ad container that first tap is what unlocks browser audio.
|
|
7
|
-
# `user:GameFlow` hides it on the first tap.
|
|
8
|
-
#
|
|
9
|
-
# Edit it here, full-screen, in its own tab. To preview it composited over the
|
|
10
|
-
# game, tick the eye on `intro-overlay` in main.pix3scene — just do not commit
|
|
11
|
-
# that tick, or every iteration starts behind the dim again.
|
|
12
|
-
#
|
|
13
|
-
# Stable node ids (design/recipe.md is the contract — do not rename these):
|
|
14
|
-
# intro-overlay, intro-dim, intro-label
|
|
15
|
-
version: 1.0.0
|
|
16
|
-
metadata:
|
|
17
|
-
author: Pix3 Template
|
|
18
|
-
description: Intro overlay — dim plus a TAP TO START label
|
|
19
|
-
root:
|
|
20
|
-
- id: intro-overlay
|
|
21
|
-
type: Group2D
|
|
22
|
-
name: Intro Overlay
|
|
23
|
-
properties:
|
|
24
|
-
width: 1080
|
|
25
|
-
height: 1920
|
|
26
|
-
initiallyVisible: true
|
|
27
|
-
layout:
|
|
28
|
-
enabled: true
|
|
29
|
-
horizontalAlign: stretch
|
|
30
|
-
verticalAlign: stretch
|
|
31
|
-
children:
|
|
32
|
-
- id: intro-dim
|
|
33
|
-
type: ColorRect2D
|
|
34
|
-
name: Intro Dim
|
|
35
|
-
properties:
|
|
36
|
-
width: 1080
|
|
37
|
-
height: 1920
|
|
38
|
-
color: "#000000"
|
|
39
|
-
opacity: 0.65
|
|
40
|
-
transform:
|
|
41
|
-
position: [0, 0]
|
|
42
|
-
scale: [1, 1]
|
|
43
|
-
rotation: 0
|
|
44
|
-
layout:
|
|
45
|
-
enabled: true
|
|
46
|
-
horizontalAlign: stretch
|
|
47
|
-
verticalAlign: stretch
|
|
48
|
-
children: []
|
|
49
|
-
- id: intro-label
|
|
50
|
-
type: Label2D
|
|
51
|
-
name: Tap To Start
|
|
52
|
-
properties:
|
|
53
|
-
label: "TAP TO START"
|
|
54
|
-
labelFontSize: 72
|
|
55
|
-
labelColor: "#ffffff"
|
|
56
|
-
labelAlign: center
|
|
57
|
-
transform:
|
|
58
|
-
position: [0, 0]
|
|
59
|
-
scale: [1, 1]
|
|
60
|
-
rotation: 0
|
|
61
|
-
layout:
|
|
62
|
-
enabled: true
|
|
63
|
-
horizontalAlign: center
|
|
64
|
-
verticalAlign: center
|
|
65
|
-
children: []
|
|
1
|
+
# Pix3 Scene File (YAML)
|
|
2
|
+
# Playable 2D — the tap-to-start INTRO overlay, in its own file so the
|
|
3
|
+
# game scene opens clean. `main.pix3scene` carries it as a one-line `instance:`
|
|
4
|
+
# reference marked `visible: false`, which hides it in the EDITOR only.
|
|
5
|
+
# `initiallyVisible: true` below is what play mode reads, so the gate is UP at
|
|
6
|
+
# t=0 — in an ad container that first tap is what unlocks browser audio.
|
|
7
|
+
# `user:GameFlow` hides it on the first tap.
|
|
8
|
+
#
|
|
9
|
+
# Edit it here, full-screen, in its own tab. To preview it composited over the
|
|
10
|
+
# game, tick the eye on `intro-overlay` in main.pix3scene — just do not commit
|
|
11
|
+
# that tick, or every iteration starts behind the dim again.
|
|
12
|
+
#
|
|
13
|
+
# Stable node ids (design/recipe.md is the contract — do not rename these):
|
|
14
|
+
# intro-overlay, intro-dim, intro-label
|
|
15
|
+
version: 1.0.0
|
|
16
|
+
metadata:
|
|
17
|
+
author: Pix3 Template
|
|
18
|
+
description: Intro overlay — dim plus a TAP TO START label
|
|
19
|
+
root:
|
|
20
|
+
- id: intro-overlay
|
|
21
|
+
type: Group2D
|
|
22
|
+
name: Intro Overlay
|
|
23
|
+
properties:
|
|
24
|
+
width: 1080
|
|
25
|
+
height: 1920
|
|
26
|
+
initiallyVisible: true
|
|
27
|
+
layout:
|
|
28
|
+
enabled: true
|
|
29
|
+
horizontalAlign: stretch
|
|
30
|
+
verticalAlign: stretch
|
|
31
|
+
children:
|
|
32
|
+
- id: intro-dim
|
|
33
|
+
type: ColorRect2D
|
|
34
|
+
name: Intro Dim
|
|
35
|
+
properties:
|
|
36
|
+
width: 1080
|
|
37
|
+
height: 1920
|
|
38
|
+
color: "#000000"
|
|
39
|
+
opacity: 0.65
|
|
40
|
+
transform:
|
|
41
|
+
position: [0, 0]
|
|
42
|
+
scale: [1, 1]
|
|
43
|
+
rotation: 0
|
|
44
|
+
layout:
|
|
45
|
+
enabled: true
|
|
46
|
+
horizontalAlign: stretch
|
|
47
|
+
verticalAlign: stretch
|
|
48
|
+
children: []
|
|
49
|
+
- id: intro-label
|
|
50
|
+
type: Label2D
|
|
51
|
+
name: Tap To Start
|
|
52
|
+
properties:
|
|
53
|
+
label: "TAP TO START"
|
|
54
|
+
labelFontSize: 72
|
|
55
|
+
labelColor: "#ffffff"
|
|
56
|
+
labelAlign: center
|
|
57
|
+
transform:
|
|
58
|
+
position: [0, 0]
|
|
59
|
+
scale: [1, 1]
|
|
60
|
+
rotation: 0
|
|
61
|
+
layout:
|
|
62
|
+
enabled: true
|
|
63
|
+
horizontalAlign: center
|
|
64
|
+
verticalAlign: center
|
|
65
|
+
children: []
|