@nice2dev/game-engine 1.0.5 → 1.0.11

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 (721) hide show
  1. package/dist/cjs/accessibility/Accessibility.js +55 -20
  2. package/dist/cjs/accessibility/Accessibility.js.map +1 -1
  3. package/dist/cjs/ai/AI.js +74 -40
  4. package/dist/cjs/ai/AI.js.map +1 -1
  5. package/dist/cjs/ai/BehaviorTree.js +39 -47
  6. package/dist/cjs/ai/BehaviorTree.js.map +1 -1
  7. package/dist/cjs/ai/StateMachine.js +64 -100
  8. package/dist/cjs/ai/StateMachine.js.map +1 -1
  9. package/dist/cjs/animation/Animation.js +58 -34
  10. package/dist/cjs/animation/Animation.js.map +1 -1
  11. package/dist/cjs/audio/AudioAdvanced.js +71 -37
  12. package/dist/cjs/audio/AudioAdvanced.js.map +1 -1
  13. package/dist/cjs/audio/AudioBridge.js +61 -49
  14. package/dist/cjs/audio/AudioBridge.js.map +1 -1
  15. package/dist/cjs/audio/AudioManager.js +45 -29
  16. package/dist/cjs/audio/AudioManager.js.map +1 -1
  17. package/dist/cjs/build-cloud/BuildOrchestration.js +1142 -0
  18. package/dist/cjs/build-cloud/BuildOrchestration.js.map +1 -0
  19. package/dist/cjs/build-cloud/GodotBuildCloud.js +722 -0
  20. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +1 -0
  21. package/dist/cjs/build-cloud/UnityBuildCloud.js +652 -0
  22. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +1 -0
  23. package/dist/cjs/build-cloud/UnrealBuildCloud.js +674 -0
  24. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +1 -0
  25. package/dist/cjs/core/EventBus.js +2 -1
  26. package/dist/cjs/core/EventBus.js.map +1 -1
  27. package/dist/cjs/core/GameConfig.js +1 -1
  28. package/dist/cjs/core/GameConfig.js.map +1 -1
  29. package/dist/cjs/core/GameLoop.js +6 -3
  30. package/dist/cjs/core/GameLoop.js.map +1 -1
  31. package/dist/cjs/core/ServiceLocator.js +1 -2
  32. package/dist/cjs/core/ServiceLocator.js.map +1 -1
  33. package/dist/cjs/devtools/DevTools.js +73 -43
  34. package/dist/cjs/devtools/DevTools.js.map +1 -1
  35. package/dist/cjs/devtools/DeveloperExperience.js +84 -42
  36. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -1
  37. package/dist/cjs/devtools/GameplayAnalytics.js +71 -43
  38. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -1
  39. package/dist/cjs/dialogue/DialogueSystem.js +153 -129
  40. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -1
  41. package/dist/cjs/docs/DocGenerator.js +70 -28
  42. package/dist/cjs/docs/DocGenerator.js.map +1 -1
  43. package/dist/cjs/ecs/World.js +159 -33
  44. package/dist/cjs/ecs/World.js.map +1 -1
  45. package/dist/cjs/editor/AchievementEditor.js +650 -0
  46. package/dist/cjs/editor/AchievementEditor.js.map +1 -0
  47. package/dist/cjs/editor/AdvancedEditor.js +95 -23
  48. package/dist/cjs/editor/AdvancedEditor.js.map +1 -1
  49. package/dist/cjs/editor/AnimationRetargeting.js +742 -0
  50. package/dist/cjs/editor/AnimationRetargeting.js.map +1 -0
  51. package/dist/cjs/editor/AssetBrowser.js +1191 -0
  52. package/dist/cjs/editor/AssetBrowser.js.map +1 -0
  53. package/dist/cjs/editor/AssetManager.js +22 -14
  54. package/dist/cjs/editor/AssetManager.js.map +1 -1
  55. package/dist/cjs/editor/ConsolePro.js +1092 -0
  56. package/dist/cjs/editor/ConsolePro.js.map +1 -0
  57. package/dist/cjs/editor/CraftingEditor.js +749 -0
  58. package/dist/cjs/editor/CraftingEditor.js.map +1 -0
  59. package/dist/cjs/editor/DebugTools.js +46 -23
  60. package/dist/cjs/editor/DebugTools.js.map +1 -1
  61. package/dist/cjs/editor/DialogueSystem.js +924 -0
  62. package/dist/cjs/editor/DialogueSystem.js.map +1 -0
  63. package/dist/cjs/editor/LeaderboardSystem.js +496 -0
  64. package/dist/cjs/editor/LeaderboardSystem.js.map +1 -0
  65. package/dist/cjs/editor/NiceGameEditor.js +532 -142
  66. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  67. package/dist/cjs/editor/PrefabSystem.js +864 -0
  68. package/dist/cjs/editor/PrefabSystem.js.map +1 -0
  69. package/dist/cjs/editor/ProfilerPanel.js +716 -0
  70. package/dist/cjs/editor/ProfilerPanel.js.map +1 -0
  71. package/dist/cjs/editor/QuestEditor.js +850 -0
  72. package/dist/cjs/editor/QuestEditor.js.map +1 -0
  73. package/dist/cjs/editor/ReplaySystem.js +655 -0
  74. package/dist/cjs/editor/ReplaySystem.js.map +1 -0
  75. package/dist/cjs/editor/SceneEditor.js +33 -13
  76. package/dist/cjs/editor/SceneEditor.js.map +1 -1
  77. package/dist/cjs/editor/ScreenshotMode.js +710 -0
  78. package/dist/cjs/editor/ScreenshotMode.js.map +1 -0
  79. package/dist/cjs/editor/ShaderGraph.js +7 -6
  80. package/dist/cjs/editor/ShaderGraph.js.map +1 -1
  81. package/dist/cjs/editor/TimelineEditor.js +36 -30
  82. package/dist/cjs/editor/TimelineEditor.js.map +1 -1
  83. package/dist/cjs/editor/UndoRedoPro.js +920 -0
  84. package/dist/cjs/editor/UndoRedoPro.js.map +1 -0
  85. package/dist/cjs/editor/VRARMode.js +658 -0
  86. package/dist/cjs/editor/VRARMode.js.map +1 -0
  87. package/dist/cjs/engine/NiceGameEngine.js +12 -10
  88. package/dist/cjs/engine/NiceGameEngine.js.map +1 -1
  89. package/dist/cjs/engine/SaveSystemV2.js +73 -37
  90. package/dist/cjs/engine/SaveSystemV2.js.map +1 -1
  91. package/dist/cjs/enterprise/Enterprise.js +92 -44
  92. package/dist/cjs/enterprise/Enterprise.js.map +1 -1
  93. package/dist/cjs/export/BevyExporter.js +998 -0
  94. package/dist/cjs/export/BevyExporter.js.map +1 -0
  95. package/dist/cjs/export/CocosExporter.js +706 -0
  96. package/dist/cjs/export/CocosExporter.js.map +1 -0
  97. package/dist/cjs/export/Construct3Exporter.js +832 -0
  98. package/dist/cjs/export/Construct3Exporter.js.map +1 -0
  99. package/dist/cjs/export/DefoldExporter.js +1106 -0
  100. package/dist/cjs/export/DefoldExporter.js.map +1 -0
  101. package/dist/cjs/export/GDevelopExporter.js +748 -0
  102. package/dist/cjs/export/GDevelopExporter.js.map +1 -0
  103. package/dist/cjs/export/GameMakerExporter.js +846 -0
  104. package/dist/cjs/export/GameMakerExporter.js.map +1 -0
  105. package/dist/cjs/export/GodotExporter.js +45 -50
  106. package/dist/cjs/export/GodotExporter.js.map +1 -1
  107. package/dist/cjs/export/MinecraftBedrockExporter.js +606 -0
  108. package/dist/cjs/export/MinecraftBedrockExporter.js.map +1 -0
  109. package/dist/cjs/export/MonoGameExporter.js +1334 -0
  110. package/dist/cjs/export/MonoGameExporter.js.map +1 -0
  111. package/dist/cjs/export/Pico8Exporter.js +846 -0
  112. package/dist/cjs/export/Pico8Exporter.js.map +1 -0
  113. package/dist/cjs/export/PlatformExporter.js +4 -5
  114. package/dist/cjs/export/PlatformExporter.js.map +1 -1
  115. package/dist/cjs/export/RPGMakerExporter.js +906 -0
  116. package/dist/cjs/export/RPGMakerExporter.js.map +1 -0
  117. package/dist/cjs/export/RobloxExporter.js +943 -0
  118. package/dist/cjs/export/RobloxExporter.js.map +1 -0
  119. package/dist/cjs/export/Solar2DExporter.js +1283 -0
  120. package/dist/cjs/export/Solar2DExporter.js.map +1 -0
  121. package/dist/cjs/export/ThreeJSExporter.js +52 -55
  122. package/dist/cjs/export/ThreeJSExporter.js.map +1 -1
  123. package/dist/cjs/export/Tic80Exporter.js +1315 -0
  124. package/dist/cjs/export/Tic80Exporter.js.map +1 -0
  125. package/dist/cjs/export/UnityExporter.js +41 -56
  126. package/dist/cjs/export/UnityExporter.js.map +1 -1
  127. package/dist/cjs/export/UnrealExporter.js +962 -0
  128. package/dist/cjs/export/UnrealExporter.js.map +1 -0
  129. package/dist/cjs/export/WebExporter.js +42 -50
  130. package/dist/cjs/export/WebExporter.js.map +1 -1
  131. package/dist/cjs/export/index.js +50 -2
  132. package/dist/cjs/export/index.js.map +1 -1
  133. package/dist/cjs/godot-integration/GodotAssetLibrary.js +716 -0
  134. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +1 -0
  135. package/dist/cjs/godot-integration/GodotImport.js +1069 -0
  136. package/dist/cjs/godot-integration/GodotImport.js.map +1 -0
  137. package/dist/cjs/godot-integration/GodotLiveLink.js +962 -0
  138. package/dist/cjs/godot-integration/GodotLiveLink.js.map +1 -0
  139. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +668 -0
  140. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  141. package/dist/cjs/i18n/I18n.js +56 -30
  142. package/dist/cjs/i18n/I18n.js.map +1 -1
  143. package/dist/cjs/i18n/useTranslation.js +4 -4
  144. package/dist/cjs/i18n/useTranslation.js.map +1 -1
  145. package/dist/cjs/import/AsepriteImporter.js +15 -19
  146. package/dist/cjs/import/AsepriteImporter.js.map +1 -1
  147. package/dist/cjs/import/DragonBonesImporter.js +36 -40
  148. package/dist/cjs/import/DragonBonesImporter.js.map +1 -1
  149. package/dist/cjs/import/GameMakerImporter.js +11 -17
  150. package/dist/cjs/import/GameMakerImporter.js.map +1 -1
  151. package/dist/cjs/import/GodotSceneImporter.js +43 -29
  152. package/dist/cjs/import/GodotSceneImporter.js.map +1 -1
  153. package/dist/cjs/import/LDtkImporter.js +16 -17
  154. package/dist/cjs/import/LDtkImporter.js.map +1 -1
  155. package/dist/cjs/import/Live2DImporter.js +16 -19
  156. package/dist/cjs/import/Live2DImporter.js.map +1 -1
  157. package/dist/cjs/import/NdgFormat.js +28 -35
  158. package/dist/cjs/import/NdgFormat.js.map +1 -1
  159. package/dist/cjs/import/OgmoImporter.js +16 -18
  160. package/dist/cjs/import/OgmoImporter.js.map +1 -1
  161. package/dist/cjs/import/RPGMakerImporter.js +5 -6
  162. package/dist/cjs/import/RPGMakerImporter.js.map +1 -1
  163. package/dist/cjs/import/SceneImporter.js +23 -13
  164. package/dist/cjs/import/SceneImporter.js.map +1 -1
  165. package/dist/cjs/import/SpineImporter.js +20 -20
  166. package/dist/cjs/import/SpineImporter.js.map +1 -1
  167. package/dist/cjs/import/SpriterImporter.js +38 -46
  168. package/dist/cjs/import/SpriterImporter.js.map +1 -1
  169. package/dist/cjs/import/TiledMapImporter.js +20 -24
  170. package/dist/cjs/import/TiledMapImporter.js.map +1 -1
  171. package/dist/cjs/import/UnitySceneImporter.js +15 -15
  172. package/dist/cjs/import/UnitySceneImporter.js.map +1 -1
  173. package/dist/cjs/index.js +516 -4
  174. package/dist/cjs/index.js.map +1 -1
  175. package/dist/cjs/input/GamepadNavigation.js +82 -47
  176. package/dist/cjs/input/GamepadNavigation.js.map +1 -1
  177. package/dist/cjs/input/InputManager.js +107 -52
  178. package/dist/cjs/input/InputManager.js.map +1 -1
  179. package/dist/cjs/input/useGamepads.js +35 -29
  180. package/dist/cjs/input/useGamepads.js.map +1 -1
  181. package/dist/cjs/integration/IconSprite.js +39 -21
  182. package/dist/cjs/integration/IconSprite.js.map +1 -1
  183. package/dist/cjs/inventory/InventorySystem.js +218 -127
  184. package/dist/cjs/inventory/InventorySystem.js.map +1 -1
  185. package/dist/cjs/kids/KidMode.js +491 -78
  186. package/dist/cjs/kids/KidMode.js.map +1 -1
  187. package/dist/cjs/kids/KidTools.js +154 -48
  188. package/dist/cjs/kids/KidTools.js.map +1 -1
  189. package/dist/cjs/monetization/Monetization.js +47 -35
  190. package/dist/cjs/monetization/Monetization.js.map +1 -1
  191. package/dist/cjs/multiplayer/LocalMultiplayer.js +48 -26
  192. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -1
  193. package/dist/cjs/multiplayer/MiniGameTypes.js +23 -10
  194. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -1
  195. package/dist/cjs/native-engine/AssetPipeline.js +540 -0
  196. package/dist/cjs/native-engine/AssetPipeline.js.map +1 -0
  197. package/dist/cjs/native-engine/AudioEngine.js +825 -0
  198. package/dist/cjs/native-engine/AudioEngine.js.map +1 -0
  199. package/dist/cjs/native-engine/InputSystem.js +1175 -0
  200. package/dist/cjs/native-engine/InputSystem.js.map +1 -0
  201. package/dist/cjs/native-engine/NetworkingSystem.js +825 -0
  202. package/dist/cjs/native-engine/NetworkingSystem.js.map +1 -0
  203. package/dist/cjs/native-engine/PhysicsEngine.js +622 -0
  204. package/dist/cjs/native-engine/PhysicsEngine.js.map +1 -0
  205. package/dist/cjs/native-engine/RenderingEngine.js +371 -0
  206. package/dist/cjs/native-engine/RenderingEngine.js.map +1 -0
  207. package/dist/cjs/native-engine/SceneGraph.js +862 -0
  208. package/dist/cjs/native-engine/SceneGraph.js.map +1 -0
  209. package/dist/cjs/network/MultiplayerTransport.js +63 -33
  210. package/dist/cjs/network/MultiplayerTransport.js.map +1 -1
  211. package/dist/cjs/network/Networking.js +87 -62
  212. package/dist/cjs/network/Networking.js.map +1 -1
  213. package/dist/cjs/pathfinding/Pathfinding.js +71 -26
  214. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -1
  215. package/dist/cjs/performance/AssetStreaming.js +656 -0
  216. package/dist/cjs/performance/AssetStreaming.js.map +1 -0
  217. package/dist/cjs/performance/BenchmarkSuite.js +37 -24
  218. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -1
  219. package/dist/cjs/performance/DeltaCompression.js +566 -0
  220. package/dist/cjs/performance/DeltaCompression.js.map +1 -0
  221. package/dist/cjs/performance/DeterministicPhysics.js +603 -0
  222. package/dist/cjs/performance/DeterministicPhysics.js.map +1 -0
  223. package/dist/cjs/performance/ECSOptimization.js +726 -0
  224. package/dist/cjs/performance/ECSOptimization.js.map +1 -0
  225. package/dist/cjs/performance/HotReload.js +525 -0
  226. package/dist/cjs/performance/HotReload.js.map +1 -0
  227. package/dist/cjs/performance/InputRecording.js +590 -0
  228. package/dist/cjs/performance/InputRecording.js.map +1 -0
  229. package/dist/cjs/performance/InterestManagement.js +532 -0
  230. package/dist/cjs/performance/InterestManagement.js.map +1 -0
  231. package/dist/cjs/performance/LocalizationRuntime.js +472 -0
  232. package/dist/cjs/performance/LocalizationRuntime.js.map +1 -0
  233. package/dist/cjs/performance/MemoryManagement.js +487 -0
  234. package/dist/cjs/performance/MemoryManagement.js.map +1 -0
  235. package/dist/cjs/performance/ModSupport.js +531 -0
  236. package/dist/cjs/performance/ModSupport.js.map +1 -0
  237. package/dist/cjs/performance/MultiThreadedPhysics.js +500 -0
  238. package/dist/cjs/performance/MultiThreadedPhysics.js.map +1 -0
  239. package/dist/cjs/performance/NetworkPrediction.js +521 -0
  240. package/dist/cjs/performance/NetworkPrediction.js.map +1 -0
  241. package/dist/cjs/performance/ObjectPooling.js +653 -0
  242. package/dist/cjs/performance/ObjectPooling.js.map +1 -0
  243. package/dist/cjs/performance/Performance.js +64 -25
  244. package/dist/cjs/performance/Performance.js.map +1 -1
  245. package/dist/cjs/performance/PerformanceAdvanced.js +83 -49
  246. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -1
  247. package/dist/cjs/performance/SaveSystem.js +574 -0
  248. package/dist/cjs/performance/SaveSystem.js.map +1 -0
  249. package/dist/cjs/performance/WebGPURenderer.js +702 -0
  250. package/dist/cjs/performance/WebGPURenderer.js.map +1 -0
  251. package/dist/cjs/physics/PhysicsAdvanced.js +32 -20
  252. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -1
  253. package/dist/cjs/physics/PhysicsEngine2D.js +63 -36
  254. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -1
  255. package/dist/cjs/plugins/PluginSDK.js +46 -34
  256. package/dist/cjs/plugins/PluginSDK.js.map +1 -1
  257. package/dist/cjs/plugins/PluginTestKit.js +28 -29
  258. package/dist/cjs/plugins/PluginTestKit.js.map +1 -1
  259. package/dist/cjs/procedural/Procedural.js +24 -17
  260. package/dist/cjs/procedural/Procedural.js.map +1 -1
  261. package/dist/cjs/procedural/WorldBuilding.js +187 -55
  262. package/dist/cjs/procedural/WorldBuilding.js.map +1 -1
  263. package/dist/cjs/quest/QuestSystem.js +145 -111
  264. package/dist/cjs/quest/QuestSystem.js.map +1 -1
  265. package/dist/cjs/release/Release.js +142 -31
  266. package/dist/cjs/release/Release.js.map +1 -1
  267. package/dist/cjs/rendering/Camera2D.js +12 -7
  268. package/dist/cjs/rendering/Camera2D.js.map +1 -1
  269. package/dist/cjs/rendering/Renderer2D.js +62 -26
  270. package/dist/cjs/rendering/Renderer2D.js.map +1 -1
  271. package/dist/cjs/rendering/WebGPURenderPipeline.js +60 -31
  272. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -1
  273. package/dist/cjs/runtime3d/Runtime3D.js +80 -55
  274. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -1
  275. package/dist/cjs/runtime3d/SceneEditor3D.js +20 -11
  276. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -1
  277. package/dist/cjs/scene/SceneManager.js +26 -12
  278. package/dist/cjs/scene/SceneManager.js.map +1 -1
  279. package/dist/cjs/scripting/GraphToAST.js +36 -24
  280. package/dist/cjs/scripting/GraphToAST.js.map +1 -1
  281. package/dist/cjs/scripting/LanguageExporter.js +2 -3
  282. package/dist/cjs/scripting/LanguageExporter.js.map +1 -1
  283. package/dist/cjs/scripting/NodeGraph.js +49 -32
  284. package/dist/cjs/scripting/NodeGraph.js.map +1 -1
  285. package/dist/cjs/scripting/ScriptAST.js +19 -6
  286. package/dist/cjs/scripting/ScriptAST.js.map +1 -1
  287. package/dist/cjs/scripting/VisualScripting2.js +13 -12
  288. package/dist/cjs/scripting/VisualScripting2.js.map +1 -1
  289. package/dist/cjs/scripting/exporters/CSharpExporter.js +16 -16
  290. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -1
  291. package/dist/cjs/scripting/exporters/GDScriptExporter.js +3 -6
  292. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -1
  293. package/dist/cjs/scripting/exporters/LuaExporter.js +5 -9
  294. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -1
  295. package/dist/cjs/scripting/exporters/PythonExporter.js +7 -13
  296. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -1
  297. package/dist/cjs/scripting/exporters/RustExporter.js +7 -14
  298. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -1
  299. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +28 -29
  300. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -1
  301. package/dist/cjs/social/Social.js +27 -20
  302. package/dist/cjs/social/Social.js.map +1 -1
  303. package/dist/cjs/systems/LightingSystem.js +980 -0
  304. package/dist/cjs/systems/LightingSystem.js.map +1 -0
  305. package/dist/cjs/systems/ParticleSystem2.js +34 -17
  306. package/dist/cjs/systems/ParticleSystem2.js.map +1 -1
  307. package/dist/cjs/systems/PhysicsDebugSystem.js +1228 -0
  308. package/dist/cjs/systems/PhysicsDebugSystem.js.map +1 -0
  309. package/dist/cjs/systems/TerrainSystem.js +1137 -0
  310. package/dist/cjs/systems/TerrainSystem.js.map +1 -0
  311. package/dist/cjs/templates/ActionTemplates.js +144 -24
  312. package/dist/cjs/templates/ActionTemplates.js.map +1 -1
  313. package/dist/cjs/templates/FightingTemplate.js +536 -0
  314. package/dist/cjs/templates/FightingTemplate.js.map +1 -0
  315. package/dist/cjs/templates/MetroidvaniaTemplate.js +523 -0
  316. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +1 -0
  317. package/dist/cjs/templates/PartyTemplates.js +60 -28
  318. package/dist/cjs/templates/PartyTemplates.js.map +1 -1
  319. package/dist/cjs/templates/PuzzleTemplates.js +63 -22
  320. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -1
  321. package/dist/cjs/templates/RPGTemplates.js +29 -15
  322. package/dist/cjs/templates/RPGTemplates.js.map +1 -1
  323. package/dist/cjs/templates/SportsTemplates.js +41 -17
  324. package/dist/cjs/templates/SportsTemplates.js.map +1 -1
  325. package/dist/cjs/templates/StrategyTemplates.js +45 -18
  326. package/dist/cjs/templates/StrategyTemplates.js.map +1 -1
  327. package/dist/cjs/templates/SurvivalTemplate.js +479 -0
  328. package/dist/cjs/templates/SurvivalTemplate.js.map +1 -0
  329. package/dist/cjs/templates/WaveDefense.js +139 -52
  330. package/dist/cjs/templates/WaveDefense.js.map +1 -1
  331. package/dist/cjs/tilemap/Tilemap.js +48 -32
  332. package/dist/cjs/tilemap/Tilemap.js.map +1 -1
  333. package/dist/cjs/tutorials/TutorialBranching.js +111 -42
  334. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -1
  335. package/dist/cjs/tutorials/TutorialEngine.js +152 -80
  336. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -1
  337. package/dist/cjs/tutorials/TutorialOverlay.js +117 -40
  338. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -1
  339. package/dist/cjs/ui/GameUI.js +69 -42
  340. package/dist/cjs/ui/GameUI.js.map +1 -1
  341. package/dist/cjs/unity-integration/UnityAssetStore.js +754 -0
  342. package/dist/cjs/unity-integration/UnityAssetStore.js.map +1 -0
  343. package/dist/cjs/unity-integration/UnityImport.js +1252 -0
  344. package/dist/cjs/unity-integration/UnityImport.js.map +1 -0
  345. package/dist/cjs/unity-integration/UnityLiveLink.js +1022 -0
  346. package/dist/cjs/unity-integration/UnityLiveLink.js.map +1 -0
  347. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +796 -0
  348. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  349. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +833 -0
  350. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  351. package/dist/cjs/unreal-integration/UnrealImport.js +442 -0
  352. package/dist/cjs/unreal-integration/UnrealImport.js.map +1 -0
  353. package/dist/cjs/unreal-integration/UnrealLiveLink.js +1186 -0
  354. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +1 -0
  355. package/dist/cjs/unreal-integration/UnrealMarketplace.js +497 -0
  356. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +1 -0
  357. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +835 -0
  358. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  359. package/dist/cjs/xr/ARVR.js +32 -9
  360. package/dist/cjs/xr/ARVR.js.map +1 -1
  361. package/dist/esm/accessibility/Accessibility.js +55 -20
  362. package/dist/esm/accessibility/Accessibility.js.map +1 -1
  363. package/dist/esm/ai/AI.js +74 -40
  364. package/dist/esm/ai/AI.js.map +1 -1
  365. package/dist/esm/ai/BehaviorTree.js +39 -47
  366. package/dist/esm/ai/BehaviorTree.js.map +1 -1
  367. package/dist/esm/ai/StateMachine.js +65 -99
  368. package/dist/esm/ai/StateMachine.js.map +1 -1
  369. package/dist/esm/animation/Animation.js +58 -34
  370. package/dist/esm/animation/Animation.js.map +1 -1
  371. package/dist/esm/audio/AudioAdvanced.js +71 -37
  372. package/dist/esm/audio/AudioAdvanced.js.map +1 -1
  373. package/dist/esm/audio/AudioBridge.js +61 -49
  374. package/dist/esm/audio/AudioBridge.js.map +1 -1
  375. package/dist/esm/audio/AudioManager.js +45 -29
  376. package/dist/esm/audio/AudioManager.js.map +1 -1
  377. package/dist/esm/build-cloud/BuildOrchestration.js +1129 -0
  378. package/dist/esm/build-cloud/BuildOrchestration.js.map +1 -0
  379. package/dist/esm/build-cloud/GodotBuildCloud.js +715 -0
  380. package/dist/esm/build-cloud/GodotBuildCloud.js.map +1 -0
  381. package/dist/esm/build-cloud/UnityBuildCloud.js +643 -0
  382. package/dist/esm/build-cloud/UnityBuildCloud.js.map +1 -0
  383. package/dist/esm/build-cloud/UnrealBuildCloud.js +668 -0
  384. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +1 -0
  385. package/dist/esm/core/EventBus.js +2 -1
  386. package/dist/esm/core/EventBus.js.map +1 -1
  387. package/dist/esm/core/GameConfig.js +1 -1
  388. package/dist/esm/core/GameConfig.js.map +1 -1
  389. package/dist/esm/core/GameLoop.js +6 -3
  390. package/dist/esm/core/GameLoop.js.map +1 -1
  391. package/dist/esm/core/ServiceLocator.js +1 -2
  392. package/dist/esm/core/ServiceLocator.js.map +1 -1
  393. package/dist/esm/devtools/DevTools.js +73 -43
  394. package/dist/esm/devtools/DevTools.js.map +1 -1
  395. package/dist/esm/devtools/DeveloperExperience.js +84 -42
  396. package/dist/esm/devtools/DeveloperExperience.js.map +1 -1
  397. package/dist/esm/devtools/GameplayAnalytics.js +71 -43
  398. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -1
  399. package/dist/esm/dialogue/DialogueSystem.js +153 -129
  400. package/dist/esm/dialogue/DialogueSystem.js.map +1 -1
  401. package/dist/esm/docs/DocGenerator.js +70 -28
  402. package/dist/esm/docs/DocGenerator.js.map +1 -1
  403. package/dist/esm/ecs/World.js +159 -33
  404. package/dist/esm/ecs/World.js.map +1 -1
  405. package/dist/esm/editor/AchievementEditor.js +645 -0
  406. package/dist/esm/editor/AchievementEditor.js.map +1 -0
  407. package/dist/esm/editor/AdvancedEditor.js +95 -23
  408. package/dist/esm/editor/AdvancedEditor.js.map +1 -1
  409. package/dist/esm/editor/AnimationRetargeting.js +738 -0
  410. package/dist/esm/editor/AnimationRetargeting.js.map +1 -0
  411. package/dist/esm/editor/AssetBrowser.js +1184 -0
  412. package/dist/esm/editor/AssetBrowser.js.map +1 -0
  413. package/dist/esm/editor/AssetManager.js +22 -14
  414. package/dist/esm/editor/AssetManager.js.map +1 -1
  415. package/dist/esm/editor/ConsolePro.js +1085 -0
  416. package/dist/esm/editor/ConsolePro.js.map +1 -0
  417. package/dist/esm/editor/CraftingEditor.js +744 -0
  418. package/dist/esm/editor/CraftingEditor.js.map +1 -0
  419. package/dist/esm/editor/DebugTools.js +46 -23
  420. package/dist/esm/editor/DebugTools.js.map +1 -1
  421. package/dist/esm/editor/DialogueSystem.js +918 -0
  422. package/dist/esm/editor/DialogueSystem.js.map +1 -0
  423. package/dist/esm/editor/LeaderboardSystem.js +491 -0
  424. package/dist/esm/editor/LeaderboardSystem.js.map +1 -0
  425. package/dist/esm/editor/NiceGameEditor.js +532 -142
  426. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  427. package/dist/esm/editor/PrefabSystem.js +858 -0
  428. package/dist/esm/editor/PrefabSystem.js.map +1 -0
  429. package/dist/esm/editor/ProfilerPanel.js +710 -0
  430. package/dist/esm/editor/ProfilerPanel.js.map +1 -0
  431. package/dist/esm/editor/QuestEditor.js +846 -0
  432. package/dist/esm/editor/QuestEditor.js.map +1 -0
  433. package/dist/esm/editor/ReplaySystem.js +648 -0
  434. package/dist/esm/editor/ReplaySystem.js.map +1 -0
  435. package/dist/esm/editor/SceneEditor.js +33 -13
  436. package/dist/esm/editor/SceneEditor.js.map +1 -1
  437. package/dist/esm/editor/ScreenshotMode.js +702 -0
  438. package/dist/esm/editor/ScreenshotMode.js.map +1 -0
  439. package/dist/esm/editor/ShaderGraph.js +7 -6
  440. package/dist/esm/editor/ShaderGraph.js.map +1 -1
  441. package/dist/esm/editor/TimelineEditor.js +37 -30
  442. package/dist/esm/editor/TimelineEditor.js.map +1 -1
  443. package/dist/esm/editor/UndoRedoPro.js +914 -0
  444. package/dist/esm/editor/UndoRedoPro.js.map +1 -0
  445. package/dist/esm/editor/VRARMode.js +653 -0
  446. package/dist/esm/editor/VRARMode.js.map +1 -0
  447. package/dist/esm/engine/NiceGameEngine.js +12 -10
  448. package/dist/esm/engine/NiceGameEngine.js.map +1 -1
  449. package/dist/esm/engine/SaveSystemV2.js +73 -37
  450. package/dist/esm/engine/SaveSystemV2.js.map +1 -1
  451. package/dist/esm/enterprise/Enterprise.js +92 -44
  452. package/dist/esm/enterprise/Enterprise.js.map +1 -1
  453. package/dist/esm/export/BevyExporter.js +995 -0
  454. package/dist/esm/export/BevyExporter.js.map +1 -0
  455. package/dist/esm/export/CocosExporter.js +703 -0
  456. package/dist/esm/export/CocosExporter.js.map +1 -0
  457. package/dist/esm/export/Construct3Exporter.js +829 -0
  458. package/dist/esm/export/Construct3Exporter.js.map +1 -0
  459. package/dist/esm/export/DefoldExporter.js +1103 -0
  460. package/dist/esm/export/DefoldExporter.js.map +1 -0
  461. package/dist/esm/export/GDevelopExporter.js +745 -0
  462. package/dist/esm/export/GDevelopExporter.js.map +1 -0
  463. package/dist/esm/export/GameMakerExporter.js +843 -0
  464. package/dist/esm/export/GameMakerExporter.js.map +1 -0
  465. package/dist/esm/export/GodotExporter.js +45 -50
  466. package/dist/esm/export/GodotExporter.js.map +1 -1
  467. package/dist/esm/export/MinecraftBedrockExporter.js +603 -0
  468. package/dist/esm/export/MinecraftBedrockExporter.js.map +1 -0
  469. package/dist/esm/export/MonoGameExporter.js +1331 -0
  470. package/dist/esm/export/MonoGameExporter.js.map +1 -0
  471. package/dist/esm/export/Pico8Exporter.js +843 -0
  472. package/dist/esm/export/Pico8Exporter.js.map +1 -0
  473. package/dist/esm/export/PlatformExporter.js +4 -5
  474. package/dist/esm/export/PlatformExporter.js.map +1 -1
  475. package/dist/esm/export/RPGMakerExporter.js +903 -0
  476. package/dist/esm/export/RPGMakerExporter.js.map +1 -0
  477. package/dist/esm/export/RobloxExporter.js +940 -0
  478. package/dist/esm/export/RobloxExporter.js.map +1 -0
  479. package/dist/esm/export/Solar2DExporter.js +1280 -0
  480. package/dist/esm/export/Solar2DExporter.js.map +1 -0
  481. package/dist/esm/export/ThreeJSExporter.js +52 -55
  482. package/dist/esm/export/ThreeJSExporter.js.map +1 -1
  483. package/dist/esm/export/Tic80Exporter.js +1312 -0
  484. package/dist/esm/export/Tic80Exporter.js.map +1 -0
  485. package/dist/esm/export/UnityExporter.js +41 -56
  486. package/dist/esm/export/UnityExporter.js.map +1 -1
  487. package/dist/esm/export/UnrealExporter.js +959 -0
  488. package/dist/esm/export/UnrealExporter.js.map +1 -0
  489. package/dist/esm/export/WebExporter.js +42 -50
  490. package/dist/esm/export/WebExporter.js.map +1 -1
  491. package/dist/esm/export/index.js +38 -2
  492. package/dist/esm/export/index.js.map +1 -1
  493. package/dist/esm/godot-integration/GodotAssetLibrary.js +711 -0
  494. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +1 -0
  495. package/dist/esm/godot-integration/GodotImport.js +1062 -0
  496. package/dist/esm/godot-integration/GodotImport.js.map +1 -0
  497. package/dist/esm/godot-integration/GodotLiveLink.js +958 -0
  498. package/dist/esm/godot-integration/GodotLiveLink.js.map +1 -0
  499. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +666 -0
  500. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  501. package/dist/esm/i18n/I18n.js +56 -30
  502. package/dist/esm/i18n/I18n.js.map +1 -1
  503. package/dist/esm/i18n/useTranslation.js +4 -4
  504. package/dist/esm/i18n/useTranslation.js.map +1 -1
  505. package/dist/esm/import/AsepriteImporter.js +15 -19
  506. package/dist/esm/import/AsepriteImporter.js.map +1 -1
  507. package/dist/esm/import/DragonBonesImporter.js +36 -40
  508. package/dist/esm/import/DragonBonesImporter.js.map +1 -1
  509. package/dist/esm/import/GameMakerImporter.js +11 -17
  510. package/dist/esm/import/GameMakerImporter.js.map +1 -1
  511. package/dist/esm/import/GodotSceneImporter.js +43 -29
  512. package/dist/esm/import/GodotSceneImporter.js.map +1 -1
  513. package/dist/esm/import/LDtkImporter.js +16 -17
  514. package/dist/esm/import/LDtkImporter.js.map +1 -1
  515. package/dist/esm/import/Live2DImporter.js +16 -19
  516. package/dist/esm/import/Live2DImporter.js.map +1 -1
  517. package/dist/esm/import/NdgFormat.js +28 -35
  518. package/dist/esm/import/NdgFormat.js.map +1 -1
  519. package/dist/esm/import/OgmoImporter.js +16 -18
  520. package/dist/esm/import/OgmoImporter.js.map +1 -1
  521. package/dist/esm/import/RPGMakerImporter.js +5 -6
  522. package/dist/esm/import/RPGMakerImporter.js.map +1 -1
  523. package/dist/esm/import/SceneImporter.js +23 -13
  524. package/dist/esm/import/SceneImporter.js.map +1 -1
  525. package/dist/esm/import/SpineImporter.js +20 -20
  526. package/dist/esm/import/SpineImporter.js.map +1 -1
  527. package/dist/esm/import/SpriterImporter.js +38 -46
  528. package/dist/esm/import/SpriterImporter.js.map +1 -1
  529. package/dist/esm/import/TiledMapImporter.js +20 -24
  530. package/dist/esm/import/TiledMapImporter.js.map +1 -1
  531. package/dist/esm/import/UnitySceneImporter.js +15 -15
  532. package/dist/esm/import/UnitySceneImporter.js.map +1 -1
  533. package/dist/esm/index.js +76 -3
  534. package/dist/esm/index.js.map +1 -1
  535. package/dist/esm/input/GamepadNavigation.js +82 -47
  536. package/dist/esm/input/GamepadNavigation.js.map +1 -1
  537. package/dist/esm/input/InputManager.js +107 -52
  538. package/dist/esm/input/InputManager.js.map +1 -1
  539. package/dist/esm/input/useGamepads.js +35 -29
  540. package/dist/esm/input/useGamepads.js.map +1 -1
  541. package/dist/esm/integration/IconSprite.js +39 -21
  542. package/dist/esm/integration/IconSprite.js.map +1 -1
  543. package/dist/esm/inventory/InventorySystem.js +218 -127
  544. package/dist/esm/inventory/InventorySystem.js.map +1 -1
  545. package/dist/esm/kids/KidMode.js +491 -78
  546. package/dist/esm/kids/KidMode.js.map +1 -1
  547. package/dist/esm/kids/KidTools.js +154 -48
  548. package/dist/esm/kids/KidTools.js.map +1 -1
  549. package/dist/esm/monetization/Monetization.js +47 -35
  550. package/dist/esm/monetization/Monetization.js.map +1 -1
  551. package/dist/esm/multiplayer/LocalMultiplayer.js +48 -26
  552. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -1
  553. package/dist/esm/multiplayer/MiniGameTypes.js +23 -10
  554. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -1
  555. package/dist/esm/native-engine/AssetPipeline.js +537 -0
  556. package/dist/esm/native-engine/AssetPipeline.js.map +1 -0
  557. package/dist/esm/native-engine/AudioEngine.js +822 -0
  558. package/dist/esm/native-engine/AudioEngine.js.map +1 -0
  559. package/dist/esm/native-engine/InputSystem.js +1170 -0
  560. package/dist/esm/native-engine/InputSystem.js.map +1 -0
  561. package/dist/esm/native-engine/NetworkingSystem.js +817 -0
  562. package/dist/esm/native-engine/NetworkingSystem.js.map +1 -0
  563. package/dist/esm/native-engine/PhysicsEngine.js +619 -0
  564. package/dist/esm/native-engine/PhysicsEngine.js.map +1 -0
  565. package/dist/esm/native-engine/RenderingEngine.js +368 -0
  566. package/dist/esm/native-engine/RenderingEngine.js.map +1 -0
  567. package/dist/esm/native-engine/SceneGraph.js +857 -0
  568. package/dist/esm/native-engine/SceneGraph.js.map +1 -0
  569. package/dist/esm/network/MultiplayerTransport.js +63 -33
  570. package/dist/esm/network/MultiplayerTransport.js.map +1 -1
  571. package/dist/esm/network/Networking.js +87 -62
  572. package/dist/esm/network/Networking.js.map +1 -1
  573. package/dist/esm/pathfinding/Pathfinding.js +71 -26
  574. package/dist/esm/pathfinding/Pathfinding.js.map +1 -1
  575. package/dist/esm/performance/AssetStreaming.js +649 -0
  576. package/dist/esm/performance/AssetStreaming.js.map +1 -0
  577. package/dist/esm/performance/BenchmarkSuite.js +37 -24
  578. package/dist/esm/performance/BenchmarkSuite.js.map +1 -1
  579. package/dist/esm/performance/DeltaCompression.js +554 -0
  580. package/dist/esm/performance/DeltaCompression.js.map +1 -0
  581. package/dist/esm/performance/DeterministicPhysics.js +573 -0
  582. package/dist/esm/performance/DeterministicPhysics.js.map +1 -0
  583. package/dist/esm/performance/ECSOptimization.js +716 -0
  584. package/dist/esm/performance/ECSOptimization.js.map +1 -0
  585. package/dist/esm/performance/HotReload.js +517 -0
  586. package/dist/esm/performance/HotReload.js.map +1 -0
  587. package/dist/esm/performance/InputRecording.js +580 -0
  588. package/dist/esm/performance/InputRecording.js.map +1 -0
  589. package/dist/esm/performance/InterestManagement.js +524 -0
  590. package/dist/esm/performance/InterestManagement.js.map +1 -0
  591. package/dist/esm/performance/LocalizationRuntime.js +465 -0
  592. package/dist/esm/performance/LocalizationRuntime.js.map +1 -0
  593. package/dist/esm/performance/MemoryManagement.js +481 -0
  594. package/dist/esm/performance/MemoryManagement.js.map +1 -0
  595. package/dist/esm/performance/ModSupport.js +520 -0
  596. package/dist/esm/performance/ModSupport.js.map +1 -0
  597. package/dist/esm/performance/MultiThreadedPhysics.js +491 -0
  598. package/dist/esm/performance/MultiThreadedPhysics.js.map +1 -0
  599. package/dist/esm/performance/NetworkPrediction.js +508 -0
  600. package/dist/esm/performance/NetworkPrediction.js.map +1 -0
  601. package/dist/esm/performance/ObjectPooling.js +639 -0
  602. package/dist/esm/performance/ObjectPooling.js.map +1 -0
  603. package/dist/esm/performance/Performance.js +64 -25
  604. package/dist/esm/performance/Performance.js.map +1 -1
  605. package/dist/esm/performance/PerformanceAdvanced.js +83 -49
  606. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -1
  607. package/dist/esm/performance/SaveSystem.js +567 -0
  608. package/dist/esm/performance/SaveSystem.js.map +1 -0
  609. package/dist/esm/performance/WebGPURenderer.js +697 -0
  610. package/dist/esm/performance/WebGPURenderer.js.map +1 -0
  611. package/dist/esm/physics/PhysicsAdvanced.js +32 -20
  612. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -1
  613. package/dist/esm/physics/PhysicsEngine2D.js +63 -36
  614. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -1
  615. package/dist/esm/plugins/PluginSDK.js +46 -34
  616. package/dist/esm/plugins/PluginSDK.js.map +1 -1
  617. package/dist/esm/plugins/PluginTestKit.js +28 -29
  618. package/dist/esm/plugins/PluginTestKit.js.map +1 -1
  619. package/dist/esm/procedural/Procedural.js +24 -17
  620. package/dist/esm/procedural/Procedural.js.map +1 -1
  621. package/dist/esm/procedural/WorldBuilding.js +188 -55
  622. package/dist/esm/procedural/WorldBuilding.js.map +1 -1
  623. package/dist/esm/quest/QuestSystem.js +145 -111
  624. package/dist/esm/quest/QuestSystem.js.map +1 -1
  625. package/dist/esm/release/Release.js +142 -31
  626. package/dist/esm/release/Release.js.map +1 -1
  627. package/dist/esm/rendering/Camera2D.js +12 -7
  628. package/dist/esm/rendering/Camera2D.js.map +1 -1
  629. package/dist/esm/rendering/Renderer2D.js +62 -26
  630. package/dist/esm/rendering/Renderer2D.js.map +1 -1
  631. package/dist/esm/rendering/WebGPURenderPipeline.js +60 -31
  632. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -1
  633. package/dist/esm/runtime3d/Runtime3D.js +80 -55
  634. package/dist/esm/runtime3d/Runtime3D.js.map +1 -1
  635. package/dist/esm/runtime3d/SceneEditor3D.js +20 -11
  636. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -1
  637. package/dist/esm/scene/SceneManager.js +26 -12
  638. package/dist/esm/scene/SceneManager.js.map +1 -1
  639. package/dist/esm/scripting/GraphToAST.js +36 -24
  640. package/dist/esm/scripting/GraphToAST.js.map +1 -1
  641. package/dist/esm/scripting/LanguageExporter.js +2 -3
  642. package/dist/esm/scripting/LanguageExporter.js.map +1 -1
  643. package/dist/esm/scripting/NodeGraph.js +49 -32
  644. package/dist/esm/scripting/NodeGraph.js.map +1 -1
  645. package/dist/esm/scripting/ScriptAST.js +19 -6
  646. package/dist/esm/scripting/ScriptAST.js.map +1 -1
  647. package/dist/esm/scripting/VisualScripting2.js +13 -12
  648. package/dist/esm/scripting/VisualScripting2.js.map +1 -1
  649. package/dist/esm/scripting/exporters/CSharpExporter.js +16 -16
  650. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -1
  651. package/dist/esm/scripting/exporters/GDScriptExporter.js +3 -6
  652. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -1
  653. package/dist/esm/scripting/exporters/LuaExporter.js +5 -9
  654. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -1
  655. package/dist/esm/scripting/exporters/PythonExporter.js +7 -13
  656. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -1
  657. package/dist/esm/scripting/exporters/RustExporter.js +7 -14
  658. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -1
  659. package/dist/esm/scripting/exporters/TypeScriptExporter.js +28 -29
  660. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -1
  661. package/dist/esm/social/Social.js +27 -20
  662. package/dist/esm/social/Social.js.map +1 -1
  663. package/dist/esm/systems/LightingSystem.js +968 -0
  664. package/dist/esm/systems/LightingSystem.js.map +1 -0
  665. package/dist/esm/systems/ParticleSystem2.js +34 -17
  666. package/dist/esm/systems/ParticleSystem2.js.map +1 -1
  667. package/dist/esm/systems/PhysicsDebugSystem.js +1219 -0
  668. package/dist/esm/systems/PhysicsDebugSystem.js.map +1 -0
  669. package/dist/esm/systems/TerrainSystem.js +1125 -0
  670. package/dist/esm/systems/TerrainSystem.js.map +1 -0
  671. package/dist/esm/templates/ActionTemplates.js +144 -24
  672. package/dist/esm/templates/ActionTemplates.js.map +1 -1
  673. package/dist/esm/templates/FightingTemplate.js +513 -0
  674. package/dist/esm/templates/FightingTemplate.js.map +1 -0
  675. package/dist/esm/templates/MetroidvaniaTemplate.js +484 -0
  676. package/dist/esm/templates/MetroidvaniaTemplate.js.map +1 -0
  677. package/dist/esm/templates/PartyTemplates.js +60 -28
  678. package/dist/esm/templates/PartyTemplates.js.map +1 -1
  679. package/dist/esm/templates/PuzzleTemplates.js +63 -22
  680. package/dist/esm/templates/PuzzleTemplates.js.map +1 -1
  681. package/dist/esm/templates/RPGTemplates.js +29 -15
  682. package/dist/esm/templates/RPGTemplates.js.map +1 -1
  683. package/dist/esm/templates/SportsTemplates.js +41 -17
  684. package/dist/esm/templates/SportsTemplates.js.map +1 -1
  685. package/dist/esm/templates/StrategyTemplates.js +45 -18
  686. package/dist/esm/templates/StrategyTemplates.js.map +1 -1
  687. package/dist/esm/templates/SurvivalTemplate.js +447 -0
  688. package/dist/esm/templates/SurvivalTemplate.js.map +1 -0
  689. package/dist/esm/templates/WaveDefense.js +139 -52
  690. package/dist/esm/templates/WaveDefense.js.map +1 -1
  691. package/dist/esm/tilemap/Tilemap.js +48 -32
  692. package/dist/esm/tilemap/Tilemap.js.map +1 -1
  693. package/dist/esm/tutorials/TutorialBranching.js +111 -42
  694. package/dist/esm/tutorials/TutorialBranching.js.map +1 -1
  695. package/dist/esm/tutorials/TutorialEngine.js +152 -80
  696. package/dist/esm/tutorials/TutorialEngine.js.map +1 -1
  697. package/dist/esm/tutorials/TutorialOverlay.js +117 -40
  698. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -1
  699. package/dist/esm/ui/GameUI.js +69 -42
  700. package/dist/esm/ui/GameUI.js.map +1 -1
  701. package/dist/esm/unity-integration/UnityAssetStore.js +749 -0
  702. package/dist/esm/unity-integration/UnityAssetStore.js.map +1 -0
  703. package/dist/esm/unity-integration/UnityImport.js +1246 -0
  704. package/dist/esm/unity-integration/UnityImport.js.map +1 -0
  705. package/dist/esm/unity-integration/UnityLiveLink.js +1017 -0
  706. package/dist/esm/unity-integration/UnityLiveLink.js.map +1 -0
  707. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +794 -0
  708. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  709. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +831 -0
  710. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  711. package/dist/esm/unreal-integration/UnrealImport.js +437 -0
  712. package/dist/esm/unreal-integration/UnrealImport.js.map +1 -0
  713. package/dist/esm/unreal-integration/UnrealLiveLink.js +1182 -0
  714. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +1 -0
  715. package/dist/esm/unreal-integration/UnrealMarketplace.js +490 -0
  716. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +1 -0
  717. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +833 -0
  718. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  719. package/dist/esm/xr/ARVR.js +32 -9
  720. package/dist/esm/xr/ARVR.js.map +1 -1
  721. package/package.json +7 -6
