@homie-rocks/studio 0.24.5 → 0.26.0

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 (45) hide show
  1. package/CHANGELOG.md +54 -1
  2. package/README.md +56 -6
  3. package/assets/animate.ts +521 -0
  4. package/assets/render-page.ts +77 -4
  5. package/bin/homie-studio.mjs +13 -4
  6. package/lib/art-cli.mjs +105 -5
  7. package/lib/art-tools.mjs +168 -1
  8. package/lib/asset-check.mjs +72 -5
  9. package/lib/characters.mjs +380 -0
  10. package/lib/clips.mjs +417 -0
  11. package/lib/decisions.mjs +38 -8
  12. package/lib/mcp-tools.mjs +1 -1
  13. package/lib/mcp.mjs +2 -2
  14. package/lib/optimise.mjs +79 -3
  15. package/lib/perf.mjs +15 -7
  16. package/lib/render3d.mjs +2 -0
  17. package/lib/rig.mjs +431 -0
  18. package/lib/scaffold.mjs +7 -0
  19. package/lib/site.mjs +14 -3
  20. package/lib/studio.mjs +18 -3
  21. package/lib/style-board.mjs +3 -1
  22. package/lib/template-history.json +78 -0
  23. package/mcp/ui/animation.js +56 -0
  24. package/mcp/ui/card.css +4 -0
  25. package/mcp/ui/cast.js +36 -2
  26. package/mcp/ui/lineup.js +7 -7
  27. package/netplay/NETPLAY.md +38 -2
  28. package/netplay/netplay.ts +58 -3
  29. package/package.json +5 -1
  30. package/site/SITE.md +19 -1
  31. package/starters/gem-rush/game.json +2 -1
  32. package/starters/gem-rush-3d/game.json +2 -1
  33. package/starters/hero-rush-3d/assets/RIGHTS.md +163 -0
  34. package/starters/hero-rush-3d/assets/manifest.json +1471 -0
  35. package/starters/hero-rush-3d/credits.json +40 -0
  36. package/starters/hero-rush-3d/game.json +12 -0
  37. package/starters/hero-rush-3d/index.html +20 -0
  38. package/starters/hero-rush-3d/lab.json +32 -0
  39. package/starters/hero-rush-3d/src/main.ts +2588 -0
  40. package/starters/hero-rush-3d/style.json +68 -0
  41. package/starters/hero-rush-3d/tunables.json +32 -0
  42. package/worker/arrival.mjs +207 -0
  43. package/worker/pages.mjs +23 -5
  44. package/worker/site.mjs +26 -4
  45. package/worker/version.mjs +1 -1
