@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.
Files changed (126) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +788 -754
  3. package/dist/index.js +208 -203
  4. package/dist/runtime-types.json +1 -1
  5. package/dist/smoke/prebuilt/{chunk-J2SJVMDO.mjs → chunk-7MZGPAUK.mjs} +1 -1
  6. package/dist/smoke/prebuilt/chunk-7WOFGLW3.mjs +239 -0
  7. package/dist/smoke/prebuilt/runtime.mjs +1 -1
  8. package/dist/smoke/prebuilt/smoke-worker.mjs +1 -1
  9. package/dist/smoke/prebuilt/tree-defaults.mjs +1 -1
  10. package/dist/validate/prebuilt/bundle-main.js +13 -13
  11. package/dist/validate/prebuilt/chunk-HKG6YI6Y.js +239 -0
  12. package/dist/validate/prebuilt/runtime.js +1 -1
  13. package/kit/files/.claude/skills/pix3-nodes/SKILL.md +210 -210
  14. package/kit/files/.claude/skills/pix3-nodes/reference.md +32 -24
  15. package/kit/files/.claude/skills/pix3-scene-format/SKILL.md +238 -235
  16. package/kit/files/.claude/skills/pix3-scene-format/reference.md +28 -28
  17. package/kit/files/.claude/skills/pix3-scripts/SKILL.md +285 -281
  18. package/kit/files/.claude/skills/pix3-scripts/reference.md +69 -52
  19. package/kit/files/.claude/skills/pix3-verify/SKILL.md +298 -256
  20. package/kit/files/.claude/skills/pix3-verify/reference.md +21 -21
  21. package/kit/files/AGENTS.md +203 -203
  22. package/kit/files/CLAUDE.md +1 -1
  23. package/kit/kit.json +2 -2
  24. package/package.json +54 -54
  25. package/templates/empty-2d/files/README.md +20 -20
  26. package/templates/empty-2d/files/scenes/main.pix3scene +68 -68
  27. package/templates/empty-2d/template.yaml +7 -7
  28. package/templates/empty-3d/files/README.md +20 -20
  29. package/templates/empty-3d/files/scenes/main.pix3scene +108 -108
  30. package/templates/empty-3d/template.yaml +7 -7
  31. package/templates/idea-blank/files/README.md +22 -22
  32. package/templates/idea-blank/files/scenes/main.pix3scene +37 -37
  33. package/templates/idea-blank/template.yaml +10 -10
  34. package/templates/minigame-2d/files/README.md +44 -44
  35. package/templates/minigame-2d/files/design/tests/reachability.json +1 -1
  36. package/templates/minigame-2d/files/design/tests/routines/mute-music.json +44 -44
  37. package/templates/minigame-2d/files/scenes/main.pix3scene +84 -84
  38. package/templates/minigame-2d/files/scenes/menu.pix3scene +118 -118
  39. package/templates/minigame-2d/files/scenes/ui/settings-window.pix3scene +138 -138
  40. package/templates/minigame-2d/files/scripts/GameFlow.ts +133 -133
  41. package/templates/minigame-2d/files/scripts/MenuFlow.ts +217 -217
  42. package/templates/minigame-2d/files/scripts/SettingsWindow.ts +198 -198
  43. package/templates/minigame-2d/template.yaml +10 -10
  44. package/templates/playable-2d/files/README.md +30 -30
  45. package/templates/playable-2d/files/design/recipe.md +83 -83
  46. package/templates/playable-2d/files/design/tests/reachability.json +4 -4
  47. package/templates/playable-2d/files/design/tests/routines/intro-to-cta.json +32 -32
  48. package/templates/playable-2d/files/scenes/main.pix3scene +111 -111
  49. package/templates/playable-2d/files/scenes/ui/end-screen.pix3scene +91 -91
  50. package/templates/playable-2d/files/scenes/ui/intro.pix3scene +65 -65
  51. package/templates/playable-2d/files/scripts/GameFlow.ts +256 -256
  52. package/templates/playable-2d/template.yaml +9 -9
  53. package/templates/playable-3d/files/README.md +32 -32
  54. package/templates/playable-3d/files/design/recipe.md +127 -127
  55. package/templates/playable-3d/files/design/tests/reachability.json +4 -4
  56. package/templates/playable-3d/files/design/tests/routines/intro-to-cta.json +32 -32
  57. package/templates/playable-3d/files/scenes/main.pix3scene +230 -230
  58. package/templates/playable-3d/files/scenes/ui/end-screen.pix3scene +91 -91
  59. package/templates/playable-3d/files/scenes/ui/intro.pix3scene +65 -65
  60. package/templates/playable-3d/files/scripts/GameFlow.ts +309 -309
  61. package/templates/playable-3d/files/scripts/GameRules.ts +290 -290
  62. package/templates/playable-3d/files/scripts/ScoreHud.ts +113 -113
  63. package/templates/playable-3d/template.yaml +9 -9
  64. package/templates/recipe-arena-2d/files/README.md +48 -48
  65. package/templates/recipe-arena-2d/files/design/recipe.md +127 -127
  66. package/templates/recipe-arena-2d/files/scenes/main.pix3scene +292 -292
  67. package/templates/recipe-arena-2d/files/scenes/menu.pix3scene +100 -100
  68. package/templates/recipe-arena-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
  69. package/templates/recipe-arena-2d/files/scenes/prefabs/pickup.pix3scene +45 -45
  70. package/templates/recipe-arena-2d/files/scenes/ui/result.pix3scene +85 -85
  71. package/templates/recipe-arena-2d/files/scripts/GameRules.ts +368 -368
  72. package/templates/recipe-arena-2d/files/scripts/MenuFlow.ts +106 -106
  73. package/templates/recipe-arena-2d/files/scripts/PlayerController.ts +151 -151
  74. package/templates/recipe-arena-2d/files/scripts/ScoreHud.ts +94 -94
  75. package/templates/recipe-arena-2d/files/scripts/Spawner.ts +214 -214
  76. package/templates/recipe-arena-2d/files/scripts/TouchRules.ts +174 -174
  77. package/templates/recipe-arena-2d/template.yaml +10 -10
  78. package/templates/recipe-blank-2d/files/README.md +61 -61
  79. package/templates/recipe-blank-2d/files/design/recipe.md +148 -148
  80. package/templates/recipe-blank-2d/files/design/tests/reachability.json +4 -4
  81. package/templates/recipe-blank-2d/files/design/tests/routines/restart.json +27 -27
  82. package/templates/recipe-blank-2d/files/scenes/main.pix3scene +224 -224
  83. package/templates/recipe-blank-2d/files/scenes/ui/result.pix3scene +85 -85
  84. package/templates/recipe-blank-2d/files/scripts/GameRules.ts +350 -350
  85. package/templates/recipe-blank-2d/files/scripts/ScoreHud.ts +110 -110
  86. package/templates/recipe-blank-2d/template.yaml +10 -10
  87. package/templates/recipe-bouncer-2d/files/README.md +81 -81
  88. package/templates/recipe-bouncer-2d/files/design/recipe.md +146 -146
  89. package/templates/recipe-bouncer-2d/files/scenes/main.pix3scene +615 -615
  90. package/templates/recipe-bouncer-2d/files/scenes/menu.pix3scene +191 -191
  91. package/templates/recipe-bouncer-2d/files/scenes/ui/result.pix3scene +87 -87
  92. package/templates/recipe-bouncer-2d/files/scripts/BallBody.ts +298 -298
  93. package/templates/recipe-bouncer-2d/files/scripts/GameRules.ts +377 -377
  94. package/templates/recipe-bouncer-2d/files/scripts/MenuFlow.ts +109 -109
  95. package/templates/recipe-bouncer-2d/files/scripts/PaddleController.ts +112 -112
  96. package/templates/recipe-bouncer-2d/files/scripts/ScoreHud.ts +94 -94
  97. package/templates/recipe-bouncer-2d/files/scripts/TouchRules.ts +263 -263
  98. package/templates/recipe-bouncer-2d/files/scripts/ball-collision.ts +307 -307
  99. package/templates/recipe-bouncer-2d/template.yaml +10 -10
  100. package/templates/recipe-grid-3d/files/README.md +22 -22
  101. package/templates/recipe-grid-3d/files/design/recipe.md +110 -110
  102. package/templates/recipe-grid-3d/files/scenes/main.pix3scene +169 -169
  103. package/templates/recipe-grid-3d/files/scenes/menu.pix3scene +100 -100
  104. package/templates/recipe-grid-3d/files/scenes/ui/result.pix3scene +105 -105
  105. package/templates/recipe-grid-3d/files/scripts/GridBoard.ts +319 -319
  106. package/templates/recipe-grid-3d/files/scripts/GridRules.ts +278 -278
  107. package/templates/recipe-grid-3d/files/scripts/MenuFlow.ts +106 -106
  108. package/templates/recipe-grid-3d/files/scripts/ScoreHud.ts +94 -94
  109. package/templates/recipe-grid-3d/template.yaml +10 -10
  110. package/templates/recipe-tapper-2d/files/README.md +39 -39
  111. package/templates/recipe-tapper-2d/files/design/recipe.md +132 -132
  112. package/templates/recipe-tapper-2d/files/design/tests/reachability.json +4 -4
  113. package/templates/recipe-tapper-2d/files/design/tests/routines/terminal-retry.json +23 -23
  114. package/templates/recipe-tapper-2d/files/scenes/main.pix3scene +269 -269
  115. package/templates/recipe-tapper-2d/files/scenes/menu.pix3scene +100 -100
  116. package/templates/recipe-tapper-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
  117. package/templates/recipe-tapper-2d/files/scenes/prefabs/target.pix3scene +45 -45
  118. package/templates/recipe-tapper-2d/files/scenes/ui/result.pix3scene +85 -85
  119. package/templates/recipe-tapper-2d/files/scripts/GameRules.ts +368 -368
  120. package/templates/recipe-tapper-2d/files/scripts/MenuFlow.ts +106 -106
  121. package/templates/recipe-tapper-2d/files/scripts/ScoreHud.ts +94 -94
  122. package/templates/recipe-tapper-2d/files/scripts/Spawner.ts +214 -214
  123. package/templates/recipe-tapper-2d/files/scripts/TouchRules.ts +192 -192
  124. package/templates/recipe-tapper-2d/template.yaml +10 -10
  125. package/dist/smoke/prebuilt/chunk-OJXQXIIQ.mjs +0 -239
  126. package/dist/validate/prebuilt/chunk-BS2OZM7U.js +0 -239
