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