@nice2dev/game-engine 1.0.4 → 1.0.10

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 +6 -5
@@ -0,0 +1,843 @@
1
+ import { PlatformExporter } from './PlatformExporter.js';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ GameMaker Exporter — GameMaker Studio 2 Project Export
5
+
6
+ Exports Nice2Dev projects to GameMaker Studio 2 format including:
7
+ - GML scripts (.gml)
8
+ - Object files (.yy)
9
+ - Room files (.yy)
10
+ - Sprite assets (.yy)
11
+ - Project file (.yyp)
12
+ ──────────────────────────────────────────────────────────────── */
13
+ /* ── GameMaker UUID Generator ─────────────────────────────────── */
14
+ function generateGMUUID() {
15
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
16
+ const r = (Math.random() * 16) | 0;
17
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
18
+ return v.toString(16);
19
+ });
20
+ }
21
+ /* ── GameMaker Event Types ────────────────────────────────────── */
22
+ const GM_EVENTS = {
23
+ CREATE: { type: 0, num: 0 },
24
+ STEP: { type: 3, num: 0 },
25
+ DRAW: { type: 8, num: 0 }};
26
+ /* ── GameMaker Exporter Implementation ────────────────────────── */
27
+ class GameMakerExporter extends PlatformExporter {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.platformId = 'gamemaker';
31
+ this.platformInfo = {
32
+ id: 'gamemaker',
33
+ name: 'GameMaker Studio 2',
34
+ description: 'YoYo Games GameMaker Studio 2 with GML scripting',
35
+ website: 'https://gamemaker.io',
36
+ features: [
37
+ '2d-rendering',
38
+ 'physics-2d',
39
+ 'audio',
40
+ 'networking',
41
+ 'ui-system',
42
+ 'tilemaps',
43
+ 'particles',
44
+ 'animation',
45
+ ],
46
+ supportedAssets: [
47
+ 'sprite',
48
+ 'tileset',
49
+ 'audio',
50
+ 'font',
51
+ 'script',
52
+ 'scene',
53
+ 'prefab',
54
+ 'particleSystem',
55
+ 'data',
56
+ ],
57
+ exportFormats: ['.yyp', '.yy', '.gml'],
58
+ };
59
+ this.projectName = 'Nice2DevGame';
60
+ this.resourceTree = [];
61
+ this.objectScripts = new Map();
62
+ }
63
+ async doExport(project, options) {
64
+ this.projectName = (options.projectName ?? project.name).replace(/[^a-zA-Z0-9_]/g, '_');
65
+ this.resourceTree = [];
66
+ this.objectScripts.clear();
67
+ const platformOpts = options.platformOptions ?? {};
68
+ platformOpts.enablePhysics ?? project.settings.physics.enabled;
69
+ // Generate project file
70
+ await this.generateProjectFile(project, options);
71
+ // Generate scripts
72
+ await this.generateScripts(project, options);
73
+ // Generate objects from prefabs and unique entities
74
+ await this.generateObjects(project, options);
75
+ // Generate rooms from scenes
76
+ for (const scene of project.scenes) {
77
+ await this.generateRoom(scene, project, options);
78
+ }
79
+ // Generate sprite assets
80
+ for (const asset of project.assets) {
81
+ if (asset.type === 'sprite' || asset.type === 'texture') {
82
+ await this.generateSprite(asset, options);
83
+ }
84
+ else if (asset.type === 'audio') {
85
+ await this.generateSound(asset, options);
86
+ }
87
+ }
88
+ }
89
+ /* ── Project File ───────────────────────────────────────────── */
90
+ async generateProjectFile(project, options) {
91
+ const projectFile = {
92
+ resourceType: 'GMProject',
93
+ resourceVersion: '1.6',
94
+ name: this.projectName,
95
+ AudioGroups: [
96
+ {
97
+ resourceType: 'GMAudioGroup',
98
+ resourceVersion: '1.3',
99
+ name: 'audiogroup_default',
100
+ targets: -1,
101
+ },
102
+ ],
103
+ configs: {
104
+ children: [],
105
+ name: 'Default',
106
+ },
107
+ defaultScriptType: 1, // GML
108
+ Folders: this.generateFolderStructure(),
109
+ IncludedFiles: [],
110
+ isEcma: false,
111
+ LibaryEmitters: [],
112
+ MetaData: {
113
+ IDEVersion: '2024.2.0.132',
114
+ },
115
+ resources: this.resourceTree,
116
+ RoomOrderNodes: project.scenes.map((s) => ({
117
+ roomId: { name: `rm_${s.name}`, path: `rooms/rm_${s.name}/rm_${s.name}.yy` },
118
+ })),
119
+ templateType: null,
120
+ TextureGroups: [
121
+ {
122
+ resourceType: 'GMTextureGroup',
123
+ resourceVersion: '1.3',
124
+ name: 'Default',
125
+ autocrop: true,
126
+ border: 2,
127
+ compressFormat: 'bz2',
128
+ directory: '',
129
+ groupParent: null,
130
+ isScaled: true,
131
+ loadType: 'default',
132
+ mipsToGenerate: 0,
133
+ targets: -1,
134
+ },
135
+ ],
136
+ };
137
+ this.addTextFile(`${this.projectName}.yyp`, JSON.stringify(projectFile, null, 2));
138
+ }
139
+ generateFolderStructure() {
140
+ return [
141
+ this.createFolder('Sprites', 'sprites'),
142
+ this.createFolder('Sounds', 'sounds'),
143
+ this.createFolder('Scripts', 'scripts'),
144
+ this.createFolder('Objects', 'objects'),
145
+ this.createFolder('Rooms', 'rooms'),
146
+ ];
147
+ }
148
+ createFolder(name, folderPath) {
149
+ return {
150
+ resourceType: 'GMFolder',
151
+ resourceVersion: '1.0',
152
+ name,
153
+ folderPath: `folders/${name}.yy`,
154
+ order: 0,
155
+ };
156
+ }
157
+ /* ── Scripts ────────────────────────────────────────────────── */
158
+ async generateScripts(project, options) {
159
+ // Utility script
160
+ const utilScript = `/// @description Nice2Dev Utility Functions
161
+
162
+ /// @function n2d_move_towards(target_x, target_y, speed)
163
+ /// @param target_x
164
+ /// @param target_y
165
+ /// @param speed
166
+ function n2d_move_towards(_target_x, _target_y, _speed) {
167
+ var _dir = point_direction(x, y, _target_x, _target_y);
168
+ var _dist = point_distance(x, y, _target_x, _target_y);
169
+
170
+ if (_dist <= _speed) {
171
+ x = _target_x;
172
+ y = _target_y;
173
+ } else {
174
+ x += lengthdir_x(_speed, _dir);
175
+ y += lengthdir_y(_speed, _dir);
176
+ }
177
+ }
178
+
179
+ /// @function n2d_look_at(target_x, target_y)
180
+ /// @param target_x
181
+ /// @param target_y
182
+ function n2d_look_at(_target_x, _target_y) {
183
+ image_angle = point_direction(x, y, _target_x, _target_y);
184
+ }
185
+
186
+ /// @function n2d_random_point_in_circle(center_x, center_y, radius)
187
+ /// @param center_x
188
+ /// @param center_y
189
+ /// @param radius
190
+ function n2d_random_point_in_circle(_cx, _cy, _radius) {
191
+ var _angle = random(360);
192
+ var _dist = sqrt(random(1)) * _radius;
193
+ return {
194
+ x: _cx + lengthdir_x(_dist, _angle),
195
+ y: _cy + lengthdir_y(_dist, _angle)
196
+ };
197
+ }
198
+
199
+ /// @function n2d_spawn_entity(object, x_, y_)
200
+ /// @param object
201
+ /// @param x_
202
+ /// @param y_
203
+ function n2d_spawn_entity(_object, _x, _y) {
204
+ return instance_create_layer(_x, _y, "Instances", _object);
205
+ }
206
+
207
+ /// @function n2d_find_by_tag(tag)
208
+ /// @param tag
209
+ function n2d_find_by_tag(_tag) {
210
+ var _result = [];
211
+ with (obj_nice2dev_base) {
212
+ if (variable_instance_exists(id, "tags")) {
213
+ for (var i = 0; i < array_length(tags); i++) {
214
+ if (tags[i] == _tag) {
215
+ array_push(_result, id);
216
+ break;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ return _result;
222
+ }
223
+ `;
224
+ this.addTextFile('scripts/scr_nice2dev_utils/scr_nice2dev_utils.gml', utilScript);
225
+ this.addTextFile('scripts/scr_nice2dev_utils/scr_nice2dev_utils.yy', JSON.stringify({
226
+ resourceType: 'GMScript',
227
+ resourceVersion: '1.0',
228
+ name: 'scr_nice2dev_utils',
229
+ isCompatibility: false,
230
+ isDnD: false,
231
+ parent: { name: 'Scripts', path: 'folders/Scripts.yy' },
232
+ }, null, 2));
233
+ this.resourceTree.push({
234
+ id: { name: 'scr_nice2dev_utils', path: 'scripts/scr_nice2dev_utils/scr_nice2dev_utils.yy' },
235
+ });
236
+ // Game controller script
237
+ const gameScript = `/// @description Game Controller Functions
238
+
239
+ globalvar game_paused;
240
+ game_paused = false;
241
+
242
+ /// @function game_pause()
243
+ function game_pause() {
244
+ game_paused = true;
245
+ // Deactivate all instances except UI
246
+ instance_deactivate_all(true);
247
+ // Keep UI active
248
+ // instance_activate_object(obj_ui_controller);
249
+ }
250
+
251
+ /// @function game_resume()
252
+ function game_resume() {
253
+ game_paused = false;
254
+ instance_activate_all();
255
+ }
256
+
257
+ /// @function game_goto_room(room_name)
258
+ /// @param room_name
259
+ function game_goto_room(_room_name) {
260
+ room_goto(asset_get_index(_room_name));
261
+ }
262
+
263
+ /// @function game_save(slot)
264
+ /// @param slot
265
+ function game_save(_slot) {
266
+ var _save_data = {
267
+ room: room_get_name(room),
268
+ // Add more save data as needed
269
+ };
270
+
271
+ var _filename = "save_" + string(_slot) + ".json";
272
+ var _file = file_text_open_write(_filename);
273
+ file_text_write_string(_file, json_stringify(_save_data));
274
+ file_text_close(_file);
275
+ }
276
+
277
+ /// @function game_load(slot)
278
+ /// @param slot
279
+ function game_load(_slot) {
280
+ var _filename = "save_" + string(_slot) + ".json";
281
+ if (file_exists(_filename)) {
282
+ var _file = file_text_open_read(_filename);
283
+ var _json = file_text_read_string(_file);
284
+ file_text_close(_file);
285
+
286
+ var _data = json_parse(_json);
287
+ room_goto(asset_get_index(_data.room));
288
+ }
289
+ }
290
+ `;
291
+ this.addTextFile('scripts/scr_game_controller/scr_game_controller.gml', gameScript);
292
+ this.addTextFile('scripts/scr_game_controller/scr_game_controller.yy', JSON.stringify({
293
+ resourceType: 'GMScript',
294
+ resourceVersion: '1.0',
295
+ name: 'scr_game_controller',
296
+ isCompatibility: false,
297
+ isDnD: false,
298
+ parent: { name: 'Scripts', path: 'folders/Scripts.yy' },
299
+ }, null, 2));
300
+ this.resourceTree.push({
301
+ id: {
302
+ name: 'scr_game_controller',
303
+ path: 'scripts/scr_game_controller/scr_game_controller.yy',
304
+ },
305
+ });
306
+ }
307
+ /* ── Objects ────────────────────────────────────────────────── */
308
+ async generateObjects(project, options) {
309
+ // Base object for Nice2Dev entities
310
+ await this.generateBaseObject();
311
+ // Generate objects from prefabs
312
+ for (const prefab of project.prefabs) {
313
+ await this.generateObjectFromEntity(prefab.entity, `obj_${prefab.name}`, options);
314
+ }
315
+ // Generate unique entity type objects
316
+ const entityTypes = new Set();
317
+ for (const scene of project.scenes) {
318
+ for (const entity of scene.entities) {
319
+ if (entity.type && !project.prefabs.find((p) => p.name === entity.type)) {
320
+ entityTypes.add(entity.type);
321
+ }
322
+ }
323
+ }
324
+ for (const entityType of entityTypes) {
325
+ const templateEntity = this.findEntityByType(project, entityType);
326
+ if (templateEntity) {
327
+ await this.generateObjectFromEntity(templateEntity, `obj_${entityType}`, options);
328
+ }
329
+ }
330
+ }
331
+ findEntityByType(project, type) {
332
+ for (const scene of project.scenes) {
333
+ const found = scene.entities.find((e) => e.type === type);
334
+ if (found) {
335
+ return found;
336
+ }
337
+ }
338
+ return null;
339
+ }
340
+ async generateBaseObject() {
341
+ const objectDef = {
342
+ resourceType: 'GMObject',
343
+ resourceVersion: '1.0',
344
+ name: 'obj_nice2dev_base',
345
+ solid: false,
346
+ visible: true,
347
+ managed: true,
348
+ persistent: false,
349
+ physicsObject: false,
350
+ physicsShape: 1,
351
+ eventList: [
352
+ {
353
+ resourceType: 'GMEvent',
354
+ resourceVersion: '1.0',
355
+ isDnD: false,
356
+ eventNum: GM_EVENTS.CREATE.num,
357
+ eventType: GM_EVENTS.CREATE.type,
358
+ },
359
+ ],
360
+ properties: [
361
+ {
362
+ resourceType: 'GMObjectProperty',
363
+ resourceVersion: '1.0',
364
+ name: 'entity_id',
365
+ varType: 1, // String
366
+ value: '""',
367
+ },
368
+ {
369
+ resourceType: 'GMObjectProperty',
370
+ resourceVersion: '1.0',
371
+ name: 'tags',
372
+ varType: 5, // Array
373
+ value: '[]',
374
+ },
375
+ ],
376
+ overriddenProperties: [],
377
+ parent: { name: 'Objects', path: 'folders/Objects.yy' },
378
+ };
379
+ this.addTextFile('objects/obj_nice2dev_base/obj_nice2dev_base.yy', JSON.stringify(objectDef, null, 2));
380
+ // Create event
381
+ const createEvent = `/// @description Initialize base Nice2Dev entity
382
+ entity_id = "";
383
+ tags = [];
384
+
385
+ // Override in child objects
386
+ event_inherited();
387
+ `;
388
+ this.addTextFile('objects/obj_nice2dev_base/Create_0.gml', createEvent);
389
+ this.resourceTree.push({
390
+ id: { name: 'obj_nice2dev_base', path: 'objects/obj_nice2dev_base/obj_nice2dev_base.yy' },
391
+ });
392
+ }
393
+ async generateObjectFromEntity(entity, objectName, options) {
394
+ const safeName = objectName.replace(/[^a-zA-Z0-9_]/g, '_');
395
+ const hasPhysics = entity.components.some((c) => c.type === 'rigidbody');
396
+ // Find sprite component
397
+ const spriteComp = entity.components.find((c) => c.type === 'sprite');
398
+ const spriteName = spriteComp?.properties?.['texture'];
399
+ const objectDef = {
400
+ resourceType: 'GMObject',
401
+ resourceVersion: '1.0',
402
+ name: safeName,
403
+ spriteId: spriteName
404
+ ? { name: `spr_${spriteName}`, path: `sprites/spr_${spriteName}/spr_${spriteName}.yy` }
405
+ : undefined,
406
+ solid: entity.components.some((c) => c.type === 'boxCollider' && !c.properties?.['isTrigger']),
407
+ visible: entity.active !== false,
408
+ managed: true,
409
+ persistent: false,
410
+ parentObjectId: {
411
+ name: 'obj_nice2dev_base',
412
+ path: 'objects/obj_nice2dev_base/obj_nice2dev_base.yy',
413
+ },
414
+ physicsObject: hasPhysics,
415
+ physicsShape: 1,
416
+ eventList: this.generateEventList(entity),
417
+ properties: this.extractEntityProperties(entity),
418
+ overriddenProperties: [],
419
+ parent: { name: 'Objects', path: 'folders/Objects.yy' },
420
+ };
421
+ this.addTextFile(`objects/${safeName}/${safeName}.yy`, JSON.stringify(objectDef, null, 2));
422
+ // Generate event scripts
423
+ await this.generateEventScripts(entity, safeName);
424
+ this.resourceTree.push({
425
+ id: { name: safeName, path: `objects/${safeName}/${safeName}.yy` },
426
+ });
427
+ }
428
+ generateEventList(entity) {
429
+ const events = [
430
+ {
431
+ resourceType: 'GMEvent',
432
+ resourceVersion: '1.0',
433
+ isDnD: false,
434
+ eventNum: GM_EVENTS.CREATE.num,
435
+ eventType: GM_EVENTS.CREATE.type,
436
+ },
437
+ {
438
+ resourceType: 'GMEvent',
439
+ resourceVersion: '1.0',
440
+ isDnD: false,
441
+ eventNum: GM_EVENTS.STEP.num,
442
+ eventType: GM_EVENTS.STEP.type,
443
+ },
444
+ ];
445
+ // Add draw event if sprite
446
+ if (entity.components.some((c) => c.type === 'sprite')) {
447
+ events.push({
448
+ resourceType: 'GMEvent',
449
+ resourceVersion: '1.0',
450
+ isDnD: false,
451
+ eventNum: GM_EVENTS.DRAW.num,
452
+ eventType: GM_EVENTS.DRAW.type,
453
+ });
454
+ }
455
+ return events;
456
+ }
457
+ extractEntityProperties(entity) {
458
+ const props = [];
459
+ // Add common properties
460
+ for (const comp of entity.components) {
461
+ if (comp.properties) {
462
+ for (const [key, value] of Object.entries(comp.properties)) {
463
+ const varType = this.getGMLVarType(value);
464
+ props.push({
465
+ resourceType: 'GMObjectProperty',
466
+ resourceVersion: '1.0',
467
+ name: `${comp.type}_${key}`,
468
+ varType,
469
+ value: this.valueToGML(value),
470
+ });
471
+ }
472
+ }
473
+ }
474
+ return props;
475
+ }
476
+ getGMLVarType(value) {
477
+ if (typeof value === 'number') {
478
+ return Number.isInteger(value) ? 0 : 2;
479
+ } // Int or Real
480
+ if (typeof value === 'string') {
481
+ return 1;
482
+ } // String
483
+ if (typeof value === 'boolean') {
484
+ return 3;
485
+ } // Bool
486
+ if (Array.isArray(value)) {
487
+ return 5;
488
+ } // Array
489
+ return 1; // Default to string
490
+ }
491
+ valueToGML(value) {
492
+ if (typeof value === 'string') {
493
+ return `"${value}"`;
494
+ }
495
+ if (typeof value === 'boolean') {
496
+ return value ? 'true' : 'false';
497
+ }
498
+ if (Array.isArray(value)) {
499
+ return JSON.stringify(value);
500
+ }
501
+ if (typeof value === 'object' && value !== null) {
502
+ return JSON.stringify(value);
503
+ }
504
+ return String(value);
505
+ }
506
+ async generateEventScripts(entity, objectName) {
507
+ // Create event
508
+ let createScript = `/// @description Initialize ${entity.name ?? objectName}
509
+ event_inherited();
510
+
511
+ entity_id = "${entity.id}";
512
+ `;
513
+ // Add tag initialization
514
+ if (entity.tags && entity.tags.length > 0) {
515
+ createScript += `tags = ${JSON.stringify(entity.tags)};\n`;
516
+ }
517
+ // Add component-specific initialization
518
+ for (const comp of entity.components) {
519
+ createScript += this.generateComponentInit(comp);
520
+ }
521
+ this.addTextFile(`objects/${objectName}/Create_0.gml`, createScript);
522
+ // Step event
523
+ const stepScript = `/// @description Step event for ${entity.name ?? objectName}
524
+
525
+ // Add update logic here
526
+ `;
527
+ this.addTextFile(`objects/${objectName}/Step_0.gml`, stepScript);
528
+ // Draw event (if has sprite)
529
+ if (entity.components.some((c) => c.type === 'sprite')) {
530
+ const drawScript = `/// @description Draw event
531
+ draw_self();
532
+ `;
533
+ this.addTextFile(`objects/${objectName}/Draw_0.gml`, drawScript);
534
+ }
535
+ }
536
+ generateComponentInit(comp) {
537
+ let code = `\n// ${comp.type} component\n`;
538
+ switch (comp.type) {
539
+ case 'sprite':
540
+ const color = comp.properties?.['color'];
541
+ if (color) {
542
+ code += `image_blend = ${this.colorToGML(color)};\n`;
543
+ }
544
+ break;
545
+ case 'rigidbody':
546
+ code += `phy_active = true;\n`;
547
+ if (comp.properties?.['mass']) {
548
+ code += `phy_mass = ${comp.properties['mass']};\n`;
549
+ }
550
+ if (comp.properties?.['linearDamping']) {
551
+ code += `phy_linear_damping = ${comp.properties['linearDamping']};\n`;
552
+ }
553
+ break;
554
+ case 'audioSource':
555
+ if (comp.properties?.['playOnAwake']) {
556
+ const clip = comp.properties['clip'];
557
+ if (clip) {
558
+ code += `audio_play_sound(snd_${clip}, 1, ${comp.properties['loop'] ? 'true' : 'false'});\n`;
559
+ }
560
+ }
561
+ break;
562
+ }
563
+ return code;
564
+ }
565
+ colorToGML(color) {
566
+ if (color.startsWith('#')) {
567
+ // Convert hex to GML color (BGR format)
568
+ const hex = color.replace('#', '');
569
+ const r = parseInt(hex.substr(0, 2), 16);
570
+ const g = parseInt(hex.substr(2, 2), 16);
571
+ const b = parseInt(hex.substr(4, 2), 16);
572
+ return `make_colour_rgb(${r}, ${g}, ${b})`;
573
+ }
574
+ return 'c_white';
575
+ }
576
+ /* ── Rooms ──────────────────────────────────────────────────── */
577
+ async generateRoom(scene, project, options) {
578
+ const roomName = `rm_${scene.name.replace(/[^a-zA-Z0-9_]/g, '_')}`;
579
+ const width = project.settings.resolution.width;
580
+ const height = project.settings.resolution.height;
581
+ const platformOpts = options.platformOptions ?? {};
582
+ const instances = [];
583
+ const instanceOrder = [];
584
+ // Generate instances from entities
585
+ for (const entity of scene.entities) {
586
+ const objName = entity.prefabId
587
+ ? `obj_${entity.prefabId}`
588
+ : entity.type
589
+ ? `obj_${entity.type}`
590
+ : 'obj_nice2dev_base';
591
+ const instanceName = `inst_${generateGMUUID().substr(0, 8)}`;
592
+ const pos = entity.position ?? { x: 0, y: 0 };
593
+ instances.push({
594
+ resourceType: 'GMRoomInstance',
595
+ resourceVersion: '1.0',
596
+ name: instanceName,
597
+ properties: [],
598
+ isDnd: false,
599
+ objectId: { name: objName, path: `objects/${objName}/${objName}.yy` },
600
+ inheritCode: false,
601
+ hasCreationCode: false,
602
+ colour: 4294967295,
603
+ rotation: entity.rotation ?? 0,
604
+ scaleX: entity.scale?.x ?? 1,
605
+ scaleY: entity.scale?.y ?? 1,
606
+ x: pos.x,
607
+ y: pos.y,
608
+ });
609
+ instanceOrder.push({ name: instanceName, path: `rooms/${roomName}/${roomName}.yy` });
610
+ }
611
+ // Build layers
612
+ const layers = [
613
+ {
614
+ resourceType: 'GMRLayer',
615
+ resourceVersion: '1.0',
616
+ name: 'Instances',
617
+ visible: true,
618
+ depth: 0,
619
+ userdefinedDepth: false,
620
+ inheritLayerDepth: false,
621
+ inheritLayerSettings: false,
622
+ instances,
623
+ },
624
+ {
625
+ resourceType: 'GMRBackgroundLayer',
626
+ resourceVersion: '1.0',
627
+ name: 'Background',
628
+ visible: true,
629
+ depth: 100,
630
+ userdefinedDepth: false,
631
+ inheritLayerDepth: false,
632
+ inheritLayerSettings: false,
633
+ },
634
+ ];
635
+ // Add tile layers from tilemaps
636
+ if (scene.tilemaps) {
637
+ for (const tilemap of scene.tilemaps) {
638
+ layers.push(this.createTileLayer(tilemap, project));
639
+ }
640
+ }
641
+ const room = {
642
+ resourceType: 'GMRoom',
643
+ resourceVersion: '1.0',
644
+ name: roomName,
645
+ isDnd: false,
646
+ creationCodeFile: '',
647
+ inheritCode: false,
648
+ inheritCreationOrder: false,
649
+ inheritLayers: false,
650
+ instanceCreationOrder: instanceOrder,
651
+ layers,
652
+ parent: { name: 'Rooms', path: 'folders/Rooms.yy' },
653
+ roomSettings: {
654
+ inheritRoomSettings: false,
655
+ Width: width,
656
+ Height: height,
657
+ persistent: false,
658
+ },
659
+ viewSettings: {
660
+ inheritViewSettings: false,
661
+ enableViews: true,
662
+ clearViewBackground: true,
663
+ clearDisplayBuffer: true,
664
+ },
665
+ physicsSettings: {
666
+ inheritPhysicsSettings: false,
667
+ PhysicsWorld: platformOpts.enablePhysics ?? project.settings.physics.enabled,
668
+ PhysicsWorldGravityX: project.settings.physics.gravity.x,
669
+ PhysicsWorldGravityY: project.settings.physics.gravity.y,
670
+ PhysicsWorldPixToMetres: 0.1,
671
+ },
672
+ };
673
+ this.addTextFile(`rooms/${roomName}/${roomName}.yy`, JSON.stringify(room, null, 2));
674
+ this.resourceTree.push({
675
+ id: { name: roomName, path: `rooms/${roomName}/${roomName}.yy` },
676
+ });
677
+ }
678
+ createTileLayer(tilemap, project) {
679
+ return {
680
+ resourceType: 'GMRTileLayer',
681
+ resourceVersion: '1.1',
682
+ name: tilemap.name,
683
+ visible: true,
684
+ depth: 50,
685
+ userdefinedDepth: false,
686
+ inheritLayerDepth: false,
687
+ inheritLayerSettings: false,
688
+ tiles: {
689
+ SerialiseWidth: tilemap.width,
690
+ SerialiseHeight: tilemap.height,
691
+ TileSerialiseData: tilemap.layers[0]?.data ?? [],
692
+ },
693
+ };
694
+ }
695
+ /* ── Sprites ────────────────────────────────────────────────── */
696
+ async generateSprite(asset, options) {
697
+ const spriteName = `spr_${asset.name.replace(/[^a-zA-Z0-9_]/g, '_')}`;
698
+ const platformOpts = options.platformOptions ?? {};
699
+ // Determine origin based on options
700
+ let originX = 0, originY = 0;
701
+ switch (platformOpts.spriteOrigin) {
702
+ case 'center':
703
+ originX = 0.5;
704
+ originY = 0.5;
705
+ break;
706
+ case 'bottom-center':
707
+ originX = 0.5;
708
+ originY = 1;
709
+ break;
710
+ default: // top-left
711
+ originX = 0;
712
+ originY = 0;
713
+ }
714
+ const spriteDef = {
715
+ resourceType: 'GMSprite',
716
+ resourceVersion: '1.0',
717
+ name: spriteName,
718
+ bboxMode: 0,
719
+ bbox_bottom: 31,
720
+ bbox_left: 0,
721
+ bbox_right: 31,
722
+ bbox_top: 0,
723
+ collisionKind: 1,
724
+ collisionTolerance: 0,
725
+ DynamicTexturePage: false,
726
+ edgeFiltering: false,
727
+ For3D: false,
728
+ frames: [
729
+ {
730
+ resourceType: 'GMSpriteFrame',
731
+ resourceVersion: '1.1',
732
+ name: generateGMUUID(),
733
+ },
734
+ ],
735
+ gridX: 0,
736
+ gridY: 0,
737
+ height: 32,
738
+ HTile: false,
739
+ layers: [
740
+ {
741
+ resourceType: 'GMImageLayer',
742
+ resourceVersion: '1.0',
743
+ name: generateGMUUID(),
744
+ blendMode: 0,
745
+ displayName: 'default',
746
+ isLocked: false,
747
+ opacity: 100,
748
+ visible: true,
749
+ },
750
+ ],
751
+ nineSlice: null,
752
+ origin: platformOpts.spriteOrigin === 'center'
753
+ ? 4
754
+ : platformOpts.spriteOrigin === 'bottom-center'
755
+ ? 7
756
+ : 0,
757
+ parent: { name: 'Sprites', path: 'folders/Sprites.yy' },
758
+ preMultiplyAlpha: false,
759
+ sequence: {
760
+ resourceType: 'GMSequence',
761
+ resourceVersion: '1.4',
762
+ name: spriteName,
763
+ autoRecord: true,
764
+ backdropHeight: 768,
765
+ backdropImageOpacity: 0.5,
766
+ backdropImagePath: '',
767
+ backdropWidth: 1366,
768
+ backdropXOffset: 0.0,
769
+ backdropYOffset: 0.0,
770
+ events: {
771
+ Keyframes: [],
772
+ resourceType: 'KeyframeStore<MessageEventKeyframe>',
773
+ resourceVersion: '1.0',
774
+ },
775
+ eventStubScript: null,
776
+ eventToFunction: {},
777
+ length: 1.0,
778
+ lockOrigin: false,
779
+ moments: {
780
+ Keyframes: [],
781
+ resourceType: 'KeyframeStore<MomentsEventKeyframe>',
782
+ resourceVersion: '1.0',
783
+ },
784
+ playback: 1,
785
+ playbackSpeed: 15.0,
786
+ playbackSpeedType: 0,
787
+ showBackdrop: true,
788
+ showBackdropImage: false,
789
+ spriteId: { name: spriteName, path: `sprites/${spriteName}/${spriteName}.yy` },
790
+ timeUnits: 1,
791
+ tracks: [],
792
+ volume: 1.0,
793
+ xorigin: Math.floor(32 * originX),
794
+ yorigin: Math.floor(32 * originY),
795
+ },
796
+ swatchColours: null,
797
+ swfPrecision: 2.525,
798
+ textureGroupId: { name: 'Default', path: 'texturegroups/Default' },
799
+ type: 0,
800
+ VTile: false,
801
+ width: 32,
802
+ };
803
+ this.addTextFile(`sprites/${spriteName}/${spriteName}.yy`, JSON.stringify(spriteDef, null, 2));
804
+ // Add warning for actual image file
805
+ this.addWarning('SPRITE_MANUAL', `Sprite "${asset.name}" requires manual image import`, `Copy sprite image to sprites/${spriteName}/ folder`);
806
+ this.resourceTree.push({
807
+ id: { name: spriteName, path: `sprites/${spriteName}/${spriteName}.yy` },
808
+ });
809
+ }
810
+ /* ── Sounds ─────────────────────────────────────────────────── */
811
+ async generateSound(asset, options) {
812
+ const soundName = `snd_${asset.name.replace(/[^a-zA-Z0-9_]/g, '_')}`;
813
+ const soundDef = {
814
+ resourceType: 'GMSound',
815
+ resourceVersion: '1.0',
816
+ name: soundName,
817
+ audioGroupId: { name: 'audiogroup_default', path: 'audiogroups/audiogroup_default' },
818
+ bitDepth: 1,
819
+ bitRate: 128,
820
+ compression: 0,
821
+ conversionMode: 0,
822
+ duration: 1.0,
823
+ parent: { name: 'Sounds', path: 'folders/Sounds.yy' },
824
+ preload: false,
825
+ sampleRate: 44100,
826
+ soundFile: `${soundName}.ogg`,
827
+ type: 0,
828
+ volume: 1.0,
829
+ };
830
+ this.addTextFile(`sounds/${soundName}/${soundName}.yy`, JSON.stringify(soundDef, null, 2));
831
+ this.addWarning('SOUND_MANUAL', `Sound "${asset.name}" requires manual audio import`, `Copy audio file to sounds/${soundName}/ folder as ${soundName}.ogg`);
832
+ this.resourceTree.push({
833
+ id: { name: soundName, path: `sounds/${soundName}/${soundName}.yy` },
834
+ });
835
+ }
836
+ }
837
+ /* ── Factory ──────────────────────────────────────────────────── */
838
+ function createGameMakerExporter() {
839
+ return new GameMakerExporter();
840
+ }
841
+
842
+ export { GameMakerExporter, createGameMakerExporter };
843
+ //# sourceMappingURL=GameMakerExporter.js.map