@@ -17,7 +17,18 @@ const DEFAULT_PARENT_CONFIG = {
17
17
  contentFilter: 'strict',
18
18
  allowChat: false,
19
19
  settingsPin: '',
20
- allowedSpriteCategories: ['animals', 'people', 'vehicles', 'nature', 'food', 'fantasy', 'space', 'sports', 'buildings', 'effects'],
20
+ allowedSpriteCategories: [
21
+ 'animals',
22
+ 'people',
23
+ 'vehicles',
24
+ 'nature',
25
+ 'food',
26
+ 'fantasy',
27
+ 'space',
28
+ 'sports',
29
+ 'buildings',
30
+ 'effects',
31
+ ],
21
32
  enableSounds: true,
22
33
  };
23
34
  const DEFAULT_KID_MODE_CONFIG = {
@@ -40,8 +51,9 @@ class KidModeManager {
40
51
  }
41
52
  enable(ageGroup) {
42
53
  this.config.enabled = true;
43
- if (ageGroup)
54
+ if (ageGroup) {
44
55
  this.config.ageGroup = ageGroup;
56
+ }
45
57
  this.sessionStartTime = Date.now();
46
58
  }
47
59
  disable() {
@@ -78,20 +90,23 @@ class KidModeManager {
78
90
  }
79
91
  /** Award stars (gamification) */
80
92
  awardStars(count) {
81
- if (!this.profile)
93
+ if (!this.profile) {
82
94
  return 0;
95
+ }
83
96
  this.profile.stars += count;
84
97
  this.saveProfile();
85
98
  return this.profile.stars;
86
99
  }
87
100
  /** Check and update streak */
88
101
  updateStreak() {
89
- if (!this.profile)
102
+ if (!this.profile) {
90
103
  return 0;
104
+ }
91
105
  const today = new Date().toISOString().split('T')[0];
92
106
  const lastDate = this.profile.lastActiveDate;
93
- if (lastDate === today)
107
+ if (lastDate === today) {
94
108
  return this.profile.streak;
109
+ }
95
110
  const last = new Date(lastDate);
96
111
  const now = new Date(today);
97
112
  const diffDays = Math.floor((now.getTime() - last.getTime()) / 86400000);
@@ -107,8 +122,9 @@ class KidModeManager {
107
122
  }
108
123
  /** Mark tutorial as completed, award stars */
109
124
  completeTutorial(tutorialId) {
110
- if (!this.profile)
125
+ if (!this.profile) {
111
126
  return 0;
127
+ }
112
128
  if (!this.profile.completedTutorials.includes(tutorialId)) {
113
129
  this.profile.completedTutorials.push(tutorialId);
114
130
  this.awardStars(5);
@@ -119,10 +135,12 @@ class KidModeManager {
119
135
  /* ── Badge System ───────────────────────────────────────────── */
120
136
  /** Check if a badge is earned */
121
137
  checkBadge(badge) {
122
- if (!this.profile)
138
+ if (!this.profile) {
123
139
  return false;
124
- if (this.profile.earnedBadges.includes(badge.id))
140
+ }
141
+ if (this.profile.earnedBadges.includes(badge.id)) {
125
142
  return true;
143
+ }
126
144
  const c = badge.condition;
127
145
  let earned = false;
128
146
  switch (c.type) {
@@ -152,8 +170,9 @@ class KidModeManager {
152
170
  /** Get remaining play time in minutes. -1 = unlimited. */
153
171
  getRemainingTime() {
154
172
  const limit = this.config.parentConfig.dailyTimeLimitMinutes;
155
- if (limit === 0)
173
+ if (limit === 0) {
156
174
  return -1;
175
+ }
157
176
  const elapsed = this.sessionPlayTime + (Date.now() - this.sessionStartTime) / 60000;
158
177
  return Math.max(0, limit - elapsed);
159
178
  }
@@ -166,8 +185,9 @@ class KidModeManager {
166
185
  /** Check if a sprite is appropriate for current settings */
167
186
  isSpriteAllowed(sprite) {
168
187
  const parentConfig = this.config.parentConfig;
169
- if (!parentConfig.allowedSpriteCategories.includes(sprite.category))
188
+ if (!parentConfig.allowedSpriteCategories.includes(sprite.category)) {
170
189
  return false;
190
+ }
171
191
  const ageOrder = ['6-8', '9-11', '12-14', '15+'];
172
192
  const currentIdx = ageOrder.indexOf(this.config.ageGroup);
173
193
  const spriteIdx = ageOrder.indexOf(sprite.ageAppropriate);
@@ -177,7 +197,7 @@ class KidModeManager {
177
197
  getAvailableBlocks(allBlocks) {
178
198
  const ageOrder = ['6-8', '9-11', '12-14', '15+'];
179
199
  const currentIdx = ageOrder.indexOf(this.config.ageGroup);
180
- return allBlocks.filter(b => {
200
+ return allBlocks.filter((b) => {
181
201
  const blockIdx = ageOrder.indexOf(b.minAge);
182
202
  return blockIdx <= currentIdx;
183
203
  });
@@ -204,36 +224,44 @@ class KidModeManager {
204
224
  /** Get leaderboard sorted by stars */
205
225
  getLeaderboard() {
206
226
  const classroom = this.config.classroom;
207
- if (!(classroom === null || classroom === void 0 ? void 0 : classroom.showLeaderboard))
227
+ if (!classroom?.showLeaderboard) {
208
228
  return [];
229
+ }
209
230
  return classroom.students
210
- .map(s => ({ name: s.name, emoji: s.avatarEmoji, stars: s.stars }))
231
+ .map((s) => ({ name: s.name, emoji: s.avatarEmoji, stars: s.stars }))
211
232
  .sort((a, b) => b.stars - a.stars);
212
233
  }
213
234
  /* ── Persistence ────────────────────────────────────────────── */
214
235
  saveProfile() {
215
- if (!this.profile)
236
+ if (!this.profile) {
216
237
  return;
238
+ }
217
239
  try {
218
240
  if (typeof localStorage !== 'undefined') {
219
241
  localStorage.setItem(this.storageKey, JSON.stringify(this.profile));
220
242
  }
221
243
  }
222
- catch ( /* quota exceeded or unavailable */_a) { /* quota exceeded or unavailable */ }
244
+ catch {
245
+ /* quota exceeded or unavailable */
246
+ }
223
247
  }
224
248
  loadProfile() {
225
249
  try {
226
- if (typeof localStorage === 'undefined')
250
+ if (typeof localStorage === 'undefined') {
227
251
  return;
252
+ }
228
253
  const raw = localStorage.getItem(this.storageKey);
229
- if (!raw)
254
+ if (!raw) {
230
255
  return;
256
+ }
231
257
  const parsed = JSON.parse(raw);
232
258
  if (isKidProfile(parsed)) {
233
259
  this.profile = parsed;
234
260
  }
235
261
  }
236
- catch ( /* ignore */_a) { /* ignore */ }
262
+ catch {
263
+ /* ignore */
264
+ }
237
265
  }
238
266
  dispose() {
239
267
  this.saveProfile();
@@ -242,8 +270,9 @@ class KidModeManager {
242
270
  }
243
271
  /* ── Type guard ───────────────────────────────────────────────── */
244
272
  function isKidProfile(v) {
245
- if (typeof v !== 'object' || v === null)
273
+ if (typeof v !== 'object' || v === null) {
246
274
  return false;
275
+ }
247
276
  const o = v;
248
277
  return typeof o.name === 'string' && typeof o.stars === 'number' && Array.isArray(o.earnedBadges);
249
278
  }
@@ -281,7 +310,16 @@ const KID_DIFFICULTY_PRESETS = {
281
310
  master: {
282
311
  label: { en: 'Master', pl: 'Mistrz', de: 'Meister' },
283
312
  emoji: '🏆',
284
- enabledCategories: ['motion', 'looks', 'events', 'control', 'sensing', 'operators', 'variables', 'sounds'],
313
+ enabledCategories: [
314
+ 'motion',
315
+ 'looks',
316
+ 'events',
317
+ 'control',
318
+ 'sensing',
319
+ 'operators',
320
+ 'variables',
321
+ 'sounds',
322
+ ],
285
323
  maxEntities: 200,
286
324
  showCodeView: true,
287
325
  showInspector: true,
@@ -297,9 +335,20 @@ const VISUAL_BLOCKS = [
297
335
  category: 'motion',
298
336
  emoji: '➡️',
299
337
  label: { en: 'Move Right', pl: 'Idź w prawo', de: 'Rechts bewegen' },
300
- description: { en: 'Move the character to the right', pl: 'Przesuń postać w prawo', de: 'Bewege die Figur nach rechts' },
338
+ description: {
339
+ en: 'Move the character to the right',
340
+ pl: 'Przesuń postać w prawo',
341
+ de: 'Bewege die Figur nach rechts',
342
+ },
301
343
  params: [
302
- { name: 'speed', type: 'number', label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' }, defaultValue: 5, min: 1, max: 20 },
344
+ {
345
+ name: 'speed',
346
+ type: 'number',
347
+ label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' },
348
+ defaultValue: 5,
349
+ min: 1,
350
+ max: 20,
351
+ },
303
352
  ],
304
353
  generatesAction: 'transform.x += params.speed',
305
354
  minAge: '6-8',
@@ -309,9 +358,20 @@ const VISUAL_BLOCKS = [
309
358
  category: 'motion',
310
359
  emoji: '⬅️',
311
360
  label: { en: 'Move Left', pl: 'Idź w lewo', de: 'Links bewegen' },
312
- description: { en: 'Move the character to the left', pl: 'Przesuń postać w lewo', de: 'Bewege die Figur nach links' },
361
+ description: {
362
+ en: 'Move the character to the left',
363
+ pl: 'Przesuń postać w lewo',
364
+ de: 'Bewege die Figur nach links',
365
+ },
313
366
  params: [
314
- { name: 'speed', type: 'number', label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' }, defaultValue: 5, min: 1, max: 20 },
367
+ {
368
+ name: 'speed',
369
+ type: 'number',
370
+ label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' },
371
+ defaultValue: 5,
372
+ min: 1,
373
+ max: 20,
374
+ },
315
375
  ],
316
376
  generatesAction: 'transform.x -= params.speed',
317
377
  minAge: '6-8',
@@ -321,9 +381,20 @@ const VISUAL_BLOCKS = [
321
381
  category: 'motion',
322
382
  emoji: '⬆️',
323
383
  label: { en: 'Move Up', pl: 'Idź w górę', de: 'Nach oben' },
324
- description: { en: 'Move the character up', pl: 'Przesuń postać w górę', de: 'Bewege die Figur nach oben' },
384
+ description: {
385
+ en: 'Move the character up',
386
+ pl: 'Przesuń postać w górę',
387
+ de: 'Bewege die Figur nach oben',
388
+ },
325
389
  params: [
326
- { name: 'speed', type: 'number', label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' }, defaultValue: 5, min: 1, max: 20 },
390
+ {
391
+ name: 'speed',
392
+ type: 'number',
393
+ label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' },
394
+ defaultValue: 5,
395
+ min: 1,
396
+ max: 20,
397
+ },
327
398
  ],
328
399
  generatesAction: 'transform.y -= params.speed',
329
400
  minAge: '6-8',
@@ -333,9 +404,20 @@ const VISUAL_BLOCKS = [
333
404
  category: 'motion',
334
405
  emoji: '⬇️',
335
406
  label: { en: 'Move Down', pl: 'Idź w dół', de: 'Nach unten' },
336
- description: { en: 'Move the character down', pl: 'Przesuń postać w dół', de: 'Bewege die Figur nach unten' },
407
+ description: {
408
+ en: 'Move the character down',
409
+ pl: 'Przesuń postać w dół',
410
+ de: 'Bewege die Figur nach unten',
411
+ },
337
412
  params: [
338
- { name: 'speed', type: 'number', label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' }, defaultValue: 5, min: 1, max: 20 },
413
+ {
414
+ name: 'speed',
415
+ type: 'number',
416
+ label: { en: 'Speed', pl: 'Prędkość', de: 'Geschwindigkeit' },
417
+ defaultValue: 5,
418
+ min: 1,
419
+ max: 20,
420
+ },
339
421
  ],
340
422
  generatesAction: 'transform.y += params.speed',
341
423
  minAge: '6-8',
@@ -345,9 +427,20 @@ const VISUAL_BLOCKS = [
345
427
  category: 'motion',
346
428
  emoji: '🦘',
347
429
  label: { en: 'Jump!', pl: 'Skocz!', de: 'Springe!' },
348
- description: { en: 'Make the character jump', pl: 'Spraw, żeby postać skoczyła', de: 'Lass die Figur springen' },
430
+ description: {
431
+ en: 'Make the character jump',
432
+ pl: 'Spraw, żeby postać skoczyła',
433
+ de: 'Lass die Figur springen',
434
+ },
349
435
  params: [
350
- { name: 'force', type: 'number', label: { en: 'Jump Force', pl: 'Siła skoku', de: 'Sprungkraft' }, defaultValue: 10, min: 5, max: 30 },
436
+ {
437
+ name: 'force',
438
+ type: 'number',
439
+ label: { en: 'Jump Force', pl: 'Siła skoku', de: 'Sprungkraft' },
440
+ defaultValue: 10,
441
+ min: 5,
442
+ max: 30,
443
+ },
351
444
  ],
352
445
  generatesAction: 'rigidbody.velocity.y = -params.force',
353
446
  minAge: '6-8',
@@ -359,7 +452,14 @@ const VISUAL_BLOCKS = [
359
452
  label: { en: 'Rotate', pl: 'Obróć', de: 'Drehen' },
360
453
  description: { en: 'Rotate the character', pl: 'Obróć postać', de: 'Drehe die Figur' },
361
454
  params: [
362
- { name: 'degrees', type: 'number', label: { en: 'Degrees', pl: 'Stopnie', de: 'Grad' }, defaultValue: 15, min: 1, max: 360 },
455
+ {
456
+ name: 'degrees',
457
+ type: 'number',
458
+ label: { en: 'Degrees', pl: 'Stopnie', de: 'Grad' },
459
+ defaultValue: 15,
460
+ min: 1,
461
+ max: 360,
462
+ },
363
463
  ],
364
464
  generatesAction: 'transform.rotation += params.degrees',
365
465
  minAge: '6-8',
@@ -392,7 +492,12 @@ const VISUAL_BLOCKS = [
392
492
  label: { en: 'Change Color', pl: 'Zmień kolor', de: 'Farbe ändern' },
393
493
  description: { en: 'Change the color', pl: 'Zmień kolor obiektu', de: 'Ändere die Farbe' },
394
494
  params: [
395
- { name: 'color', type: 'color', label: { en: 'Color', pl: 'Kolor', de: 'Farbe' }, defaultValue: '#ff0000' },
495
+ {
496
+ name: 'color',
497
+ type: 'color',
498
+ label: { en: 'Color', pl: 'Kolor', de: 'Farbe' },
499
+ defaultValue: '#ff0000',
500
+ },
396
501
  ],
397
502
  generatesAction: 'sprite.color = params.color',
398
503
  minAge: '6-8',
@@ -402,9 +507,18 @@ const VISUAL_BLOCKS = [
402
507
  category: 'looks',
403
508
  emoji: '💬',
404
509
  label: { en: 'Say', pl: 'Powiedz', de: 'Sagen' },
405
- description: { en: 'Show a speech bubble', pl: 'Pokaż dymek z tekstem', de: 'Sprechblase zeigen' },
510
+ description: {
511
+ en: 'Show a speech bubble',
512
+ pl: 'Pokaż dymek z tekstem',
513
+ de: 'Sprechblase zeigen',
514
+ },
406
515
  params: [
407
- { name: 'text', type: 'string', label: { en: 'Text', pl: 'Tekst', de: 'Text' }, defaultValue: 'Hello!' },
516
+ {
517
+ name: 'text',
518
+ type: 'string',
519
+ label: { en: 'Text', pl: 'Tekst', de: 'Text' },
520
+ defaultValue: 'Hello!',
521
+ },
408
522
  ],
409
523
  generatesAction: 'ui.showBubble(entity, params.text)',
410
524
  minAge: '6-8',
@@ -416,7 +530,14 @@ const VISUAL_BLOCKS = [
416
530
  label: { en: 'Grow', pl: 'Powiększ', de: 'Vergrößern' },
417
531
  description: { en: 'Make bigger', pl: 'Powiększ obiekt', de: 'Größer machen' },
418
532
  params: [
419
- { name: 'amount', type: 'number', label: { en: 'Amount', pl: 'Ilość', de: 'Menge' }, defaultValue: 0.1, min: 0.01, max: 2 },
533
+ {
534
+ name: 'amount',
535
+ type: 'number',
536
+ label: { en: 'Amount', pl: 'Ilość', de: 'Menge' },
537
+ defaultValue: 0.1,
538
+ min: 0.01,
539
+ max: 2,
540
+ },
420
541
  ],
421
542
  generatesAction: 'transform.scaleX += params.amount; transform.scaleY += params.amount',
422
543
  minAge: '6-8',
@@ -427,7 +548,11 @@ const VISUAL_BLOCKS = [
427
548
  category: 'events',
428
549
  emoji: '🏁',
429
550
  label: { en: 'When Game Starts', pl: 'Gdy gra się zaczyna', de: 'Wenn Spiel startet' },
430
- description: { en: 'Run when the game begins', pl: 'Uruchom gdy gra się rozpocznie', de: 'Ausführen, wenn das Spiel beginnt' },
551
+ description: {
552
+ en: 'Run when the game begins',
553
+ pl: 'Uruchom gdy gra się rozpocznie',
554
+ de: 'Ausführen, wenn das Spiel beginnt',
555
+ },
431
556
  params: [],
432
557
  generatesAction: 'events.on("engine:started")',
433
558
  minAge: '6-8',
@@ -437,7 +562,11 @@ const VISUAL_BLOCKS = [
437
562
  category: 'events',
438
563
  emoji: '⌨️',
439
564
  label: { en: 'When Key Pressed', pl: 'Gdy naciśniesz klawisz', de: 'Wenn Taste gedrückt' },
440
- description: { en: 'Run when a key is pressed', pl: 'Uruchom po naciśnięciu klawisza', de: 'Ausführen, wenn Taste gedrückt' },
565
+ description: {
566
+ en: 'Run when a key is pressed',
567
+ pl: 'Uruchom po naciśnięciu klawisza',
568
+ de: 'Ausführen, wenn Taste gedrückt',
569
+ },
441
570
  params: [
442
571
  {
443
572
  name: 'key',
@@ -461,7 +590,11 @@ const VISUAL_BLOCKS = [
461
590
  category: 'events',
462
591
  emoji: '👆',
463
592
  label: { en: 'When Clicked', pl: 'Gdy klikniesz', de: 'Wenn geklickt' },
464
- description: { en: 'Run when this object is clicked', pl: 'Uruchom po kliknięciu obiektu', de: 'Ausführen, wenn Objekt geklickt' },
593
+ description: {
594
+ en: 'Run when this object is clicked',
595
+ pl: 'Uruchom po kliknięciu obiektu',
596
+ de: 'Ausführen, wenn Objekt geklickt',
597
+ },
465
598
  params: [],
466
599
  generatesAction: 'events.on("entity:clicked")',
467
600
  minAge: '6-8',
@@ -472,9 +605,20 @@ const VISUAL_BLOCKS = [
472
605
  category: 'control',
473
606
  emoji: '🔁',
474
607
  label: { en: 'Repeat', pl: 'Powtórz', de: 'Wiederholen' },
475
- description: { en: 'Repeat blocks N times', pl: 'Powtórz bloki N razy', de: 'Blöcke N-mal wiederholen' },
608
+ description: {
609
+ en: 'Repeat blocks N times',
610
+ pl: 'Powtórz bloki N razy',
611
+ de: 'Blöcke N-mal wiederholen',
612
+ },
476
613
  params: [
477
- { name: 'times', type: 'number', label: { en: 'Times', pl: 'Razy', de: 'Mal' }, defaultValue: 10, min: 1, max: 1000 },
614
+ {
615
+ name: 'times',
616
+ type: 'number',
617
+ label: { en: 'Times', pl: 'Razy', de: 'Mal' },
618
+ defaultValue: 10,
619
+ min: 1,
620
+ max: 1000,
621
+ },
478
622
  ],
479
623
  generatesAction: 'for(let i=0; i<params.times; i++)',
480
624
  minAge: '6-8',
@@ -484,7 +628,11 @@ const VISUAL_BLOCKS = [
484
628
  category: 'control',
485
629
  emoji: '♾️',
486
630
  label: { en: 'Forever', pl: 'Zawsze', de: 'Immer' },
487
- description: { en: 'Repeat forever (every frame)', pl: 'Powtarzaj bez końca (co klatkę)', de: 'Immer wiederholen (jedes Frame)' },
631
+ description: {
632
+ en: 'Repeat forever (every frame)',
633
+ pl: 'Powtarzaj bez końca (co klatkę)',
634
+ de: 'Immer wiederholen (jedes Frame)',
635
+ },
488
636
  params: [],
489
637
  generatesAction: 'system.update',
490
638
  minAge: '6-8',
@@ -494,7 +642,11 @@ const VISUAL_BLOCKS = [
494
642
  category: 'control',
495
643
  emoji: '❓',
496
644
  label: { en: 'If...Then', pl: 'Jeśli...To', de: 'Wenn...Dann' },
497
- description: { en: 'Do something only if a condition is true', pl: 'Zrób coś tylko gdy warunek jest prawdziwy', de: 'Etwas nur tun, wenn Bedingung wahr' },
645
+ description: {
646
+ en: 'Do something only if a condition is true',
647
+ pl: 'Zrób coś tylko gdy warunek jest prawdziwy',
648
+ de: 'Etwas nur tun, wenn Bedingung wahr',
649
+ },
498
650
  params: [],
499
651
  generatesAction: 'if(condition)',
500
652
  minAge: '9-11',
@@ -506,7 +658,14 @@ const VISUAL_BLOCKS = [
506
658
  label: { en: 'Wait', pl: 'Czekaj', de: 'Warten' },
507
659
  description: { en: 'Wait for some time', pl: 'Poczekaj chwilę', de: 'Eine Weile warten' },
508
660
  params: [
509
- { name: 'seconds', type: 'number', label: { en: 'Seconds', pl: 'Sekund', de: 'Sekunden' }, defaultValue: 1, min: 0.1, max: 60 },
661
+ {
662
+ name: 'seconds',
663
+ type: 'number',
664
+ label: { en: 'Seconds', pl: 'Sekund', de: 'Sekunden' },
665
+ defaultValue: 1,
666
+ min: 0.1,
667
+ max: 60,
668
+ },
510
669
  ],
511
670
  generatesAction: 'await wait(params.seconds)',
512
671
  minAge: '6-8',
@@ -517,9 +676,18 @@ const VISUAL_BLOCKS = [
517
676
  category: 'sensing',
518
677
  emoji: '🤝',
519
678
  label: { en: 'Touching?', pl: 'Dotyka?', de: 'Berührt?' },
520
- description: { en: 'Is this touching another object?', pl: 'Czy dotyka innego obiektu?', de: 'Berührt es ein anderes Objekt?' },
679
+ description: {
680
+ en: 'Is this touching another object?',
681
+ pl: 'Czy dotyka innego obiektu?',
682
+ de: 'Berührt es ein anderes Objekt?',
683
+ },
521
684
  params: [
522
- { name: 'target', type: 'entity', label: { en: 'Target', pl: 'Cel', de: 'Ziel' }, defaultValue: '' },
685
+ {
686
+ name: 'target',
687
+ type: 'entity',
688
+ label: { en: 'Target', pl: 'Cel', de: 'Ziel' },
689
+ defaultValue: '',
690
+ },
523
691
  ],
524
692
  generatesAction: 'physics.isTouching(entity, params.target)',
525
693
  minAge: '9-11',
@@ -529,9 +697,18 @@ const VISUAL_BLOCKS = [
529
697
  category: 'sensing',
530
698
  emoji: '📏',
531
699
  label: { en: 'Distance To', pl: 'Odległość do', de: 'Abstand zu' },
532
- description: { en: 'How far is another object?', pl: 'Jak daleko jest inny obiekt?', de: 'Wie weit ist ein anderes Objekt?' },
700
+ description: {
701
+ en: 'How far is another object?',
702
+ pl: 'Jak daleko jest inny obiekt?',
703
+ de: 'Wie weit ist ein anderes Objekt?',
704
+ },
533
705
  params: [
534
- { name: 'target', type: 'entity', label: { en: 'Target', pl: 'Cel', de: 'Ziel' }, defaultValue: '' },
706
+ {
707
+ name: 'target',
708
+ type: 'entity',
709
+ label: { en: 'Target', pl: 'Cel', de: 'Ziel' },
710
+ defaultValue: '',
711
+ },
535
712
  ],
536
713
  generatesAction: 'v2.dist(transform, targetTransform)',
537
714
  minAge: '9-11',
@@ -544,8 +721,22 @@ const VISUAL_BLOCKS = [
544
721
  label: { en: 'Random Number', pl: 'Losowa liczba', de: 'Zufallszahl' },
545
722
  description: { en: 'Pick a random number', pl: 'Wylosuj liczbę', de: 'Zufallszahl wählen' },
546
723
  params: [
547
- { name: 'min', type: 'number', label: { en: 'Min', pl: 'Min', de: 'Min' }, defaultValue: 1, min: -1e3, max: 1000 },
548
- { name: 'max', type: 'number', label: { en: 'Max', pl: 'Max', de: 'Max' }, defaultValue: 10, min: -1e3, max: 1000 },
724
+ {
725
+ name: 'min',
726
+ type: 'number',
727
+ label: { en: 'Min', pl: 'Min', de: 'Min' },
728
+ defaultValue: 1,
729
+ min: -1e3,
730
+ max: 1000,
731
+ },
732
+ {
733
+ name: 'max',
734
+ type: 'number',
735
+ label: { en: 'Max', pl: 'Max', de: 'Max' },
736
+ defaultValue: 10,
737
+ min: -1e3,
738
+ max: 1000,
739
+ },
549
740
  ],
550
741
  generatesAction: 'Math.random() * (params.max - params.min) + params.min',
551
742
  minAge: '9-11',
@@ -556,9 +747,20 @@ const VISUAL_BLOCKS = [
556
747
  category: 'variables',
557
748
  emoji: '🏆',
558
749
  label: { en: 'Set Score', pl: 'Ustaw wynik', de: 'Punktzahl setzen' },
559
- description: { en: 'Set the score value', pl: 'Ustaw wartość wyniku', de: 'Punktzahl-Wert setzen' },
750
+ description: {
751
+ en: 'Set the score value',
752
+ pl: 'Ustaw wartość wyniku',
753
+ de: 'Punktzahl-Wert setzen',
754
+ },
560
755
  params: [
561
- { name: 'value', type: 'number', label: { en: 'Score', pl: 'Wynik', de: 'Punkte' }, defaultValue: 0, min: 0, max: 999999 },
756
+ {
757
+ name: 'value',
758
+ type: 'number',
759
+ label: { en: 'Score', pl: 'Wynik', de: 'Punkte' },
760
+ defaultValue: 0,
761
+ min: 0,
762
+ max: 999999,
763
+ },
562
764
  ],
563
765
  generatesAction: 'variables.score = params.value',
564
766
  minAge: '9-11',
@@ -570,7 +772,14 @@ const VISUAL_BLOCKS = [
570
772
  label: { en: 'Change Score By', pl: 'Zmień wynik o', de: 'Punktzahl ändern um' },
571
773
  description: { en: 'Add to the score', pl: 'Dodaj do wyniku', de: 'Punktzahl erhöhen' },
572
774
  params: [
573
- { name: 'amount', type: 'number', label: { en: 'Amount', pl: 'Ilość', de: 'Menge' }, defaultValue: 1, min: -100, max: 100 },
775
+ {
776
+ name: 'amount',
777
+ type: 'number',
778
+ label: { en: 'Amount', pl: 'Ilość', de: 'Menge' },
779
+ defaultValue: 1,
780
+ min: -100,
781
+ max: 100,
782
+ },
574
783
  ],
575
784
  generatesAction: 'variables.score += params.amount',
576
785
  minAge: '9-11',
@@ -582,21 +791,33 @@ const KID_BADGES = [
582
791
  id: 'first-steps',
583
792
  emoji: '👶',
584
793
  name: { en: 'First Steps', pl: 'Pierwsze kroki', de: 'Erste Schritte' },
585
- description: { en: 'Complete your first tutorial', pl: 'Ukończ swój pierwszy samouczek', de: 'Schließe dein erstes Tutorial ab' },
794
+ description: {
795
+ en: 'Complete your first tutorial',
796
+ pl: 'Ukończ swój pierwszy samouczek',
797
+ de: 'Schließe dein erstes Tutorial ab',
798
+ },
586
799
  condition: { type: 'tutorials_completed', count: 1 },
587
800
  },
588
801
  {
589
802
  id: 'tutorial-master',
590
803
  emoji: '🎓',
591
804
  name: { en: 'Tutorial Master', pl: 'Mistrz samouczków', de: 'Tutorial-Meister' },
592
- description: { en: 'Complete 5 tutorials', pl: 'Ukończ 5 samouczków', de: 'Schließe 5 Tutorials ab' },
805
+ description: {
806
+ en: 'Complete 5 tutorials',
807
+ pl: 'Ukończ 5 samouczków',
808
+ de: 'Schließe 5 Tutorials ab',
809
+ },
593
810
  condition: { type: 'tutorials_completed', count: 5 },
594
811
  },
595
812
  {
596
813
  id: 'game-creator',
597
814
  emoji: '🎮',
598
815
  name: { en: 'Game Creator', pl: 'Twórca gier', de: 'Spieleentwickler' },
599
- description: { en: 'Create your first game', pl: 'Stwórz swoją pierwszą grę', de: 'Erstelle dein erstes Spiel' },
816
+ description: {
817
+ en: 'Create your first game',
818
+ pl: 'Stwórz swoją pierwszą grę',
819
+ de: 'Erstelle dein erstes Spiel',
820
+ },
600
821
  condition: { type: 'games_created', count: 1 },
601
822
  },
602
823
  {
@@ -610,14 +831,22 @@ const KID_BADGES = [
610
831
  id: 'streak-3',
611
832
  emoji: '🔥',
612
833
  name: { en: '3-Day Streak!', pl: 'Seria 3 dni!', de: '3-Tage-Serie!' },
613
- description: { en: 'Use the engine 3 days in a row', pl: 'Używaj silnika 3 dni z rzędu', de: 'Verwende die Engine 3 Tage hintereinander' },
834
+ description: {
835
+ en: 'Use the engine 3 days in a row',
836
+ pl: 'Używaj silnika 3 dni z rzędu',
837
+ de: 'Verwende die Engine 3 Tage hintereinander',
838
+ },
614
839
  condition: { type: 'days_active', count: 3 },
615
840
  },
616
841
  {
617
842
  id: 'streak-7',
618
843
  emoji: '⚡',
619
844
  name: { en: 'Week Warrior!', pl: 'Tygodniowy wojownik!', de: 'Wochenkrieger!' },
620
- description: { en: 'Use the engine 7 days in a row', pl: 'Używaj silnika 7 dni z rzędu', de: 'Verwende die Engine 7 Tage hintereinander' },
845
+ description: {
846
+ en: 'Use the engine 7 days in a row',
847
+ pl: 'Używaj silnika 7 dni z rzędu',
848
+ de: 'Verwende die Engine 7 Tage hintereinander',
849
+ },
621
850
  condition: { type: 'days_active', count: 7 },
622
851
  },
623
852
  {
@@ -631,32 +860,216 @@ const KID_BADGES = [
631
860
  id: 'tutorial-legend',
632
861
  emoji: '👑',
633
862
  name: { en: 'Tutorial Legend', pl: 'Legenda samouczków', de: 'Tutorial-Legende' },
634
- description: { en: 'Complete 15 tutorials', pl: 'Ukończ 15 samouczków', de: 'Schließe 15 Tutorials ab' },
863
+ description: {
864
+ en: 'Complete 15 tutorials',
865
+ pl: 'Ukończ 15 samouczków',
866
+ de: 'Schließe 15 Tutorials ab',
867
+ },
635
868
  condition: { type: 'tutorials_completed', count: 15 },
636
869
  },
637
870
  ];
638
871
  /* ── Built-in Kid Sprites ─────────────────────────────────────── */
639
872
  const KID_SPRITES = [
640
- { id: 'cat', name: { en: 'Cat', pl: 'Kot', de: 'Katze' }, category: 'animals', emoji: '🐱', assetPath: 'sprites/kids/cat', frameCount: 4, ageAppropriate: '6-8', tags: ['animal', 'pet'] },
641
- { id: 'dog', name: { en: 'Dog', pl: 'Pies', de: 'Hund' }, category: 'animals', emoji: '🐶', assetPath: 'sprites/kids/dog', frameCount: 4, ageAppropriate: '6-8', tags: ['animal', 'pet'] },
642
- { id: 'rabbit', name: { en: 'Rabbit', pl: 'Królik', de: 'Hase' }, category: 'animals', emoji: '🐰', assetPath: 'sprites/kids/rabbit', frameCount: 4, ageAppropriate: '6-8', tags: ['animal', 'pet'] },
643
- { id: 'bird', name: { en: 'Bird', pl: 'Ptak', de: 'Vogel' }, category: 'animals', emoji: '🐦', assetPath: 'sprites/kids/bird', frameCount: 4, ageAppropriate: '6-8', tags: ['animal', 'flying'] },
644
- { id: 'fish', name: { en: 'Fish', pl: 'Ryba', de: 'Fisch' }, category: 'animals', emoji: '🐟', assetPath: 'sprites/kids/fish', frameCount: 4, ageAppropriate: '6-8', tags: ['animal', 'water'] },
645
- { id: 'dragon', name: { en: 'Dragon', pl: 'Smok', de: 'Drache' }, category: 'fantasy', emoji: '🐉', assetPath: 'sprites/kids/dragon', frameCount: 6, ageAppropriate: '6-8', tags: ['fantasy', 'magic'] },
646
- { id: 'unicorn', name: { en: 'Unicorn', pl: 'Jednorożec', de: 'Einhorn' }, category: 'fantasy', emoji: '🦄', assetPath: 'sprites/kids/unicorn', frameCount: 4, ageAppropriate: '6-8', tags: ['fantasy', 'magic'] },
647
- { id: 'rocket', name: { en: 'Rocket', pl: 'Rakieta', de: 'Rakete' }, category: 'space', emoji: '🚀', assetPath: 'sprites/kids/rocket', frameCount: 3, ageAppropriate: '6-8', tags: ['space', 'vehicle'] },
648
- { id: 'car', name: { en: 'Car', pl: 'Samochód', de: 'Auto' }, category: 'vehicles', emoji: '🚗', assetPath: 'sprites/kids/car', frameCount: 2, ageAppropriate: '6-8', tags: ['vehicle', 'racing'] },
649
- { id: 'tree', name: { en: 'Tree', pl: 'Drzewo', de: 'Baum' }, category: 'nature', emoji: '🌳', assetPath: 'sprites/kids/tree', frameCount: 1, ageAppropriate: '6-8', tags: ['nature', 'plant'] },
650
- { id: 'star', name: { en: 'Star', pl: 'Gwiazdka', de: 'Stern' }, category: 'effects', emoji: '⭐', assetPath: 'sprites/kids/star', frameCount: 2, ageAppropriate: '6-8', tags: ['effect', 'collectible'] },
651
- { id: 'heart', name: { en: 'Heart', pl: 'Serce', de: 'Herz' }, category: 'effects', emoji: '❤️', assetPath: 'sprites/kids/heart', frameCount: 2, ageAppropriate: '6-8', tags: ['effect', 'health'] },
652
- { id: 'coin', name: { en: 'Coin', pl: 'Moneta', de: 'Münze' }, category: 'effects', emoji: '🪙', assetPath: 'sprites/kids/coin', frameCount: 4, ageAppropriate: '6-8', tags: ['effect', 'collectible'] },
653
- { id: 'knight', name: { en: 'Knight', pl: 'Rycerz', de: 'Ritter' }, category: 'people', emoji: '🤺', assetPath: 'sprites/kids/knight', frameCount: 6, ageAppropriate: '6-8', tags: ['people', 'fantasy'] },
654
- { id: 'wizard', name: { en: 'Wizard', pl: 'Czarodziej', de: 'Zauberer' }, category: 'fantasy', emoji: '🧙', assetPath: 'sprites/kids/wizard', frameCount: 4, ageAppropriate: '6-8', tags: ['fantasy', 'magic'] },
655
- { id: 'alien', name: { en: 'Alien', pl: 'Kosmita', de: 'Alien' }, category: 'space', emoji: '👽', assetPath: 'sprites/kids/alien', frameCount: 4, ageAppropriate: '6-8', tags: ['space', 'sci-fi'] },
656
- { id: 'ball', name: { en: 'Ball', pl: 'Piłka', de: 'Ball' }, category: 'sports', emoji: '⚽', assetPath: 'sprites/kids/ball', frameCount: 1, ageAppropriate: '6-8', tags: ['sports', 'toy'] },
657
- { id: 'castle', name: { en: 'Castle', pl: 'Zamek', de: 'Burg' }, category: 'buildings', emoji: '🏰', assetPath: 'sprites/kids/castle', frameCount: 1, ageAppropriate: '6-8', tags: ['building', 'fantasy'] },
658
- { id: 'house', name: { en: 'House', pl: 'Dom', de: 'Haus' }, category: 'buildings', emoji: '🏠', assetPath: 'sprites/kids/house', frameCount: 1, ageAppropriate: '6-8', tags: ['building'] },
659
- { id: 'apple', name: { en: 'Apple', pl: 'Jabłko', de: 'Apfel' }, category: 'food', emoji: '🍎', assetPath: 'sprites/kids/apple', frameCount: 1, ageAppropriate: '6-8', tags: ['food', 'collectible'] },
873
+ {
874
+ id: 'cat',
875
+ name: { en: 'Cat', pl: 'Kot', de: 'Katze' },
876
+ category: 'animals',
877
+ emoji: '🐱',
878
+ assetPath: 'sprites/kids/cat',
879
+ frameCount: 4,
880
+ ageAppropriate: '6-8',
881
+ tags: ['animal', 'pet'],
882
+ },
883
+ {
884
+ id: 'dog',
885
+ name: { en: 'Dog', pl: 'Pies', de: 'Hund' },
886
+ category: 'animals',
887
+ emoji: '🐶',
888
+ assetPath: 'sprites/kids/dog',
889
+ frameCount: 4,
890
+ ageAppropriate: '6-8',
891
+ tags: ['animal', 'pet'],
892
+ },
893
+ {
894
+ id: 'rabbit',
895
+ name: { en: 'Rabbit', pl: 'Królik', de: 'Hase' },
896
+ category: 'animals',
897
+ emoji: '🐰',
898
+ assetPath: 'sprites/kids/rabbit',
899
+ frameCount: 4,
900
+ ageAppropriate: '6-8',
901
+ tags: ['animal', 'pet'],
902
+ },
903
+ {
904
+ id: 'bird',
905
+ name: { en: 'Bird', pl: 'Ptak', de: 'Vogel' },
906
+ category: 'animals',
907
+ emoji: '🐦',
908
+ assetPath: 'sprites/kids/bird',
909
+ frameCount: 4,
910
+ ageAppropriate: '6-8',
911
+ tags: ['animal', 'flying'],
912
+ },
913
+ {
914
+ id: 'fish',
915
+ name: { en: 'Fish', pl: 'Ryba', de: 'Fisch' },
916
+ category: 'animals',
917
+ emoji: '🐟',
918
+ assetPath: 'sprites/kids/fish',
919
+ frameCount: 4,
920
+ ageAppropriate: '6-8',
921
+ tags: ['animal', 'water'],
922
+ },
923
+ {
924
+ id: 'dragon',
925
+ name: { en: 'Dragon', pl: 'Smok', de: 'Drache' },
926
+ category: 'fantasy',
927
+ emoji: '🐉',
928
+ assetPath: 'sprites/kids/dragon',
929
+ frameCount: 6,
930
+ ageAppropriate: '6-8',
931
+ tags: ['fantasy', 'magic'],
932
+ },
933
+ {
934
+ id: 'unicorn',
935
+ name: { en: 'Unicorn', pl: 'Jednorożec', de: 'Einhorn' },
936
+ category: 'fantasy',
937
+ emoji: '🦄',
938
+ assetPath: 'sprites/kids/unicorn',
939
+ frameCount: 4,
940
+ ageAppropriate: '6-8',
941
+ tags: ['fantasy', 'magic'],
942
+ },
943
+ {
944
+ id: 'rocket',
945
+ name: { en: 'Rocket', pl: 'Rakieta', de: 'Rakete' },
946
+ category: 'space',
947
+ emoji: '🚀',
948
+ assetPath: 'sprites/kids/rocket',
949
+ frameCount: 3,
950
+ ageAppropriate: '6-8',
951
+ tags: ['space', 'vehicle'],
952
+ },
953
+ {
954
+ id: 'car',
955
+ name: { en: 'Car', pl: 'Samochód', de: 'Auto' },
956
+ category: 'vehicles',
957
+ emoji: '🚗',
958
+ assetPath: 'sprites/kids/car',
959
+ frameCount: 2,
960
+ ageAppropriate: '6-8',
961
+ tags: ['vehicle', 'racing'],
962
+ },
963
+ {
964
+ id: 'tree',
965
+ name: { en: 'Tree', pl: 'Drzewo', de: 'Baum' },
966
+ category: 'nature',
967
+ emoji: '🌳',
968
+ assetPath: 'sprites/kids/tree',
969
+ frameCount: 1,
970
+ ageAppropriate: '6-8',
971
+ tags: ['nature', 'plant'],
972
+ },
973
+ {
974
+ id: 'star',
975
+ name: { en: 'Star', pl: 'Gwiazdka', de: 'Stern' },
976
+ category: 'effects',
977
+ emoji: '⭐',
978
+ assetPath: 'sprites/kids/star',
979
+ frameCount: 2,
980
+ ageAppropriate: '6-8',
981
+ tags: ['effect', 'collectible'],
982
+ },
983
+ {
984
+ id: 'heart',
985
+ name: { en: 'Heart', pl: 'Serce', de: 'Herz' },
986
+ category: 'effects',
987
+ emoji: '❤️',
988
+ assetPath: 'sprites/kids/heart',
989
+ frameCount: 2,
990
+ ageAppropriate: '6-8',
991
+ tags: ['effect', 'health'],
992
+ },
993
+ {
994
+ id: 'coin',
995
+ name: { en: 'Coin', pl: 'Moneta', de: 'Münze' },
996
+ category: 'effects',
997
+ emoji: '🪙',
998
+ assetPath: 'sprites/kids/coin',
999
+ frameCount: 4,
1000
+ ageAppropriate: '6-8',
1001
+ tags: ['effect', 'collectible'],
1002
+ },
1003
+ {
1004
+ id: 'knight',
1005
+ name: { en: 'Knight', pl: 'Rycerz', de: 'Ritter' },
1006
+ category: 'people',
1007
+ emoji: '🤺',
1008
+ assetPath: 'sprites/kids/knight',
1009
+ frameCount: 6,
1010
+ ageAppropriate: '6-8',
1011
+ tags: ['people', 'fantasy'],
1012
+ },
1013
+ {
1014
+ id: 'wizard',
1015
+ name: { en: 'Wizard', pl: 'Czarodziej', de: 'Zauberer' },
1016
+ category: 'fantasy',
1017
+ emoji: '🧙',
1018
+ assetPath: 'sprites/kids/wizard',
1019
+ frameCount: 4,
1020
+ ageAppropriate: '6-8',
1021
+ tags: ['fantasy', 'magic'],
1022
+ },
1023
+ {
1024
+ id: 'alien',
1025
+ name: { en: 'Alien', pl: 'Kosmita', de: 'Alien' },
1026
+ category: 'space',
1027
+ emoji: '👽',
1028
+ assetPath: 'sprites/kids/alien',
1029
+ frameCount: 4,
1030
+ ageAppropriate: '6-8',
1031
+ tags: ['space', 'sci-fi'],
1032
+ },
1033
+ {
1034
+ id: 'ball',
1035
+ name: { en: 'Ball', pl: 'Piłka', de: 'Ball' },
1036
+ category: 'sports',
1037
+ emoji: '⚽',
1038
+ assetPath: 'sprites/kids/ball',
1039
+ frameCount: 1,
1040
+ ageAppropriate: '6-8',
1041
+ tags: ['sports', 'toy'],
1042
+ },
1043
+ {
1044
+ id: 'castle',
1045
+ name: { en: 'Castle', pl: 'Zamek', de: 'Burg' },
1046
+ category: 'buildings',
1047
+ emoji: '🏰',
1048
+ assetPath: 'sprites/kids/castle',
1049
+ frameCount: 1,
1050
+ ageAppropriate: '6-8',
1051
+ tags: ['building', 'fantasy'],
1052
+ },
1053
+ {
1054
+ id: 'house',
1055
+ name: { en: 'House', pl: 'Dom', de: 'Haus' },
1056
+ category: 'buildings',
1057
+ emoji: '🏠',
1058
+ assetPath: 'sprites/kids/house',
1059
+ frameCount: 1,
1060
+ ageAppropriate: '6-8',
1061
+ tags: ['building'],
1062
+ },
1063
+ {
1064
+ id: 'apple',
1065
+ name: { en: 'Apple', pl: 'Jabłko', de: 'Apfel' },
1066
+ category: 'food',
1067
+ emoji: '🍎',
1068
+ assetPath: 'sprites/kids/apple',
1069
+ frameCount: 1,
1070
+ ageAppropriate: '6-8',
1071
+ tags: ['food', 'collectible'],
1072
+ },
660
1073
  ];
661
1074
 
662
1075
  export { DEFAULT_KID_MODE_CONFIG, KID_BADGES, KID_DIFFICULTY_PRESETS, KID_SPRITES, KidModeManager, VISUAL_BLOCKS };