@@ -1,191 +1,191 @@
1
- # Pix3 Scene File (YAML)
2
- # Bouncer 2D — the MENU scene. This is the project's ENTRY / export scene
3
- # (Project Settings → Default Export Scene Path): a full build and "Play Game (Entry Scene)"
4
- # boot here. PLAY transitions to the game scene (main.pix3scene) via a fade.
5
- # Wired by scripts/MenuFlow.ts. Iterate on the GAME in main.pix3scene.
6
- #
7
- # Same neon recipe as the game scene: darkest ColorRect + a tinted radial
8
- # gradient placeholder, a `PostProcess` node so bright accents bloom, and
9
- # Label2D's own glow on the text. Nothing here is a CanvasLayer2D, so the title
10
- # gets BOTH the canvas glow and the bloom — keep `menuBloomIntensity` modest or
11
- # large white type turns to mush.
12
- version: 1.0.0
13
- metadata:
14
- author: Pix3 Recipe
15
- description: Menu scene — entry point; PLAY transitions to the game
16
- root:
17
- - id: menu-post-fx
18
- type: PostProcess
19
- name: Menu Post FX
20
- properties:
21
- affect2D: true
22
- bloomEnabled: true
23
- bloomIntensity: 0.7
24
- bloomThreshold: 0.6
25
- bloomSmoothing: 0.2
26
- bloomRadius: 0.8
27
- vignetteEnabled: true
28
- vignetteOffset: 0.28
29
- vignetteDarkness: 0.55
30
- chromaticAberrationEnabled: false
31
- children: []
32
- - id: menu-root
33
- type: Group2D
34
- name: Menu Root
35
- properties:
36
- width: 1080
37
- height: 1920
38
- layout:
39
- enabled: true
40
- horizontalAlign: stretch
41
- verticalAlign: stretch
42
- components:
43
- - id: menu-flow
44
- type: user:MenuFlow
45
- enabled: true
46
- config:
47
- gameScene: res://scenes/main.pix3scene
48
- playButton: play-button
49
- children:
50
- - id: menu-background
51
- type: ColorRect2D
52
- name: Menu Background
53
- properties:
54
- width: 1080
55
- height: 1920
56
- color: "#05030f"
57
- transform:
58
- position: [0, 0]
59
- scale: [1, 1]
60
- rotation: 0
61
- layout:
62
- enabled: true
63
- horizontalAlign: stretch
64
- verticalAlign: stretch
65
- children: []
66
- - id: menu-bg-glow
67
- type: Sprite2D
68
- name: Menu Background Glow
69
- properties:
70
- texture: { type: 'texture', url: 'res://sprites/ph-bg.png' }
71
- width: 1080
72
- height: 1920
73
- effects:
74
- - type: core:tint
75
- params: { color: "#5a2df0", amount: 1 }
76
- transform:
77
- position: [0, 0]
78
- scale: [1, 1]
79
- rotation: 0
80
- layout:
81
- enabled: true
82
- horizontalAlign: stretch
83
- verticalAlign: stretch
84
- children: []
85
- # The project title is patched into this node on project creation — keep
86
- # the id. `width` is set so a long title WRAPS instead of running off
87
- # screen (Label2D word-wraps to its box; 0 would auto-size and overflow).
88
- - id: title-label
89
- type: Label2D
90
- name: Title Label
91
- properties:
92
- label: "{{PROJECT_NAME}}"
93
- labelFontSize: 112
94
- labelColor: "#ffffff"
95
- labelAlign: center
96
- width: 960
97
- glowColor: "#2ef2ff"
98
- glowStrength: 2.5
99
- transform:
100
- position: [0, 420]
101
- scale: [1, 1]
102
- rotation: 0
103
- layout:
104
- enabled: true
105
- horizontalAlign: center
106
- verticalAlign: center
107
- components:
108
- - id: title-pop
109
- type: core:PopIn
110
- enabled: true
111
- config:
112
- from: 0.55
113
- duration: 0.5
114
- easing: backOut
115
- playOnStart: true
116
- triggerEvent: ""
117
- - id: title-breathe
118
- type: core:Sine
119
- enabled: true
120
- config:
121
- amplitude: 12
122
- frequency: 0.28
123
- axis: y
124
- children: []
125
- - id: title-rule
126
- type: ColorRect2D
127
- name: Title Rule
128
- properties:
129
- width: 520
130
- height: 6
131
- color: "#2ef2ff"
132
- transform:
133
- position: [0, 352]
134
- scale: [1, 1]
135
- rotation: 0
136
- layout:
137
- enabled: true
138
- horizontalAlign: center
139
- verticalAlign: center
140
- children: []
141
- - id: subtitle-label
142
- type: Label2D
143
- name: Subtitle Label
144
- properties:
145
- label: "KEEP THE BALL ALIVE."
146
- labelFontSize: 40
147
- labelColor: "#8ffcff"
148
- labelAlign: center
149
- glowColor: "#2ef2ff"
150
- glowStrength: 1
151
- transform:
152
- position: [0, 280]
153
- scale: [1, 1]
154
- rotation: 0
155
- layout:
156
- enabled: true
157
- horizontalAlign: center
158
- verticalAlign: center
159
- children: []
160
- - id: play-button
161
- type: Button2D
162
- name: Play Button
163
- properties:
164
- width: 480
165
- height: 140
166
- label: "PLAY"
167
- labelFontSize: 56
168
- labelColor: "#0d0724"
169
- backgroundColor: "#ffd23f"
170
- hoverColor: "#ffe98a"
171
- pressedColor: "#d49a1f"
172
- buttonAction: play
173
- transform:
174
- position: [0, -60]
175
- scale: [1, 1]
176
- rotation: 0
177
- layout:
178
- enabled: true
179
- horizontalAlign: center
180
- verticalAlign: center
181
- components:
182
- - id: play-pop
183
- type: core:PopIn
184
- enabled: true
185
- config:
186
- from: 0.7
187
- duration: 0.45
188
- easing: backOut
189
- playOnStart: true
190
- triggerEvent: ""
191
- children: []
1
+ # Pix3 Scene File (YAML)
2
+ # Bouncer 2D — the MENU scene. This is the project's ENTRY / export scene
3
+ # (Project Settings → Default Export Scene Path): a full build and "Play Game (Entry Scene)"
4
+ # boot here. PLAY transitions to the game scene (main.pix3scene) via a fade.
5
+ # Wired by scripts/MenuFlow.ts. Iterate on the GAME in main.pix3scene.
6
+ #
7
+ # Same neon recipe as the game scene: darkest ColorRect + a tinted radial
8
+ # gradient placeholder, a `PostProcess` node so bright accents bloom, and
9
+ # Label2D's own glow on the text. Nothing here is a CanvasLayer2D, so the title
10
+ # gets BOTH the canvas glow and the bloom — keep `menuBloomIntensity` modest or
11
+ # large white type turns to mush.
12
+ version: 1.0.0
13
+ metadata:
14
+ author: Pix3 Recipe
15
+ description: Menu scene — entry point; PLAY transitions to the game
16
+ root:
17
+ - id: menu-post-fx
18
+ type: PostProcess
19
+ name: Menu Post FX
20
+ properties:
21
+ affect2D: true
22
+ bloomEnabled: true
23
+ bloomIntensity: 0.7
24
+ bloomThreshold: 0.6
25
+ bloomSmoothing: 0.2
26
+ bloomRadius: 0.8
27
+ vignetteEnabled: true
28
+ vignetteOffset: 0.28
29
+ vignetteDarkness: 0.55
30
+ chromaticAberrationEnabled: false
31
+ children: []
32
+ - id: menu-root
33
+ type: Group2D
34
+ name: Menu Root
35
+ properties:
36
+ width: 1080
37
+ height: 1920
38
+ layout:
39
+ enabled: true
40
+ horizontalAlign: stretch
41
+ verticalAlign: stretch
42
+ components:
43
+ - id: menu-flow
44
+ type: user:MenuFlow
45
+ enabled: true
46
+ config:
47
+ gameScene: res://scenes/main.pix3scene
48
+ playButton: play-button
49
+ children:
50
+ - id: menu-background
51
+ type: ColorRect2D
52
+ name: Menu Background
53
+ properties:
54
+ width: 1080
55
+ height: 1920
56
+ color: "#05030f"
57
+ transform:
58
+ position: [0, 0]
59
+ scale: [1, 1]
60
+ rotation: 0
61
+ layout:
62
+ enabled: true
63
+ horizontalAlign: stretch
64
+ verticalAlign: stretch
65
+ children: []
66
+ - id: menu-bg-glow
67
+ type: Sprite2D
68
+ name: Menu Background Glow
69
+ properties:
70
+ texture: { type: 'texture', url: 'res://sprites/ph-bg.png' }
71
+ width: 1080
72
+ height: 1920
73
+ effects:
74
+ - type: core:tint
75
+ params: { color: "#5a2df0", amount: 1 }
76
+ transform:
77
+ position: [0, 0]
78
+ scale: [1, 1]
79
+ rotation: 0
80
+ layout:
81
+ enabled: true
82
+ horizontalAlign: stretch
83
+ verticalAlign: stretch
84
+ children: []
85
+ # The project title is patched into this node on project creation — keep
86
+ # the id. `width` is set so a long title WRAPS instead of running off
87
+ # screen (Label2D word-wraps to its box; 0 would auto-size and overflow).
88
+ - id: title-label
89
+ type: Label2D
90
+ name: Title Label
91
+ properties:
92
+ label: "{{PROJECT_NAME}}"
93
+ labelFontSize: 112
94
+ labelColor: "#ffffff"
95
+ labelAlign: center
96
+ width: 960
97
+ glowColor: "#2ef2ff"
98
+ glowStrength: 2.5
99
+ transform:
100
+ position: [0, 420]
101
+ scale: [1, 1]
102
+ rotation: 0
103
+ layout:
104
+ enabled: true
105
+ horizontalAlign: center
106
+ verticalAlign: center
107
+ components:
108
+ - id: title-pop
109
+ type: core:PopIn
110
+ enabled: true
111
+ config:
112
+ from: 0.55
113
+ duration: 0.5
114
+ easing: backOut
115
+ playOnStart: true
116
+ triggerEvent: ""
117
+ - id: title-breathe
118
+ type: core:Sine
119
+ enabled: true
120
+ config:
121
+ amplitude: 12
122
+ frequency: 0.28
123
+ axis: y
124
+ children: []
125
+ - id: title-rule
126
+ type: ColorRect2D
127
+ name: Title Rule
128
+ properties:
129
+ width: 520
130
+ height: 6
131
+ color: "#2ef2ff"
132
+ transform:
133
+ position: [0, 352]
134
+ scale: [1, 1]
135
+ rotation: 0
136
+ layout:
137
+ enabled: true
138
+ horizontalAlign: center
139
+ verticalAlign: center
140
+ children: []
141
+ - id: subtitle-label
142
+ type: Label2D
143
+ name: Subtitle Label
144
+ properties:
145
+ label: "KEEP THE BALL ALIVE."
146
+ labelFontSize: 40
147
+ labelColor: "#8ffcff"
148
+ labelAlign: center
149
+ glowColor: "#2ef2ff"
150
+ glowStrength: 1
151
+ transform:
152
+ position: [0, 280]
153
+ scale: [1, 1]
154
+ rotation: 0
155
+ layout:
156
+ enabled: true
157
+ horizontalAlign: center
158
+ verticalAlign: center
159
+ children: []
160
+ - id: play-button
161
+ type: Button2D
162
+ name: Play Button
163
+ properties:
164
+ width: 480
165
+ height: 140
166
+ label: "PLAY"
167
+ labelFontSize: 56
168
+ labelColor: "#0d0724"
169
+ backgroundColor: "#ffd23f"
170
+ hoverColor: "#ffe98a"
171
+ pressedColor: "#d49a1f"
172
+ buttonAction: play
173
+ transform:
174
+ position: [0, -60]
175
+ scale: [1, 1]
176
+ rotation: 0
177
+ layout:
178
+ enabled: true
179
+ horizontalAlign: center
180
+ verticalAlign: center
181
+ components:
182
+ - id: play-pop
183
+ type: core:PopIn
184
+ enabled: true
185
+ config:
186
+ from: 0.7
187
+ duration: 0.45
188
+ easing: backOut
189
+ playOnStart: true
190
+ triggerEvent: ""
191
+ children: []
@@ -1,87 +1,87 @@
1
- # Pix3 Scene File (YAML)
2
- # Bouncer 2D — the RESULT overlay (win/lose), in its own file so the gameplay
3
- # scene opens clean. `main.pix3scene` carries it as a one-line
4
- # `instance:` reference marked `visible: false`, which hides it in the EDITOR
5
- # only; `user:GameRules` reveals it at run time by setting `visible`.
6
- #
7
- # Edit it here, full-screen, in its own tab. To preview it composited over the
8
- # game, tick the eye on `result-overlay` in main.pix3scene — just do not commit
9
- # that tick, or every iteration starts behind a GAME OVER screen again.
10
- #
11
- # Stable node ids (design/recipe.md is the contract — do not rename these):
12
- # result-overlay, result-label, retry-button
13
- version: 1.0.0
14
- metadata:
15
- author: Pix3 Recipe
16
- description: Result overlay — dim, glowing win/lose headline and a RETRY button
17
- root:
18
- - id: result-overlay
19
- type: Group2D
20
- name: Result Overlay
21
- properties:
22
- width: 1080
23
- height: 1920
24
- initiallyVisible: false
25
- layout:
26
- enabled: true
27
- horizontalAlign: stretch
28
- verticalAlign: stretch
29
- children:
30
- - id: result-dim
31
- type: ColorRect2D
32
- name: Result Dim
33
- properties:
34
- width: 1080
35
- height: 1920
36
- color: "#05030f"
37
- opacity: 0.78
38
- transform:
39
- position: [0, 0]
40
- scale: [1, 1]
41
- rotation: 0
42
- layout:
43
- enabled: true
44
- horizontalAlign: stretch
45
- verticalAlign: stretch
46
- children: []
47
- - id: result-label
48
- type: Label2D
49
- name: Result Label
50
- properties:
51
- label: "GAME OVER"
52
- labelFontSize: 96
53
- labelColor: "#ffffff"
54
- labelAlign: center
55
- glowColor: "#2ef2ff"
56
- glowStrength: 2.5
57
- transform:
58
- position: [0, 160]
59
- scale: [1, 1]
60
- rotation: 0
61
- layout:
62
- enabled: true
63
- horizontalAlign: center
64
- verticalAlign: center
65
- children: []
66
- - id: retry-button
67
- type: Button2D
68
- name: Retry Button
69
- properties:
70
- width: 420
71
- height: 130
72
- label: "RETRY"
73
- labelFontSize: 50
74
- labelColor: "#0d0724"
75
- backgroundColor: "#ffd23f"
76
- hoverColor: "#ffe98a"
77
- pressedColor: "#d49a1f"
78
- buttonAction: retry
79
- transform:
80
- position: [0, -60]
81
- scale: [1, 1]
82
- rotation: 0
83
- layout:
84
- enabled: true
85
- horizontalAlign: center
86
- verticalAlign: center
87
- children: []
1
+ # Pix3 Scene File (YAML)
2
+ # Bouncer 2D — the RESULT overlay (win/lose), in its own file so the gameplay
3
+ # scene opens clean. `main.pix3scene` carries it as a one-line
4
+ # `instance:` reference marked `visible: false`, which hides it in the EDITOR
5
+ # only; `user:GameRules` reveals it at run time by setting `visible`.
6
+ #
7
+ # Edit it here, full-screen, in its own tab. To preview it composited over the
8
+ # game, tick the eye on `result-overlay` in main.pix3scene — just do not commit
9
+ # that tick, or every iteration starts behind a GAME OVER screen again.
10
+ #
11
+ # Stable node ids (design/recipe.md is the contract — do not rename these):
12
+ # result-overlay, result-label, retry-button
13
+ version: 1.0.0
14
+ metadata:
15
+ author: Pix3 Recipe
16
+ description: Result overlay — dim, glowing win/lose headline and a RETRY button
17
+ root:
18
+ - id: result-overlay
19
+ type: Group2D
20
+ name: Result Overlay
21
+ properties:
22
+ width: 1080
23
+ height: 1920
24
+ initiallyVisible: false
25
+ layout:
26
+ enabled: true
27
+ horizontalAlign: stretch
28
+ verticalAlign: stretch
29
+ children:
30
+ - id: result-dim
31
+ type: ColorRect2D
32
+ name: Result Dim
33
+ properties:
34
+ width: 1080
35
+ height: 1920
36
+ color: "#05030f"
37
+ opacity: 0.78
38
+ transform:
39
+ position: [0, 0]
40
+ scale: [1, 1]
41
+ rotation: 0
42
+ layout:
43
+ enabled: true
44
+ horizontalAlign: stretch
45
+ verticalAlign: stretch
46
+ children: []
47
+ - id: result-label
48
+ type: Label2D
49
+ name: Result Label
50
+ properties:
51
+ label: "GAME OVER"
52
+ labelFontSize: 96
53
+ labelColor: "#ffffff"
54
+ labelAlign: center
55
+ glowColor: "#2ef2ff"
56
+ glowStrength: 2.5
57
+ transform:
58
+ position: [0, 160]
59
+ scale: [1, 1]
60
+ rotation: 0
61
+ layout:
62
+ enabled: true
63
+ horizontalAlign: center
64
+ verticalAlign: center
65
+ children: []
66
+ - id: retry-button
67
+ type: Button2D
68
+ name: Retry Button
69
+ properties:
70
+ width: 420
71
+ height: 130
72
+ label: "RETRY"
73
+ labelFontSize: 50
74
+ labelColor: "#0d0724"
75
+ backgroundColor: "#ffd23f"
76
+ hoverColor: "#ffe98a"
77
+ pressedColor: "#d49a1f"
78
+ buttonAction: retry
79
+ transform:
80
+ position: [0, -60]
81
+ scale: [1, 1]
82
+ rotation: 0
83
+ layout:
84
+ enabled: true
85
+ horizontalAlign: center
86
+ verticalAlign: center
87
+ children: []