@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,100 +1,100 @@
|
|
|
1
|
-
# Pix3 Scene File (YAML)
|
|
2
|
-
# Arena 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: "COLLECT. DODGE. SURVIVE."
|
|
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
|
+
# Arena 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: "COLLECT. DODGE. SURVIVE."
|
|
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
|
-
# Spawned by scripts/Spawner.ts. Same shape as pickup.pix3scene — only the
|
|
3
|
-
# hitbox GROUP (and the art) differ, and that group is what turns contact into
|
|
4
|
-
# damage instead of score (see TouchRules' `rules`).
|
|
5
|
-
version: 1.0.0
|
|
6
|
-
metadata:
|
|
7
|
-
author: Pix3 Recipe
|
|
8
|
-
description: Hazard — touching 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: 104
|
|
16
|
-
height: 104
|
|
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: 44
|
|
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.25
|
|
39
|
-
easing: backOut
|
|
40
|
-
playOnStart: true
|
|
41
|
-
triggerEvent: ""
|
|
42
|
-
children: []
|
|
1
|
+
# Pix3 Prefab (a .pix3scene with exactly ONE root node).
|
|
2
|
+
# Spawned by scripts/Spawner.ts. Same shape as pickup.pix3scene — only the
|
|
3
|
+
# hitbox GROUP (and the art) differ, and that group is what turns contact into
|
|
4
|
+
# damage instead of score (see TouchRules' `rules`).
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
metadata:
|
|
7
|
+
author: Pix3 Recipe
|
|
8
|
+
description: Hazard — touching 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: 104
|
|
16
|
+
height: 104
|
|
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: 44
|
|
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.25
|
|
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 on. Component config on a prefab INSTANCE cannot be
|
|
6
|
-
# edited (the editor locks it), so every tunable lives on a plain node in
|
|
7
|
-
# main.pix3scene instead. Change the group here and in TouchRules' `rules`.
|
|
8
|
-
version: 1.0.0
|
|
9
|
-
metadata:
|
|
10
|
-
author: Pix3 Recipe
|
|
11
|
-
description: Pickup — touching it scores
|
|
12
|
-
root:
|
|
13
|
-
- id: pickup
|
|
14
|
-
type: Sprite2D
|
|
15
|
-
name: Pickup
|
|
16
|
-
properties:
|
|
17
|
-
texture: { type: 'texture', url: 'res://sprites/ph-pickup.png' }
|
|
18
|
-
width: 96
|
|
19
|
-
height: 96
|
|
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: pickup-hitbox
|
|
29
|
-
type: core:Hitbox2D
|
|
30
|
-
enabled: true
|
|
31
|
-
config:
|
|
32
|
-
shape: circle
|
|
33
|
-
radius: 46
|
|
34
|
-
group: pickup
|
|
35
|
-
debugDraw: false
|
|
36
|
-
- id: pickup-pop
|
|
37
|
-
type: core:PopIn
|
|
38
|
-
enabled: true
|
|
39
|
-
config:
|
|
40
|
-
from: 0.2
|
|
41
|
-
duration: 0.25
|
|
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 on. Component config on a prefab INSTANCE cannot be
|
|
6
|
+
# edited (the editor locks it), so every tunable lives on a plain node in
|
|
7
|
+
# main.pix3scene instead. Change the group here and in TouchRules' `rules`.
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
metadata:
|
|
10
|
+
author: Pix3 Recipe
|
|
11
|
+
description: Pickup — touching it scores
|
|
12
|
+
root:
|
|
13
|
+
- id: pickup
|
|
14
|
+
type: Sprite2D
|
|
15
|
+
name: Pickup
|
|
16
|
+
properties:
|
|
17
|
+
texture: { type: 'texture', url: 'res://sprites/ph-pickup.png' }
|
|
18
|
+
width: 96
|
|
19
|
+
height: 96
|
|
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: pickup-hitbox
|
|
29
|
+
type: core:Hitbox2D
|
|
30
|
+
enabled: true
|
|
31
|
+
config:
|
|
32
|
+
shape: circle
|
|
33
|
+
radius: 46
|
|
34
|
+
group: pickup
|
|
35
|
+
debugDraw: false
|
|
36
|
+
- id: pickup-pop
|
|
37
|
+
type: core:PopIn
|
|
38
|
+
enabled: true
|
|
39
|
+
config:
|
|
40
|
+
from: 0.2
|
|
41
|
+
duration: 0.25
|
|
42
|
+
easing: backOut
|
|
43
|
+
playOnStart: true
|
|
44
|
+
triggerEvent: ""
|
|
45
|
+
children: []
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
# Pix3 Scene File (YAML)
|
|
2
|
-
# Arena 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
|
+
# Arena 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: []
|