incanto 0.1.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 (138) hide show
  1. package/LICENSE +30 -0
  2. package/README.md +36 -0
  3. package/THIRD-PARTY-NOTICES.md +88 -0
  4. package/assets/audio/attacked.mp3 +0 -0
  5. package/assets/audio/explosion.mp3 +0 -0
  6. package/assets/audio/gold_loot.mp3 +0 -0
  7. package/assets/audio/heal.mp3 +0 -0
  8. package/assets/audio/hit_metal_bang.mp3 +0 -0
  9. package/assets/audio/ice_spear.mp3 +0 -0
  10. package/assets/audio/monster_died.mp3 +0 -0
  11. package/assets/audio/slash.mp3 +0 -0
  12. package/assets/audio/smite.mp3 +0 -0
  13. package/assets/audio/spells_cast.mp3 +0 -0
  14. package/assets/audio/ui_click.wav +0 -0
  15. package/assets/audio/walk.mp3 +0 -0
  16. package/assets/catalog.json +390 -0
  17. package/assets/characters/2dbasic.json +41 -0
  18. package/assets/characters/2dbasic.png +0 -0
  19. package/assets/characters/ghost.json +46 -0
  20. package/assets/characters/ghost.png +0 -0
  21. package/assets/characters/goblin.json +40 -0
  22. package/assets/characters/goblin.png +0 -0
  23. package/assets/characters/medieval-knight.json +41 -0
  24. package/assets/characters/medieval-knight.png +0 -0
  25. package/assets/effects/swoosh.png +0 -0
  26. package/assets/items/box.png +0 -0
  27. package/assets/items/buff_potion.png +0 -0
  28. package/assets/items/coin.png +0 -0
  29. package/assets/items/gem.png +0 -0
  30. package/assets/items/gold.png +0 -0
  31. package/assets/items/hp_potion.png +0 -0
  32. package/assets/items/locked_item_box.png +0 -0
  33. package/assets/items/map.png +0 -0
  34. package/assets/items/resurrection_potion.png +0 -0
  35. package/assets/items/super_box.png +0 -0
  36. package/assets/items/trap.png +0 -0
  37. package/assets/tiles/floor00.jpg +0 -0
  38. package/assets/tiles/minecraft-tiles.png +0 -0
  39. package/assets/tiles/wall00.jpg +0 -0
  40. package/assets/vegetation/ash_color.png +0 -0
  41. package/assets/vegetation/aspen_color.png +0 -0
  42. package/assets/vegetation/bark/birch_color_1k.jpg +0 -0
  43. package/assets/vegetation/bark/birch_normal_1k.jpg +0 -0
  44. package/assets/vegetation/bark/birch_roughness_1k.jpg +0 -0
  45. package/assets/vegetation/bark/oak_color_1k.jpg +0 -0
  46. package/assets/vegetation/bark/oak_normal_1k.jpg +0 -0
  47. package/assets/vegetation/bark/oak_roughness_1k.jpg +0 -0
  48. package/assets/vegetation/bark/pine_color_1k.jpg +0 -0
  49. package/assets/vegetation/bark/pine_normal_1k.jpg +0 -0
  50. package/assets/vegetation/bark/pine_roughness_1k.jpg +0 -0
  51. package/assets/vegetation/ground/dirt_color.jpg +0 -0
  52. package/assets/vegetation/ground/dirt_normal.jpg +0 -0
  53. package/assets/vegetation/ground/grass.jpg +0 -0
  54. package/assets/vegetation/oak_color.png +0 -0
  55. package/assets/vegetation/pine_color.png +0 -0
  56. package/bin/incanto-assets.mjs +107 -0
  57. package/bin/incanto-check.mjs +107 -0
  58. package/bin/incanto-editor.mjs +343 -0
  59. package/bin/incanto-env.mjs +144 -0
  60. package/bin/incanto-model.mjs +296 -0
  61. package/bin/incanto-play.mjs +219 -0
  62. package/bin/incanto-skills.mjs +71 -0
  63. package/dist/2d.d.ts +642 -0
  64. package/dist/2d.js +44 -0
  65. package/dist/3d.d.ts +1860 -0
  66. package/dist/3d.js +5 -0
  67. package/dist/agent8-DzU2fFyH.js +129 -0
  68. package/dist/audio-player-DqUR3XFs.d.ts +110 -0
  69. package/dist/behavior-BAQq7HGM.d.ts +851 -0
  70. package/dist/create-game-BdjpTHrW.js +1725 -0
  71. package/dist/create-game-CZHROKcT.js +527 -0
  72. package/dist/debug-draw-CZmOYjL2.js +13 -0
  73. package/dist/debug.d.ts +66 -0
  74. package/dist/debug.js +658 -0
  75. package/dist/duplicate-DP2WPYom.js +22 -0
  76. package/dist/env.d.ts +430 -0
  77. package/dist/env.js +3152 -0
  78. package/dist/errors-BMFaY68Q.d.ts +33 -0
  79. package/dist/errors-BpWbnbb_.js +13 -0
  80. package/dist/gameplay-Ccruc3Wd.js +1501 -0
  81. package/dist/gameplay.d.ts +543 -0
  82. package/dist/gameplay.js +2 -0
  83. package/dist/heightmap-CroQPEER.js +185 -0
  84. package/dist/index.d.ts +305 -0
  85. package/dist/index.js +62 -0
  86. package/dist/json-BLk7H2Qa.js +30 -0
  87. package/dist/loader-CGs_G-r0.js +919 -0
  88. package/dist/loader-Mo0KghCv.d.ts +41 -0
  89. package/dist/net.d.ts +427 -0
  90. package/dist/net.js +772 -0
  91. package/dist/noise-CGUMx44x.js +82 -0
  92. package/dist/particle-sim-CbN4YUuH.d.ts +63 -0
  93. package/dist/particle-sim-DYuSUxvK.js +1319 -0
  94. package/dist/physics-2d-KuMWPTf6.js +288 -0
  95. package/dist/physics-3d-Dl67vOLT.js +434 -0
  96. package/dist/react.d.ts +65 -0
  97. package/dist/react.js +209 -0
  98. package/dist/register-BuUV1_KB.js +561 -0
  99. package/dist/register-CNlYAS1_.js +10634 -0
  100. package/dist/register-DPEV9_9t.js +851 -0
  101. package/dist/register-Dasmnurl.js +374 -0
  102. package/dist/registry-BVJ2HbCn.js +132 -0
  103. package/dist/rng-DP-SR7eg.js +38 -0
  104. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  105. package/dist/schema-CcoWb32N.d.ts +104 -0
  106. package/dist/test.d.ts +158 -0
  107. package/dist/test.js +275 -0
  108. package/dist/touch-031PxtCR.js +208 -0
  109. package/dist/vite.d.ts +26 -0
  110. package/dist/vite.js +57 -0
  111. package/editor/assets/GameServer-C56iOUgF.js +1 -0
  112. package/editor/assets/agent8-Bp7QFI7v.js +1 -0
  113. package/editor/assets/index-DF3tMeKJ.css +1 -0
  114. package/editor/assets/index-Dl2pjA8e.js +7365 -0
  115. package/editor/assets/rapier-CEuLKeCu.js +1 -0
  116. package/editor/assets/rapier-DE6a0vmv.js +1 -0
  117. package/editor/index.html +169 -0
  118. package/package.json +97 -0
  119. package/schemas/scene.schema.json +4254 -0
  120. package/skills/README.md +9 -0
  121. package/skills/incanto-3d-character.md +229 -0
  122. package/skills/incanto-3d-models.md +151 -0
  123. package/skills/incanto-assets.md +118 -0
  124. package/skills/incanto-audio.md +309 -0
  125. package/skills/incanto-behaviors-and-scripts.md +169 -0
  126. package/skills/incanto-building-2d-games.md +242 -0
  127. package/skills/incanto-building-3d-games.md +245 -0
  128. package/skills/incanto-editor.md +163 -0
  129. package/skills/incanto-environment.md +743 -0
  130. package/skills/incanto-gameplay-behaviors.md +707 -0
  131. package/skills/incanto-multiplayer.md +264 -0
  132. package/skills/incanto-node-reference.md +797 -0
  133. package/skills/incanto-physics-and-input.md +164 -0
  134. package/skills/incanto-scene-json-authoring.md +325 -0
  135. package/skills/incanto-verifying-your-game.md +191 -0
  136. package/skills/incanto-web-integration.md +96 -0
  137. package/templates/agent8-server.js +84 -0
  138. package/templates/agent8-server.ts +138 -0
