@pix3/cli 1.6.0 → 1.6.3

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-CBFYKDS7.mjs} +1 -1
  6. package/dist/smoke/prebuilt/chunk-VJHJ5BCO.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-CFQFEI52.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 +39 -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 +43 -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,100 +1,100 @@
1
- # Pix3 Scene File (YAML)
2
- # Tapper 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
- version: 1.0.0
7
- metadata:
8
- author: Pix3 Recipe
9
- description: Menu scene — entry point; PLAY transitions to the game
10
- root:
11
- - id: menu-root
12
- type: Group2D
13
- name: Menu Root
14
- properties:
15
- width: 1080
16
- height: 1920
17
- layout:
18
- enabled: true
19
- horizontalAlign: stretch
20
- verticalAlign: stretch
21
- components:
22
- - id: menu-flow
23
- type: user:MenuFlow
24
- enabled: true
25
- config:
26
- gameScene: res://scenes/main.pix3scene
27
- playButton: play-button
28
- children:
29
- - id: menu-background
30
- type: ColorRect2D
31
- name: Menu Background
32
- properties:
33
- width: 1080
34
- height: 1920
35
- color: "#141a2e"
36
- transform:
37
- position: [0, 0]
38
- scale: [1, 1]
39
- rotation: 0
40
- layout:
41
- enabled: true
42
- horizontalAlign: stretch
43
- verticalAlign: stretch
44
- children: []
45
- - id: title-label
46
- type: Label2D
47
- name: Title Label
48
- properties:
49
- label: "{{PROJECT_NAME}}"
50
- labelFontSize: 96
51
- labelColor: "#ffffff"
52
- labelAlign: center
53
- transform:
54
- position: [0, 420]
55
- scale: [1, 1]
56
- rotation: 0
57
- layout:
58
- enabled: true
59
- horizontalAlign: center
60
- verticalAlign: center
61
- children: []
62
- - id: subtitle-label
63
- type: Label2D
64
- name: Subtitle Label
65
- properties:
66
- label: "TAP FAST. MISS NOTHING."
67
- labelFontSize: 40
68
- labelColor: "#93a3c9"
69
- labelAlign: center
70
- transform:
71
- position: [0, 300]
72
- scale: [1, 1]
73
- rotation: 0
74
- layout:
75
- enabled: true
76
- horizontalAlign: center
77
- verticalAlign: center
78
- children: []
79
- - id: play-button
80
- type: Button2D
81
- name: Play Button
82
- properties:
83
- width: 480
84
- height: 140
85
- label: "PLAY"
86
- labelFontSize: 56
87
- labelColor: "#141a2e"
88
- backgroundColor: "#f5ae39"
89
- hoverColor: "#ffc862"
90
- pressedColor: "#d4922a"
91
- buttonAction: play
92
- transform:
93
- position: [0, -60]
94
- scale: [1, 1]
95
- rotation: 0
96
- layout:
97
- enabled: true
98
- horizontalAlign: center
99
- verticalAlign: center
100
- children: []
1
+ # Pix3 Scene File (YAML)
2
+ # Tapper 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
+ version: 1.0.0
7
+ metadata:
8
+ author: Pix3 Recipe
9
+ description: Menu scene — entry point; PLAY transitions to the game
10
+ root:
11
+ - id: menu-root
12
+ type: Group2D
13
+ name: Menu Root
14
+ properties:
15
+ width: 1080
16
+ height: 1920
17
+ layout:
18
+ enabled: true
19
+ horizontalAlign: stretch
20
+ verticalAlign: stretch
21
+ components:
22
+ - id: menu-flow
23
+ type: user:MenuFlow
24
+ enabled: true
25
+ config:
26
+ gameScene: res://scenes/main.pix3scene
27
+ playButton: play-button
28
+ children:
29
+ - id: menu-background
30
+ type: ColorRect2D
31
+ name: Menu Background
32
+ properties:
33
+ width: 1080
34
+ height: 1920
35
+ color: "#141a2e"
36
+ transform:
37
+ position: [0, 0]
38
+ scale: [1, 1]
39
+ rotation: 0
40
+ layout:
41
+ enabled: true
42
+ horizontalAlign: stretch
43
+ verticalAlign: stretch
44
+ children: []
45
+ - id: title-label
46
+ type: Label2D
47
+ name: Title Label
48
+ properties:
49
+ label: "{{PROJECT_NAME}}"
50
+ labelFontSize: 96
51
+ labelColor: "#ffffff"
52
+ labelAlign: center
53
+ transform:
54
+ position: [0, 420]
55
+ scale: [1, 1]
56
+ rotation: 0
57
+ layout:
58
+ enabled: true
59
+ horizontalAlign: center
60
+ verticalAlign: center
61
+ children: []
62
+ - id: subtitle-label
63
+ type: Label2D
64
+ name: Subtitle Label
65
+ properties:
66
+ label: "TAP FAST. MISS NOTHING."
67
+ labelFontSize: 40
68
+ labelColor: "#93a3c9"
69
+ labelAlign: center
70
+ transform:
71
+ position: [0, 300]
72
+ scale: [1, 1]
73
+ rotation: 0
74
+ layout:
75
+ enabled: true
76
+ horizontalAlign: center
77
+ verticalAlign: center
78
+ children: []
79
+ - id: play-button
80
+ type: Button2D
81
+ name: Play Button
82
+ properties:
83
+ width: 480
84
+ height: 140
85
+ label: "PLAY"
86
+ labelFontSize: 56
87
+ labelColor: "#141a2e"
88
+ backgroundColor: "#f5ae39"
89
+ hoverColor: "#ffc862"
90
+ pressedColor: "#d4922a"
91
+ buttonAction: play
92
+ transform:
93
+ position: [0, -60]
94
+ scale: [1, 1]
95
+ rotation: 0
96
+ layout:
97
+ enabled: true
98
+ horizontalAlign: center
99
+ verticalAlign: center
100
+ children: []
@@ -1,42 +1,42 @@
1
- # Pix3 Prefab (a .pix3scene with exactly ONE root node).
2
- # The "bad" object: same shape as target.pix3scene, different hitbox GROUP — and
3
- # that group alone is what makes tapping it cost a life instead of scoring (see
4
- # TouchRules' `rules`).
5
- version: 1.0.0
6
- metadata:
7
- author: Pix3 Recipe
8
- description: Hazard — tapping it costs a life
9
- root:
10
- - id: hazard
11
- type: Sprite2D
12
- name: Hazard
13
- properties:
14
- texture: { type: 'texture', url: 'res://sprites/ph-hazard.png' }
15
- width: 150
16
- height: 150
17
- effects:
18
- - type: core:tint
19
- params: { color: "#ff4d6d", amount: 1 }
20
- transform:
21
- position: [0, 0]
22
- scale: [1, 1]
23
- rotation: 0
24
- components:
25
- - id: hazard-hitbox
26
- type: core:Hitbox2D
27
- enabled: true
28
- config:
29
- shape: circle
30
- radius: 70
31
- group: hazard
32
- debugDraw: false
33
- - id: hazard-pop
34
- type: core:PopIn
35
- enabled: true
36
- config:
37
- from: 0.2
38
- duration: 0.22
39
- easing: backOut
40
- playOnStart: true
41
- triggerEvent: ""
42
- children: []
1
+ # Pix3 Prefab (a .pix3scene with exactly ONE root node).
2
+ # The "bad" object: same shape as target.pix3scene, different hitbox GROUP — and
3
+ # that group alone is what makes tapping it cost a life instead of scoring (see
4
+ # TouchRules' `rules`).
5
+ version: 1.0.0
6
+ metadata:
7
+ author: Pix3 Recipe
8
+ description: Hazard — tapping it costs a life
9
+ root:
10
+ - id: hazard
11
+ type: Sprite2D
12
+ name: Hazard
13
+ properties:
14
+ texture: { type: 'texture', url: 'res://sprites/ph-hazard.png' }
15
+ width: 150
16
+ height: 150
17
+ effects:
18
+ - type: core:tint
19
+ params: { color: "#ff4d6d", amount: 1 }
20
+ transform:
21
+ position: [0, 0]
22
+ scale: [1, 1]
23
+ rotation: 0
24
+ components:
25
+ - id: hazard-hitbox
26
+ type: core:Hitbox2D
27
+ enabled: true
28
+ config:
29
+ shape: circle
30
+ radius: 70
31
+ group: hazard
32
+ debugDraw: false
33
+ - id: hazard-pop
34
+ type: core:PopIn
35
+ enabled: true
36
+ config:
37
+ from: 0.2
38
+ duration: 0.22
39
+ easing: backOut
40
+ playOnStart: true
41
+ triggerEvent: ""
42
+ children: []
@@ -1,45 +1,45 @@
1
- # Pix3 Prefab (a .pix3scene with exactly ONE root node).
2
- # Spawned by scripts/Spawner.ts via scene.instantiate().
3
- #
4
- # It carries only FIXED defaults — above all its `core:Hitbox2D` GROUP, which is
5
- # what TouchRules matches a tap against. Component config on a prefab INSTANCE
6
- # cannot be edited (the editor locks it), so every tunable lives on a plain node
7
- # in main.pix3scene instead. Change the group here and in TouchRules' `rules`.
8
- version: 1.0.0
9
- metadata:
10
- author: Pix3 Recipe
11
- description: Target — tapping it scores
12
- root:
13
- - id: target
14
- type: Sprite2D
15
- name: Target
16
- properties:
17
- texture: { type: 'texture', url: 'res://sprites/ph-target.png' }
18
- width: 150
19
- height: 150
20
- effects:
21
- - type: core:tint
22
- params: { color: "#7ee787", amount: 1 }
23
- transform:
24
- position: [0, 0]
25
- scale: [1, 1]
26
- rotation: 0
27
- components:
28
- - id: target-hitbox
29
- type: core:Hitbox2D
30
- enabled: true
31
- config:
32
- shape: circle
33
- radius: 74
34
- group: target
35
- debugDraw: false
36
- - id: target-pop
37
- type: core:PopIn
38
- enabled: true
39
- config:
40
- from: 0.2
41
- duration: 0.22
42
- easing: backOut
43
- playOnStart: true
44
- triggerEvent: ""
45
- children: []
1
+ # Pix3 Prefab (a .pix3scene with exactly ONE root node).
2
+ # Spawned by scripts/Spawner.ts via scene.instantiate().
3
+ #
4
+ # It carries only FIXED defaults — above all its `core:Hitbox2D` GROUP, which is
5
+ # what TouchRules matches a tap against. Component config on a prefab INSTANCE
6
+ # cannot be edited (the editor locks it), so every tunable lives on a plain node
7
+ # in main.pix3scene instead. Change the group here and in TouchRules' `rules`.
8
+ version: 1.0.0
9
+ metadata:
10
+ author: Pix3 Recipe
11
+ description: Target — tapping it scores
12
+ root:
13
+ - id: target
14
+ type: Sprite2D
15
+ name: Target
16
+ properties:
17
+ texture: { type: 'texture', url: 'res://sprites/ph-target.png' }
18
+ width: 150
19
+ height: 150
20
+ effects:
21
+ - type: core:tint
22
+ params: { color: "#7ee787", amount: 1 }
23
+ transform:
24
+ position: [0, 0]
25
+ scale: [1, 1]
26
+ rotation: 0
27
+ components:
28
+ - id: target-hitbox
29
+ type: core:Hitbox2D
30
+ enabled: true
31
+ config:
32
+ shape: circle
33
+ radius: 74
34
+ group: target
35
+ debugDraw: false
36
+ - id: target-pop
37
+ type: core:PopIn
38
+ enabled: true
39
+ config:
40
+ from: 0.2
41
+ duration: 0.22
42
+ easing: backOut
43
+ playOnStart: true
44
+ triggerEvent: ""
45
+ children: []
@@ -1,85 +1,85 @@
1
- # Pix3 Scene File (YAML)
2
- # Tapper 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, 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: "#000000"
37
- opacity: 0.7
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: 88
53
- labelColor: "#ffffff"
54
- labelAlign: center
55
- transform:
56
- position: [0, 160]
57
- scale: [1, 1]
58
- rotation: 0
59
- layout:
60
- enabled: true
61
- horizontalAlign: center
62
- verticalAlign: center
63
- children: []
64
- - id: retry-button
65
- type: Button2D
66
- name: Retry Button
67
- properties:
68
- width: 420
69
- height: 130
70
- label: "RETRY"
71
- labelFontSize: 50
72
- labelColor: "#141a2e"
73
- backgroundColor: "#f5ae39"
74
- hoverColor: "#ffc862"
75
- pressedColor: "#d4922a"
76
- buttonAction: retry
77
- transform:
78
- position: [0, -60]
79
- scale: [1, 1]
80
- rotation: 0
81
- layout:
82
- enabled: true
83
- horizontalAlign: center
84
- verticalAlign: center
85
- children: []
1
+ # Pix3 Scene File (YAML)
2
+ # Tapper 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, 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: "#000000"
37
+ opacity: 0.7
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: 88
53
+ labelColor: "#ffffff"
54
+ labelAlign: center
55
+ transform:
56
+ position: [0, 160]
57
+ scale: [1, 1]
58
+ rotation: 0
59
+ layout:
60
+ enabled: true
61
+ horizontalAlign: center
62
+ verticalAlign: center
63
+ children: []
64
+ - id: retry-button
65
+ type: Button2D
66
+ name: Retry Button
67
+ properties:
68
+ width: 420
69
+ height: 130
70
+ label: "RETRY"
71
+ labelFontSize: 50
72
+ labelColor: "#141a2e"
73
+ backgroundColor: "#f5ae39"
74
+ hoverColor: "#ffc862"
75
+ pressedColor: "#d4922a"
76
+ buttonAction: retry
77
+ transform:
78
+ position: [0, -60]
79
+ scale: [1, 1]
80
+ rotation: 0
81
+ layout:
82
+ enabled: true
83
+ horizontalAlign: center
84
+ verticalAlign: center
85
+ children: []