@@ -0,0 +1,163 @@
1
+ # Rights: Hero Rush 3D
2
+
3
+ Every file this game ships, where it came from, its licence and what that allows. Written by `homie-studio assets rights hero-rush-3d` from `assets/manifest.json`; do not edit it by hand.
4
+
5
+ ## What the providers' terms say
6
+
7
+ Read on the dates shown. Terms change: read the live page again before publishing anything commercial.
8
+
9
+ - **KayKit** (https://kaylousberg.itch.io/, read 2026-10-02): CC0 1.0: free for personal and commercial use, no attribution required.
10
+
11
+ ## Files
12
+
13
+ ### barbarian
14
+
15
+ - **What:** character (Players/Barbarian): `public/models/barbarian.glb`
16
+ - **From:** from the Homie starter library: KayKit Adventurers, barbarian (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0); library
17
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
18
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
19
+ - **Notes:** From the Homie starter library (kaykit-adventurers); the pack's own licence text: licenses/kaykit-adventurers.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
20
+
21
+ ### barrel
22
+
23
+ - **What:** prop (Places/Barrel): `public/models/barrel.glb`
24
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, barrel (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
25
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
26
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
27
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
28
+
29
+ ### chest
30
+
31
+ - **What:** prop (Places/Treasure Chest): `public/models/chest.glb`
32
+ - **From:** from the Homie starter library: KayKit Dungeon Remastered, chest-gold (https://github.com/KayKit-Game-Assets/KayKit-Dungeon-Remastered-1.0); library
33
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
34
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
35
+ - **Notes:** From the Homie starter library (kaykit-dungeon); the pack's own licence text: licenses/kaykit-dungeon.txt. `game new` fetches the file; the repository holds no models.
36
+
37
+ ### coin
38
+
39
+ - **What:** prop (Items/Coin): `public/models/coin.glb`
40
+ - **From:** from the Homie starter library: KayKit Dungeon Remastered, coin (https://github.com/KayKit-Game-Assets/KayKit-Dungeon-Remastered-1.0); library
41
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
42
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
43
+ - **Notes:** From the Homie starter library (kaykit-dungeon); the pack's own licence text: licenses/kaykit-dungeon.txt. `game new` fetches the file; the repository holds no models.
44
+
45
+ ### crate
46
+
47
+ - **What:** prop (Places/Crate): `public/models/crate.glb`
48
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, crate-a-big (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
49
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
50
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
51
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
52
+
53
+ ### grove
54
+
55
+ - **What:** prop (Places/Grove): `public/models/grove.glb`
56
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, trees-a-medium (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
57
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
58
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
59
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
60
+
61
+ ### knight
62
+
63
+ - **What:** character (Players/Knight): `public/models/knight.glb`
64
+ - **From:** from the Homie starter library: KayKit Adventurers, knight (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0); library
65
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
66
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
67
+ - **Notes:** From the Homie starter library (kaykit-adventurers); the pack's own licence text: licenses/kaykit-adventurers.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
68
+
69
+ ### mage
70
+
71
+ - **What:** character (Players/Mage): `public/models/mage.glb`
72
+ - **From:** from the Homie starter library: KayKit Adventurers, mage (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0); library
73
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
74
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
75
+ - **Notes:** From the Homie starter library (kaykit-adventurers); the pack's own licence text: licenses/kaykit-adventurers.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
76
+
77
+ ### pine
78
+
79
+ - **What:** prop (Places/Pine): `public/models/pine.glb`
80
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, tree-single-a (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
81
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
82
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
83
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
84
+
85
+ ### pine-round
86
+
87
+ - **What:** prop (Places/Round Pine): `public/models/pine-round.glb`
88
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, tree-single-b (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
89
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
90
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
91
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
92
+
93
+ ### rock
94
+
95
+ - **What:** prop (Places/Rock): `public/models/rock.glb`
96
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, rock-single-e (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
97
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
98
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
99
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
100
+
101
+ ### rocks
102
+
103
+ - **What:** prop (Places/Rocks): `public/models/rocks.glb`
104
+ - **From:** from the Homie starter library: KayKit Medieval Hexagon, rock-single-c (https://github.com/KayKit-Game-Assets/KayKit-Medieval-Hexagon-Pack-1.0); library
105
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
106
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
107
+ - **Notes:** From the Homie starter library (kaykit-medieval-hexagon); the pack's own licence text: licenses/kaykit-medieval-hexagon.txt. `game new` fetches the file; the repository holds no models.
108
+
109
+ ### rogue
110
+
111
+ - **What:** character (Players/Rogue): `public/models/rogue.glb`
112
+ - **From:** from the Homie starter library: KayKit Adventurers, rogue (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0); library
113
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
114
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
115
+ - **Notes:** From the Homie starter library (kaykit-adventurers); the pack's own licence text: licenses/kaykit-adventurers.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
116
+
117
+ ### rogue-hooded
118
+
119
+ - **What:** character (Players/Hooded Rogue): `public/models/rogue-hooded.glb`
120
+ - **From:** from the Homie starter library: KayKit Adventurers, rogue-hooded (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0); library
121
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
122
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
123
+ - **Notes:** From the Homie starter library (kaykit-adventurers); the pack's own licence text: licenses/kaykit-adventurers.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
124
+
125
+ ### skeleton-mage
126
+
127
+ - **What:** creature (Creatures/Skeleton Mage): `public/models/skeleton-mage.glb`
128
+ - **From:** from the Homie starter library: KayKit Skeletons, skeleton-mage (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Skeletons-1.0); library
129
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
130
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
131
+ - **Notes:** From the Homie starter library (kaykit-skeletons); the pack's own licence text: licenses/kaykit-skeletons.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
132
+
133
+ ### skeleton-minion
134
+
135
+ - **What:** creature (Creatures/Skeleton Minion): `public/models/skeleton-minion.glb`
136
+ - **From:** from the Homie starter library: KayKit Skeletons, skeleton-minion (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Skeletons-1.0); library
137
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
138
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
139
+ - **Notes:** From the Homie starter library (kaykit-skeletons); the pack's own licence text: licenses/kaykit-skeletons.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
140
+
141
+ ### skeleton-rogue
142
+
143
+ - **What:** creature (Creatures/Skeleton Rogue): `public/models/skeleton-rogue.glb`
144
+ - **From:** from the Homie starter library: KayKit Skeletons, skeleton-rogue (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Skeletons-1.0); library
145
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
146
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
147
+ - **Notes:** From the Homie starter library (kaykit-skeletons); the pack's own licence text: licenses/kaykit-skeletons.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
148
+
149
+ ### skeleton-warrior
150
+
151
+ - **What:** creature (Creatures/Skeleton Warrior): `public/models/skeleton-warrior.glb`
152
+ - **From:** from the Homie starter library: KayKit Skeletons, skeleton-warrior (https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Skeletons-1.0); library
153
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
154
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
155
+ - **Notes:** From the Homie starter library (kaykit-skeletons); the pack's own licence text: licenses/kaykit-skeletons.txt. `game new` fetches the file, makes the character phone-sized and bakes its clips; the repository holds no models.
156
+
157
+ ### torch
158
+
159
+ - **What:** prop (Places/Torch): `public/models/torch.glb`
160
+ - **From:** from the Homie starter library: KayKit Dungeon Remastered, torch-lit (https://github.com/KayKit-Game-Assets/KayKit-Dungeon-Remastered-1.0); library
161
+ - **Licence:** CC0 1.0 (public domain) (https://creativecommons.org/publicdomain/zero/1.0/); owner: KayKit
162
+ - **A remix:** a remix gets this file (fetched from this studio's site, checked by SHA-256)
163
+ - **Notes:** From the Homie starter library (kaykit-dungeon); the pack's own licence text: licenses/kaykit-dungeon.txt. `game new` fetches the file; the repository holds no models.