@@ -0,0 +1,169 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Incanto Scene Editor</title>
7
+ <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><rect width='16' height='16' rx='3' fill='%236ee7dc'/><text x='8' y='12' text-anchor='middle' font-size='11' font-family='monospace' fill='%230e1018'>i</text></svg>" />
8
+ <script type="module" crossorigin src="./assets/index-Dl2pjA8e.js"></script>
9
+ <link rel="modulepreload" crossorigin href="./assets/GameServer-C56iOUgF.js">
10
+ <link rel="stylesheet" crossorigin href="./assets/index-DF3tMeKJ.css">
11
+ </head>
12
+ <body>
13
+ <header id="topbar">
14
+ <div class="brand">
15
+ <span class="brand-mark">in</span>
16
+ <strong>incanto</strong><span class="brand-sub">editor</span>
17
+ </div>
18
+ <div id="file-chip" title="">
19
+ <svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg>
20
+ <span id="file-path"></span>
21
+ </div>
22
+ <span id="engine-version" class="pill"></span>
23
+ <span class="spacer"></span>
24
+ <button type="button" id="lang-btn" class="ghost" title="Language / 언어">
25
+ <span id="lang-current">EN</span>
26
+ <svg aria-hidden="true" width="9" height="9" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"/></svg>
27
+ </button>
28
+ <button type="button" id="docs-btn" class="ghost" title="Node documentation">
29
+ <svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
30
+ docs
31
+ </button>
32
+ <button type="button" id="scenes-btn" class="ghost" hidden>
33
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2"/></svg>
34
+ scenes
35
+ </button>
36
+ <button type="button" id="fit-btn" class="ghost" title="Zoom to fit (F)">⌖ fit</button>
37
+ <button type="button" id="undo-btn" class="ghost" title="Undo (Ctrl/Cmd+Z)" disabled>↩ undo</button>
38
+ <button type="button" id="play-btn" class="play" title="Run the scene with physics + input">
39
+ <svg aria-hidden="true" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M8 5v14l11-7z"/></svg>
40
+ play
41
+ </button>
42
+ <button type="button" id="save-btn" class="primary" disabled>save</button>
43
+ </header>
44
+ <div id="error-banner" hidden></div>
45
+ <div id="play-notice" hidden></div>
46
+ <main>
47
+ <aside id="tree-pane">
48
+ <button type="button" class="pane-title explorer-section section-toggle" data-section="assets">
49
+ <span class="chev"><svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4"><path d="m6 9 6 6 6-6"/></svg></span> assets
50
+ <span class="spacer"></span>
51
+ <span id="group-add-btn" class="ghost section-add" title="Add a group (folder)" role="button">
52
+ <svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 6a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="M12 11v6M9 14h6"/></svg>
53
+ </span>
54
+ <span id="asset-add-btn" class="ghost section-add" title="Add an asset" role="button">+</span>
55
+ </button>
56
+ <div id="asset-tree" data-body="assets"></div>
57
+ <button type="button" class="pane-title explorer-section section-toggle" data-section="scene">
58
+ <span class="chev"><svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4"><path d="m6 9 6 6 6-6"/></svg></span> scene
59
+ </button>
60
+ <div id="scene-body" data-body="scene">
61
+ <div id="tree"></div>
62
+ <div id="tree-actions">
63
+ <select id="add-type" title="Node type to add"></select>
64
+ <button type="button" id="add-btn" class="ghost" title="Add child to the selected node">+</button>
65
+ <button type="button" id="generate-btn" class="ghost" title="Generate an environment under the selected node">
66
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M18.4 5.6l-2.8 2.8M8.4 15.6l-2.8 2.8"/></svg>
67
+ </button>
68
+ <button type="button" id="delete-btn" class="ghost danger" title="Delete the selected node">✕</button>
69
+ </div>
70
+ </div>
71
+ </aside>
72
+ <section id="viewport-pane">
73
+ <div id="mode-toolbar">
74
+ <button type="button" id="tool-move" class="tool active" title="Move (W)">
75
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20M8 6l4-4 4 4M8 18l4 4 4-4M6 8l-4 4 4 4M18 8l4 4-4 4"/></svg>
76
+ </button>
77
+ <button type="button" id="tool-rotate" class="tool" title="Rotate (E)">
78
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12a9 9 0 1 1-3-6.7"/><path d="M21 3v5h-5"/></svg>
79
+ </button>
80
+ <button type="button" id="tool-scale" class="tool" title="Scale (R)">
81
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 3 9 15"/><path d="M21 8V3h-5"/><rect x="3" y="13" width="8" height="8" rx="1"/></svg>
82
+ </button>
83
+ <span class="tool-divider"></span>
84
+ <button type="button" id="tool-colliders" class="tool active" title="Show colliders">
85
+ <svg aria-hidden="true" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="3 2"><rect x="4" y="4" width="16" height="16" rx="2"/></svg>
86
+ </button>
87
+ </div>
88
+ <canvas id="viewport"></canvas>
89
+ <canvas id="overlay"></canvas>
90
+ <canvas id="play-canvas" hidden></canvas>
91
+ <div id="hints-dock">
92
+ <div id="hints" class="hints">
93
+ <span><b>click</b> select</span><span><b>drag</b> move</span><span><b>wheel</b> zoom</span><span><b>W/E/R</b> move/rotate/scale</span><span><b>⇧</b> snap</span><span><b>right-drag</b> pan</span>
94
+ </div>
95
+ <div id="hints-3d" class="hints" hidden>
96
+ <span><b>drag</b> orbit</span><span><b>right-drag</b> pan</span><span><b>wheel</b> zoom</span><span><b>W/E/R</b> mode</span><span><b>⇧</b> snap</span><span><b>F</b> frame</span><span><b>0</b> game cam</span>
97
+ </div>
98
+ <button type="button" id="hints-toggle" title="Controls">
99
+ <svg aria-hidden="true" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="2" y="6" width="20" height="12" rx="2"/><path d="M6 10h.01M10 10h.01M14 10h.01M18 10h.01M6 14h.01M18 14h.01M9 14h6"/></svg>
100
+ </button>
101
+ </div>
102
+ <button type="button" id="gameview-btn" class="ghost" title="View through the game camera — exactly what running the scene shows (0)">
103
+ <svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 7h12v10H3z"/><path d="M15 10l6-3v10l-6-3"/></svg>
104
+ game cam
105
+ </button>
106
+ </section>
107
+ <aside id="inspector-pane">
108
+ <div class="pane-title">inspector</div>
109
+ <div id="inspector"></div>
110
+ </aside>
111
+ </main>
112
+ <div id="picker" hidden>
113
+ <div id="picker-card">
114
+ <div class="pane-title picker-title">
115
+ open a scene
116
+ <button type="button" id="picker-close" title="Close (Esc)">✕</button>
117
+ </div>
118
+ <div id="picker-list"></div>
119
+ <div id="picker-new">
120
+ <input id="picker-path" type="text" placeholder="src/new-level.scene.json" />
121
+ <button type="button" id="picker-create" class="primary">create</button>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ <div id="docs" hidden>
126
+ <div id="docs-card">
127
+ <div class="pane-title picker-title">
128
+ incanto nodes
129
+ <button type="button" id="docs-close" title="Close (Esc)">✕</button>
130
+ </div>
131
+ <div id="docs-layout">
132
+ <nav id="docs-tabs"></nav>
133
+ <div id="docs-body"></div>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ <div id="confirm" hidden>
138
+ <div id="confirm-card">
139
+ <div class="pane-title picker-title">
140
+ <span id="confirm-title">still referenced</span>
141
+ <button type="button" id="confirm-close" title="Close (Esc)">✕</button>
142
+ </div>
143
+ <div id="confirm-body">
144
+ <div id="confirm-text"></div>
145
+ <div id="confirm-list"></div>
146
+ </div>
147
+ <div id="confirm-actions">
148
+ <button type="button" id="confirm-cancel" class="ghost">cancel</button>
149
+ <button type="button" id="confirm-delete">unlink &amp; delete</button>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ <div id="generate" hidden>
154
+ <div id="generate-card">
155
+ <div class="pane-title picker-title">
156
+ generate environment
157
+ <button type="button" id="generate-close" title="Close (Esc)">✕</button>
158
+ </div>
159
+ <div id="generate-body"></div>
160
+ <div id="generate-actions">
161
+ <span id="generate-status"></span>
162
+ <button type="button" id="generate-cancel" class="ghost">cancel</button>
163
+ <button type="button" id="generate-insert" class="primary">insert</button>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ <div id="popover" hidden></div>
168
+ </body>
169
+ </html>
package/package.json ADDED
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "incanto",
3
+ "version": "0.1.0",
4
+ "description": "Vibe-coding-first web game engine SDK — JSON-driven scenes on three.js",
5
+ "keywords": [
6
+ "game-engine",
7
+ "threejs",
8
+ "vibe-coding",
9
+ "webgame",
10
+ "2d",
11
+ "3d",
12
+ "json",
13
+ "agent8"
14
+ ],
15
+ "license": "UNLICENSED",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/rareboe/Incanto.git",
19
+ "directory": "packages/engine"
20
+ },
21
+ "type": "module",
22
+ "sideEffects": false,
23
+ "files": [
24
+ "dist",
25
+ "templates",
26
+ "schemas",
27
+ "skills",
28
+ "bin",
29
+ "editor",
30
+ "assets",
31
+ "LICENSE",
32
+ "THIRD-PARTY-NOTICES.md"
33
+ ],
34
+ "engines": {
35
+ "node": ">=20.19.0"
36
+ },
37
+ "exports": {
38
+ ".": "./dist/index.js",
39
+ "./2d": "./dist/2d.js",
40
+ "./3d": "./dist/3d.js",
41
+ "./debug": "./dist/debug.js",
42
+ "./env": "./dist/env.js",
43
+ "./gameplay": "./dist/gameplay.js",
44
+ "./net": "./dist/net.js",
45
+ "./react": "./dist/react.js",
46
+ "./test": "./dist/test.js",
47
+ "./vite": "./dist/vite.js",
48
+ "./package.json": "./package.json",
49
+ "./schemas/*": "./schemas/*",
50
+ "./assets/*": "./assets/*"
51
+ },
52
+ "scripts": {
53
+ "build": "tsdown",
54
+ "dev": "tsdown --watch",
55
+ "typecheck": "tsc --noEmit",
56
+ "test": "vitest run --project unit --root ../.."
57
+ },
58
+ "peerDependencies": {
59
+ "@agent8/gameserver": ">=1.10.0",
60
+ "three": ">=0.180.0",
61
+ "react": ">=18"
62
+ },
63
+ "peerDependenciesMeta": {
64
+ "@agent8/gameserver": {
65
+ "optional": true
66
+ },
67
+ "react": {
68
+ "optional": true
69
+ }
70
+ },
71
+ "devDependencies": {
72
+ "@agent8/gameserver": "1.10.2",
73
+ "@types/react": "^19.2.17",
74
+ "@types/react-dom": "^19.2.3",
75
+ "@types/three": "catalog:",
76
+ "react": "^19.2.7",
77
+ "react-dom": "^19.2.7",
78
+ "three": "catalog:",
79
+ "tsdown": "0.22.2",
80
+ "typescript": "catalog:",
81
+ "vitest": "catalog:"
82
+ },
83
+ "dependencies": {
84
+ "@dimforge/rapier2d-compat": "0.19.3",
85
+ "@dimforge/rapier3d-compat": "0.19.3",
86
+ "@pixiv/three-vrm": "^3.5.3"
87
+ },
88
+ "bin": {
89
+ "incanto-skills": "bin/incanto-skills.mjs",
90
+ "incanto-editor": "bin/incanto-editor.mjs",
91
+ "incanto-model": "bin/incanto-model.mjs",
92
+ "incanto-check": "bin/incanto-check.mjs",
93
+ "incanto-assets": "bin/incanto-assets.mjs",
94
+ "incanto-env": "bin/incanto-env.mjs",
95
+ "incanto-play": "bin/incanto-play.mjs"
96
+ }
97
+ }