@nice2dev/game-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +105 -0
  4. package/dist/cjs/accessibility/Accessibility.js +162 -0
  5. package/dist/cjs/accessibility/Accessibility.js.map +1 -0
  6. package/dist/cjs/ai/AI.js +321 -0
  7. package/dist/cjs/ai/AI.js.map +1 -0
  8. package/dist/cjs/animation/Animation.js +233 -0
  9. package/dist/cjs/animation/Animation.js.map +1 -0
  10. package/dist/cjs/audio/AudioAdvanced.js +262 -0
  11. package/dist/cjs/audio/AudioAdvanced.js.map +1 -0
  12. package/dist/cjs/audio/AudioManager.js +248 -0
  13. package/dist/cjs/audio/AudioManager.js.map +1 -0
  14. package/dist/cjs/core/EventBus.js +63 -0
  15. package/dist/cjs/core/EventBus.js.map +1 -0
  16. package/dist/cjs/core/GameClock.js +70 -0
  17. package/dist/cjs/core/GameClock.js.map +1 -0
  18. package/dist/cjs/core/GameConfig.js +86 -0
  19. package/dist/cjs/core/GameConfig.js.map +1 -0
  20. package/dist/cjs/core/GameLoop.js +93 -0
  21. package/dist/cjs/core/GameLoop.js.map +1 -0
  22. package/dist/cjs/core/ServiceLocator.js +73 -0
  23. package/dist/cjs/core/ServiceLocator.js.map +1 -0
  24. package/dist/cjs/core/Validation.js +119 -0
  25. package/dist/cjs/core/Validation.js.map +1 -0
  26. package/dist/cjs/core/math.js +116 -0
  27. package/dist/cjs/core/math.js.map +1 -0
  28. package/dist/cjs/devtools/DevTools.js +560 -0
  29. package/dist/cjs/devtools/DevTools.js.map +1 -0
  30. package/dist/cjs/devtools/DeveloperExperience.js +562 -0
  31. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -0
  32. package/dist/cjs/docs/DocGenerator.js +357 -0
  33. package/dist/cjs/docs/DocGenerator.js.map +1 -0
  34. package/dist/cjs/ecs/World.js +280 -0
  35. package/dist/cjs/ecs/World.js.map +1 -0
  36. package/dist/cjs/editor/AdvancedEditor.js +149 -0
  37. package/dist/cjs/editor/AdvancedEditor.js.map +1 -0
  38. package/dist/cjs/editor/AssetManager.js +190 -0
  39. package/dist/cjs/editor/AssetManager.js.map +1 -0
  40. package/dist/cjs/editor/DebugTools.js +187 -0
  41. package/dist/cjs/editor/DebugTools.js.map +1 -0
  42. package/dist/cjs/editor/NiceGameEditor.js +361 -0
  43. package/dist/cjs/editor/NiceGameEditor.js.map +1 -0
  44. package/dist/cjs/editor/SceneEditor.js +223 -0
  45. package/dist/cjs/editor/SceneEditor.js.map +1 -0
  46. package/dist/cjs/engine/NiceGameEngine.js +172 -0
  47. package/dist/cjs/engine/NiceGameEngine.js.map +1 -0
  48. package/dist/cjs/enterprise/Enterprise.js +258 -0
  49. package/dist/cjs/enterprise/Enterprise.js.map +1 -0
  50. package/dist/cjs/i18n/I18n.js +634 -0
  51. package/dist/cjs/i18n/I18n.js.map +1 -0
  52. package/dist/cjs/i18n/useTranslation.js +100 -0
  53. package/dist/cjs/i18n/useTranslation.js.map +1 -0
  54. package/dist/cjs/index.js +526 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/input/GamepadNavigation.js +181 -0
  57. package/dist/cjs/input/GamepadNavigation.js.map +1 -0
  58. package/dist/cjs/input/InputManager.js +404 -0
  59. package/dist/cjs/input/InputManager.js.map +1 -0
  60. package/dist/cjs/input/useGamepads.js +86 -0
  61. package/dist/cjs/input/useGamepads.js.map +1 -0
  62. package/dist/cjs/kids/KidMode.js +670 -0
  63. package/dist/cjs/kids/KidMode.js.map +1 -0
  64. package/dist/cjs/kids/KidTools.js +533 -0
  65. package/dist/cjs/kids/KidTools.js.map +1 -0
  66. package/dist/cjs/monetization/Monetization.js +197 -0
  67. package/dist/cjs/monetization/Monetization.js.map +1 -0
  68. package/dist/cjs/multiplayer/LocalMultiplayer.js +288 -0
  69. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -0
  70. package/dist/cjs/multiplayer/MiniGameTypes.js +70 -0
  71. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -0
  72. package/dist/cjs/network/MultiplayerTransport.js +109 -0
  73. package/dist/cjs/network/MultiplayerTransport.js.map +1 -0
  74. package/dist/cjs/network/Networking.js +569 -0
  75. package/dist/cjs/network/Networking.js.map +1 -0
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +32 -0
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +51 -0
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +46 -0
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +18 -0
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +145 -0
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +161 -0
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +56 -0
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +11 -0
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +52 -0
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +576 -0
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +956 -0
  97. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  98. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +149 -0
  99. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  100. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  101. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  102. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  103. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  104. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  105. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  106. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +124 -0
  107. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  108. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +17 -0
  109. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  110. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +188 -0
  111. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  112. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +199 -0
  113. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  114. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +108 -0
  115. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  116. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +38 -0
  117. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  118. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +24 -0
  119. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  120. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +264 -0
  121. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  122. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +160 -0
  123. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  124. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +88 -0
  125. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  126. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +50 -0
  127. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  128. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +6 -0
  129. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  130. package/dist/cjs/pathfinding/Pathfinding.js +255 -0
  131. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -0
  132. package/dist/cjs/performance/BenchmarkSuite.js +318 -0
  133. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -0
  134. package/dist/cjs/performance/Performance.js +180 -0
  135. package/dist/cjs/performance/Performance.js.map +1 -0
  136. package/dist/cjs/performance/PerformanceAdvanced.js +628 -0
  137. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -0
  138. package/dist/cjs/physics/PhysicsAdvanced.js +432 -0
  139. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -0
  140. package/dist/cjs/physics/PhysicsEngine2D.js +445 -0
  141. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -0
  142. package/dist/cjs/plugins/PluginSDK.js +488 -0
  143. package/dist/cjs/plugins/PluginSDK.js.map +1 -0
  144. package/dist/cjs/plugins/PluginTestKit.js +368 -0
  145. package/dist/cjs/plugins/PluginTestKit.js.map +1 -0
  146. package/dist/cjs/procedural/Procedural.js +288 -0
  147. package/dist/cjs/procedural/Procedural.js.map +1 -0
  148. package/dist/cjs/procedural/WorldBuilding.js +246 -0
  149. package/dist/cjs/procedural/WorldBuilding.js.map +1 -0
  150. package/dist/cjs/release/MobileExport.js +149 -0
  151. package/dist/cjs/release/MobileExport.js.map +1 -0
  152. package/dist/cjs/release/Release.js +151 -0
  153. package/dist/cjs/release/Release.js.map +1 -0
  154. package/dist/cjs/rendering/Camera2D.js +129 -0
  155. package/dist/cjs/rendering/Camera2D.js.map +1 -0
  156. package/dist/cjs/rendering/Renderer2D.js +337 -0
  157. package/dist/cjs/rendering/Renderer2D.js.map +1 -0
  158. package/dist/cjs/runtime3d/Runtime3D.js +381 -0
  159. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -0
  160. package/dist/cjs/runtime3d/SceneEditor3D.js +316 -0
  161. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -0
  162. package/dist/cjs/scene/SceneManager.js +186 -0
  163. package/dist/cjs/scene/SceneManager.js.map +1 -0
  164. package/dist/cjs/scripting/NodeGraph.js +573 -0
  165. package/dist/cjs/scripting/NodeGraph.js.map +1 -0
  166. package/dist/cjs/social/Social.js +91 -0
  167. package/dist/cjs/social/Social.js.map +1 -0
  168. package/dist/cjs/templates/ActionTemplates.js +229 -0
  169. package/dist/cjs/templates/ActionTemplates.js.map +1 -0
  170. package/dist/cjs/templates/PartyTemplates.js +221 -0
  171. package/dist/cjs/templates/PartyTemplates.js.map +1 -0
  172. package/dist/cjs/templates/PuzzleTemplates.js +283 -0
  173. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -0
  174. package/dist/cjs/templates/RPGTemplates.js +209 -0
  175. package/dist/cjs/templates/RPGTemplates.js.map +1 -0
  176. package/dist/cjs/templates/SportsTemplates.js +272 -0
  177. package/dist/cjs/templates/SportsTemplates.js.map +1 -0
  178. package/dist/cjs/templates/StrategyTemplates.js +173 -0
  179. package/dist/cjs/templates/StrategyTemplates.js.map +1 -0
  180. package/dist/cjs/templates/WaveDefense.js +470 -0
  181. package/dist/cjs/templates/WaveDefense.js.map +1 -0
  182. package/dist/cjs/tilemap/Tilemap.js +208 -0
  183. package/dist/cjs/tilemap/Tilemap.js.map +1 -0
  184. package/dist/cjs/tutorials/TutorialBranching.js +392 -0
  185. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -0
  186. package/dist/cjs/tutorials/TutorialEngine.js +903 -0
  187. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -0
  188. package/dist/cjs/tutorials/TutorialOverlay.js +602 -0
  189. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -0
  190. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +816 -0
  191. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  192. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +741 -0
  193. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  194. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +786 -0
  195. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  196. package/dist/cjs/ui/GameUI.js +312 -0
  197. package/dist/cjs/ui/GameUI.js.map +1 -0
  198. package/dist/cjs/xr/ARVR.js +197 -0
  199. package/dist/cjs/xr/ARVR.js.map +1 -0
  200. package/dist/esm/accessibility/Accessibility.js +153 -0
  201. package/dist/esm/accessibility/Accessibility.js.map +1 -0
  202. package/dist/esm/ai/AI.js +302 -0
  203. package/dist/esm/ai/AI.js.map +1 -0
  204. package/dist/esm/animation/Animation.js +227 -0
  205. package/dist/esm/animation/Animation.js.map +1 -0
  206. package/dist/esm/audio/AudioAdvanced.js +243 -0
  207. package/dist/esm/audio/AudioAdvanced.js.map +1 -0
  208. package/dist/esm/audio/AudioManager.js +246 -0
  209. package/dist/esm/audio/AudioManager.js.map +1 -0
  210. package/dist/esm/core/EventBus.js +61 -0
  211. package/dist/esm/core/EventBus.js.map +1 -0
  212. package/dist/esm/core/GameClock.js +68 -0
  213. package/dist/esm/core/GameClock.js.map +1 -0
  214. package/dist/esm/core/GameConfig.js +80 -0
  215. package/dist/esm/core/GameConfig.js.map +1 -0
  216. package/dist/esm/core/GameLoop.js +91 -0
  217. package/dist/esm/core/GameLoop.js.map +1 -0
  218. package/dist/esm/core/ServiceLocator.js +70 -0
  219. package/dist/esm/core/ServiceLocator.js.map +1 -0
  220. package/dist/esm/core/Validation.js +108 -0
  221. package/dist/esm/core/Validation.js.map +1 -0
  222. package/dist/esm/core/math.js +114 -0
  223. package/dist/esm/core/math.js.map +1 -0
  224. package/dist/esm/devtools/DevTools.js +555 -0
  225. package/dist/esm/devtools/DevTools.js.map +1 -0
  226. package/dist/esm/devtools/DeveloperExperience.js +547 -0
  227. package/dist/esm/devtools/DeveloperExperience.js.map +1 -0
  228. package/dist/esm/docs/DocGenerator.js +353 -0
  229. package/dist/esm/docs/DocGenerator.js.map +1 -0
  230. package/dist/esm/ecs/World.js +276 -0
  231. package/dist/esm/ecs/World.js.map +1 -0
  232. package/dist/esm/editor/AdvancedEditor.js +141 -0
  233. package/dist/esm/editor/AdvancedEditor.js.map +1 -0
  234. package/dist/esm/editor/AssetManager.js +188 -0
  235. package/dist/esm/editor/AssetManager.js.map +1 -0
  236. package/dist/esm/editor/DebugTools.js +179 -0
  237. package/dist/esm/editor/DebugTools.js.map +1 -0
  238. package/dist/esm/editor/NiceGameEditor.js +355 -0
  239. package/dist/esm/editor/NiceGameEditor.js.map +1 -0
  240. package/dist/esm/editor/SceneEditor.js +209 -0
  241. package/dist/esm/editor/SceneEditor.js.map +1 -0
  242. package/dist/esm/engine/NiceGameEngine.js +170 -0
  243. package/dist/esm/engine/NiceGameEngine.js.map +1 -0
  244. package/dist/esm/enterprise/Enterprise.js +246 -0
  245. package/dist/esm/enterprise/Enterprise.js.map +1 -0
  246. package/dist/esm/i18n/I18n.js +622 -0
  247. package/dist/esm/i18n/I18n.js.map +1 -0
  248. package/dist/esm/i18n/useTranslation.js +95 -0
  249. package/dist/esm/i18n/useTranslation.js.map +1 -0
  250. package/dist/esm/index.js +71 -0
  251. package/dist/esm/index.js.map +1 -0
  252. package/dist/esm/input/GamepadNavigation.js +178 -0
  253. package/dist/esm/input/GamepadNavigation.js.map +1 -0
  254. package/dist/esm/input/InputManager.js +399 -0
  255. package/dist/esm/input/InputManager.js.map +1 -0
  256. package/dist/esm/input/useGamepads.js +83 -0
  257. package/dist/esm/input/useGamepads.js.map +1 -0
  258. package/dist/esm/kids/KidMode.js +663 -0
  259. package/dist/esm/kids/KidMode.js.map +1 -0
  260. package/dist/esm/kids/KidTools.js +529 -0
  261. package/dist/esm/kids/KidTools.js.map +1 -0
  262. package/dist/esm/monetization/Monetization.js +186 -0
  263. package/dist/esm/monetization/Monetization.js.map +1 -0
  264. package/dist/esm/multiplayer/LocalMultiplayer.js +284 -0
  265. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -0
  266. package/dist/esm/multiplayer/MiniGameTypes.js +60 -0
  267. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -0
  268. package/dist/esm/network/MultiplayerTransport.js +106 -0
  269. package/dist/esm/network/MultiplayerTransport.js.map +1 -0
  270. package/dist/esm/network/Networking.js +561 -0
  271. package/dist/esm/network/Networking.js.map +1 -0
  272. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +30 -0
  273. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  274. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +49 -0
  275. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  276. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +44 -0
  277. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  278. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +16 -0
  279. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  280. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +136 -0
  281. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  282. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +159 -0
  283. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  284. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +54 -0
  285. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  286. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +9 -0
  287. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  288. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +49 -0
  289. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  290. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +573 -0
  291. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  292. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +954 -0
  293. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  294. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +147 -0
  295. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  296. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  297. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  298. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  299. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  300. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  301. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  302. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +122 -0
  303. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  304. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +15 -0
  305. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  306. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +186 -0
  307. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  308. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +197 -0
  309. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  310. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +106 -0
  311. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  312. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +36 -0
  313. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  314. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +22 -0
  315. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  316. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +249 -0
  317. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  318. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +158 -0
  319. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  320. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +86 -0
  321. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  322. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +13 -0
  323. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  324. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -0
  325. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  326. package/dist/esm/pathfinding/Pathfinding.js +250 -0
  327. package/dist/esm/pathfinding/Pathfinding.js.map +1 -0
  328. package/dist/esm/performance/BenchmarkSuite.js +315 -0
  329. package/dist/esm/performance/BenchmarkSuite.js.map +1 -0
  330. package/dist/esm/performance/Performance.js +171 -0
  331. package/dist/esm/performance/Performance.js.map +1 -0
  332. package/dist/esm/performance/PerformanceAdvanced.js +620 -0
  333. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -0
  334. package/dist/esm/physics/PhysicsAdvanced.js +417 -0
  335. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -0
  336. package/dist/esm/physics/PhysicsEngine2D.js +442 -0
  337. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -0
  338. package/dist/esm/plugins/PluginSDK.js +484 -0
  339. package/dist/esm/plugins/PluginSDK.js.map +1 -0
  340. package/dist/esm/plugins/PluginTestKit.js +359 -0
  341. package/dist/esm/plugins/PluginTestKit.js.map +1 -0
  342. package/dist/esm/procedural/Procedural.js +282 -0
  343. package/dist/esm/procedural/Procedural.js.map +1 -0
  344. package/dist/esm/procedural/WorldBuilding.js +225 -0
  345. package/dist/esm/procedural/WorldBuilding.js.map +1 -0
  346. package/dist/esm/release/MobileExport.js +142 -0
  347. package/dist/esm/release/MobileExport.js.map +1 -0
  348. package/dist/esm/release/Release.js +141 -0
  349. package/dist/esm/release/Release.js.map +1 -0
  350. package/dist/esm/rendering/Camera2D.js +127 -0
  351. package/dist/esm/rendering/Camera2D.js.map +1 -0
  352. package/dist/esm/rendering/Renderer2D.js +334 -0
  353. package/dist/esm/rendering/Renderer2D.js.map +1 -0
  354. package/dist/esm/runtime3d/Runtime3D.js +371 -0
  355. package/dist/esm/runtime3d/Runtime3D.js.map +1 -0
  356. package/dist/esm/runtime3d/SceneEditor3D.js +299 -0
  357. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -0
  358. package/dist/esm/scene/SceneManager.js +184 -0
  359. package/dist/esm/scene/SceneManager.js.map +1 -0
  360. package/dist/esm/scripting/NodeGraph.js +568 -0
  361. package/dist/esm/scripting/NodeGraph.js.map +1 -0
  362. package/dist/esm/social/Social.js +85 -0
  363. package/dist/esm/social/Social.js.map +1 -0
  364. package/dist/esm/templates/ActionTemplates.js +217 -0
  365. package/dist/esm/templates/ActionTemplates.js.map +1 -0
  366. package/dist/esm/templates/PartyTemplates.js +204 -0
  367. package/dist/esm/templates/PartyTemplates.js.map +1 -0
  368. package/dist/esm/templates/PuzzleTemplates.js +267 -0
  369. package/dist/esm/templates/PuzzleTemplates.js.map +1 -0
  370. package/dist/esm/templates/RPGTemplates.js +196 -0
  371. package/dist/esm/templates/RPGTemplates.js.map +1 -0
  372. package/dist/esm/templates/SportsTemplates.js +257 -0
  373. package/dist/esm/templates/SportsTemplates.js.map +1 -0
  374. package/dist/esm/templates/StrategyTemplates.js +157 -0
  375. package/dist/esm/templates/StrategyTemplates.js.map +1 -0
  376. package/dist/esm/templates/WaveDefense.js +467 -0
  377. package/dist/esm/templates/WaveDefense.js.map +1 -0
  378. package/dist/esm/tilemap/Tilemap.js +205 -0
  379. package/dist/esm/tilemap/Tilemap.js.map +1 -0
  380. package/dist/esm/tutorials/TutorialBranching.js +388 -0
  381. package/dist/esm/tutorials/TutorialBranching.js.map +1 -0
  382. package/dist/esm/tutorials/TutorialEngine.js +897 -0
  383. package/dist/esm/tutorials/TutorialEngine.js.map +1 -0
  384. package/dist/esm/tutorials/TutorialOverlay.js +600 -0
  385. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -0
  386. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +810 -0
  387. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  388. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +736 -0
  389. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  390. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +780 -0
  391. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  392. package/dist/esm/ui/GameUI.js +310 -0
  393. package/dist/esm/ui/GameUI.js.map +1 -0
  394. package/dist/esm/xr/ARVR.js +182 -0
  395. package/dist/esm/xr/ARVR.js.map +1 -0
  396. package/dist/types/__tests__/setup.d.ts +1 -0
  397. package/dist/types/accessibility/Accessibility.d.ts +82 -0
  398. package/dist/types/accessibility/index.d.ts +1 -0
  399. package/dist/types/ai/AI.d.ts +140 -0
  400. package/dist/types/ai/index.d.ts +1 -0
  401. package/dist/types/animation/Animation.d.ts +90 -0
  402. package/dist/types/animation/index.d.ts +1 -0
  403. package/dist/types/audio/AudioAdvanced.d.ts +190 -0
  404. package/dist/types/audio/AudioManager.d.ts +55 -0
  405. package/dist/types/audio/index.d.ts +1 -0
  406. package/dist/types/community/Community.d.ts +112 -0
  407. package/dist/types/community/index.d.ts +1 -0
  408. package/dist/types/core/EventBus.d.ts +16 -0
  409. package/dist/types/core/GameClock.d.ts +29 -0
  410. package/dist/types/core/GameConfig.d.ts +20 -0
  411. package/dist/types/core/GameLoop.d.ts +32 -0
  412. package/dist/types/core/ServiceLocator.d.ts +36 -0
  413. package/dist/types/core/TypeSafety.d.ts +190 -0
  414. package/dist/types/core/Validation.d.ts +24 -0
  415. package/dist/types/core/index.d.ts +7 -0
  416. package/dist/types/core/math.d.ts +32 -0
  417. package/dist/types/core/types.d.ts +130 -0
  418. package/dist/types/devtools/AssetStore.d.ts +133 -0
  419. package/dist/types/devtools/DevTools.d.ts +217 -0
  420. package/dist/types/devtools/DeveloperExperience.d.ts +123 -0
  421. package/dist/types/devtools/index.d.ts +3 -0
  422. package/dist/types/docs/APIPlayground.d.ts +26 -0
  423. package/dist/types/docs/Cookbook.d.ts +18 -0
  424. package/dist/types/docs/DocGenerator.d.ts +83 -0
  425. package/dist/types/docs/Guides.d.ts +18 -0
  426. package/dist/types/docs/index.d.ts +4 -0
  427. package/dist/types/ecs/World.d.ts +219 -0
  428. package/dist/types/ecs/index.d.ts +1 -0
  429. package/dist/types/editor/AdvancedEditor.d.ts +267 -0
  430. package/dist/types/editor/AssetManager.d.ts +45 -0
  431. package/dist/types/editor/DebugTools.d.ts +74 -0
  432. package/dist/types/editor/NiceGameEditor.d.ts +115 -0
  433. package/dist/types/editor/SceneEditor.d.ts +37 -0
  434. package/dist/types/editor/index.d.ts +8 -0
  435. package/dist/types/engine/NiceGameEngine.d.ts +53 -0
  436. package/dist/types/engine/index.d.ts +2 -0
  437. package/dist/types/enterprise/Enterprise.d.ts +217 -0
  438. package/dist/types/enterprise/index.d.ts +1 -0
  439. package/dist/types/epic/index.d.ts +10 -0
  440. package/dist/types/i18n/I18n.d.ts +107 -0
  441. package/dist/types/i18n/index.d.ts +2 -0
  442. package/dist/types/i18n/useTranslation.d.ts +74 -0
  443. package/dist/types/index.d.ts +127 -0
  444. package/dist/types/input/GamepadNavigation.d.ts +34 -0
  445. package/dist/types/input/InputManager.d.ts +77 -0
  446. package/dist/types/input/index.d.ts +3 -0
  447. package/dist/types/input/useGamepads.d.ts +39 -0
  448. package/dist/types/kids/KidMode.d.ts +207 -0
  449. package/dist/types/kids/KidTools.d.ts +135 -0
  450. package/dist/types/kids/index.d.ts +2 -0
  451. package/dist/types/legendary/index.d.ts +57 -0
  452. package/dist/types/monetization/Monetization.d.ts +224 -0
  453. package/dist/types/monetization/index.d.ts +1 -0
  454. package/dist/types/multiplayer/LocalMultiplayer.d.ts +61 -0
  455. package/dist/types/multiplayer/MiniGameTypes.d.ts +70 -0
  456. package/dist/types/multiplayer/index.d.ts +3 -0
  457. package/dist/types/network/MultiplayerTransport.d.ts +71 -0
  458. package/dist/types/network/Networking.d.ts +199 -0
  459. package/dist/types/network/index.d.ts +2 -0
  460. package/dist/types/pathfinding/Pathfinding.d.ts +42 -0
  461. package/dist/types/pathfinding/index.d.ts +1 -0
  462. package/dist/types/performance/AssetCompression.d.ts +137 -0
  463. package/dist/types/performance/BenchmarkSuite.d.ts +99 -0
  464. package/dist/types/performance/Performance.d.ts +87 -0
  465. package/dist/types/performance/PerformanceAdvanced.d.ts +220 -0
  466. package/dist/types/performance/WASMModules.d.ts +65 -0
  467. package/dist/types/performance/WebGPUCompute.d.ts +164 -0
  468. package/dist/types/performance/index.d.ts +1 -0
  469. package/dist/types/physics/PhysicsAdvanced.d.ts +148 -0
  470. package/dist/types/physics/PhysicsEngine2D.d.ts +66 -0
  471. package/dist/types/physics/index.d.ts +1 -0
  472. package/dist/types/plugins/PluginSDK.d.ts +134 -0
  473. package/dist/types/plugins/PluginTestKit.d.ts +107 -0
  474. package/dist/types/plugins/index.d.ts +2 -0
  475. package/dist/types/procedural/Procedural.d.ts +90 -0
  476. package/dist/types/procedural/WorldBuilding.d.ts +200 -0
  477. package/dist/types/procedural/index.d.ts +2 -0
  478. package/dist/types/release/MobileExport.d.ts +218 -0
  479. package/dist/types/release/Release.d.ts +81 -0
  480. package/dist/types/release/index.d.ts +1 -0
  481. package/dist/types/rendering/Camera2D.d.ts +39 -0
  482. package/dist/types/rendering/Renderer2D.d.ts +41 -0
  483. package/dist/types/rendering/index.d.ts +2 -0
  484. package/dist/types/runtime3d/Runtime3D.d.ts +259 -0
  485. package/dist/types/runtime3d/SceneEditor3D.d.ts +186 -0
  486. package/dist/types/runtime3d/index.d.ts +2 -0
  487. package/dist/types/scene/SceneManager.d.ts +59 -0
  488. package/dist/types/scene/index.d.ts +2 -0
  489. package/dist/types/scripting/NodeGraph.d.ts +84 -0
  490. package/dist/types/scripting/index.d.ts +2 -0
  491. package/dist/types/social/Social.d.ts +245 -0
  492. package/dist/types/social/index.d.ts +1 -0
  493. package/dist/types/templates/ActionTemplates.d.ts +173 -0
  494. package/dist/types/templates/PartyTemplates.d.ts +195 -0
  495. package/dist/types/templates/PuzzleTemplates.d.ts +127 -0
  496. package/dist/types/templates/RPGTemplates.d.ts +210 -0
  497. package/dist/types/templates/SportsTemplates.d.ts +162 -0
  498. package/dist/types/templates/StrategyTemplates.d.ts +264 -0
  499. package/dist/types/templates/WaveDefense.d.ts +92 -0
  500. package/dist/types/templates/index.d.ts +2 -0
  501. package/dist/types/tilemap/Tilemap.d.ts +66 -0
  502. package/dist/types/tilemap/index.d.ts +1 -0
  503. package/dist/types/tutorials/TutorialBranching.d.ts +132 -0
  504. package/dist/types/tutorials/TutorialEditor.d.ts +43 -0
  505. package/dist/types/tutorials/TutorialEngine.d.ts +237 -0
  506. package/dist/types/tutorials/TutorialOverlay.d.ts +79 -0
  507. package/dist/types/tutorials/VoiceNarration.d.ts +75 -0
  508. package/dist/types/tutorials/content/Tutorials_T04.d.ts +3 -0
  509. package/dist/types/tutorials/content/Tutorials_T05_T08.d.ts +6 -0
  510. package/dist/types/tutorials/content/Tutorials_T09_T11.d.ts +5 -0
  511. package/dist/types/tutorials/content/Tutorials_T12_T15.d.ts +6 -0
  512. package/dist/types/tutorials/content/UITutorials.d.ts +14 -0
  513. package/dist/types/tutorials/content/index.d.ts +5 -0
  514. package/dist/types/tutorials/index.d.ts +6 -0
  515. package/dist/types/ui/GameUI.d.ts +97 -0
  516. package/dist/types/ui/index.d.ts +2 -0
  517. package/dist/types/xr/ARVR.d.ts +252 -0
  518. package/dist/types/xr/index.d.ts +1 -0
  519. package/package.json +88 -0
@@ -0,0 +1,32 @@
1
+ export interface GameLoopCallbacks {
2
+ /** Called every frame with delta in seconds */
3
+ update(dt: number): void;
4
+ /** Called at fixed intervals (physics) */
5
+ fixedUpdate(fixedDt: number): void;
6
+ /** Called every frame after update */
7
+ render(interpolation: number): void;
8
+ }
9
+ export declare class GameLoop {
10
+ private callbacks;
11
+ private _running;
12
+ private _rafId;
13
+ private _lastTime;
14
+ private _accumulator;
15
+ private _frameCount;
16
+ private _fpsTime;
17
+ private _fps;
18
+ private _timeScale;
19
+ fixedTimestep: number;
20
+ maxDelta: number;
21
+ constructor(callbacks: GameLoopCallbacks);
22
+ get running(): boolean;
23
+ get fps(): number;
24
+ get frameCount(): number;
25
+ get timeScale(): number;
26
+ set timeScale(v: number);
27
+ start(): void;
28
+ stop(): void;
29
+ /** Run a single frame manually (for step-debug) */
30
+ stepFrame(dt?: number): void;
31
+ private tick;
32
+ }
@@ -0,0 +1,36 @@
1
+ export declare class ServiceLocator {
2
+ private static _instance;
3
+ private services;
4
+ static get instance(): ServiceLocator;
5
+ /** Register a service by key. */
6
+ register<T>(key: string, service: T): void;
7
+ /** Retrieve a service by key. Throws if not registered. */
8
+ get<T>(key: string): T;
9
+ /** Retrieve a service, or undefined if not registered. */
10
+ tryGet<T>(key: string): T | undefined;
11
+ /** Check if a service is registered. */
12
+ has(key: string): boolean;
13
+ /** Remove a service. */
14
+ unregister(key: string): boolean;
15
+ /** Remove all services. */
16
+ clear(): void;
17
+ /** Reset static singleton (for testing). */
18
+ static reset(): void;
19
+ }
20
+ export declare const SERVICE_KEYS: {
21
+ readonly CONFIG: "GameConfig";
22
+ readonly CLOCK: "GameClock";
23
+ readonly LOOP: "GameLoop";
24
+ readonly EVENTS: "EventBus";
25
+ readonly EVENT_BUS: "EventBus";
26
+ readonly INPUT: "InputManager";
27
+ readonly AUDIO: "AudioManager";
28
+ readonly RENDERER: "Renderer2D";
29
+ readonly CAMERA: "Camera2D";
30
+ readonly PHYSICS: "PhysicsEngine";
31
+ readonly SCENES: "SceneManager";
32
+ readonly SCENE_MANAGER: "SceneManager";
33
+ readonly PLAYERS: "PlayerManager";
34
+ readonly PLAYER_MANAGER: "PlayerManager";
35
+ readonly WORLD: "World";
36
+ };
@@ -0,0 +1,190 @@
1
+ import type { Vec2, Vec3, Rect, Color, EntityId, Component, ComponentType } from './types';
2
+ /**
3
+ * Discriminated union of all built-in component types.
4
+ * Use `component.type` to narrow the type safely.
5
+ */
6
+ export type BuiltInComponentType = 'Transform' | 'Sprite' | 'Shape' | 'Collider2D' | 'RigidBody2D' | 'Text' | 'Animator' | 'Script' | 'AudioSource' | 'ParticleEmitter' | 'CameraTarget';
7
+ /**
8
+ * Discriminated union mapping.
9
+ * Given a component `type` literal, resolves to the concrete component interface.
10
+ */
11
+ export interface ComponentTypeMap {
12
+ Transform: {
13
+ type: 'Transform';
14
+ position: Vec2;
15
+ rotation: number;
16
+ scale: Vec2;
17
+ prevPosition: Vec2;
18
+ prevRotation: number;
19
+ };
20
+ Sprite: {
21
+ type: 'Sprite';
22
+ assetId: string | null;
23
+ width: number;
24
+ height: number;
25
+ opacity: number;
26
+ layer: number;
27
+ visible: boolean;
28
+ };
29
+ Shape: {
30
+ type: 'Shape';
31
+ shape: 'rect' | 'circle' | 'polygon' | 'line';
32
+ fillColor: Color;
33
+ strokeColor: Color;
34
+ layer: number;
35
+ visible: boolean;
36
+ };
37
+ Collider2D: {
38
+ type: 'Collider2D';
39
+ shape: 'aabb' | 'circle' | 'polygon';
40
+ width: number;
41
+ height: number;
42
+ radius: number;
43
+ isTrigger: boolean;
44
+ };
45
+ RigidBody2D: {
46
+ type: 'RigidBody2D';
47
+ bodyType: 'dynamic' | 'static' | 'kinematic';
48
+ velocity: Vec2;
49
+ mass: number;
50
+ };
51
+ Text: {
52
+ type: 'Text';
53
+ text: string;
54
+ fontSize: number;
55
+ fontFamily: string;
56
+ };
57
+ Animator: {
58
+ type: 'Animator';
59
+ };
60
+ Script: {
61
+ type: 'Script';
62
+ scriptId: string;
63
+ };
64
+ AudioSource: {
65
+ type: 'AudioSource';
66
+ soundId: string;
67
+ playing: boolean;
68
+ };
69
+ ParticleEmitter: {
70
+ type: 'ParticleEmitter';
71
+ rate: number;
72
+ maxParticles: number;
73
+ };
74
+ CameraTarget: {
75
+ type: 'CameraTarget';
76
+ priority: number;
77
+ };
78
+ }
79
+ /** Any concrete built-in component (discriminated union). */
80
+ export type AnyBuiltInComponent = ComponentTypeMap[BuiltInComponentType] & Component;
81
+ export declare function isVec2(value: unknown): value is Vec2;
82
+ export declare function isVec3(value: unknown): value is Vec3;
83
+ export declare function isRect(value: unknown): value is Rect;
84
+ export declare function isColor(value: unknown): value is Color;
85
+ export declare function isComponent(value: unknown): value is Component;
86
+ export declare function isEntityId(value: unknown): value is EntityId;
87
+ /** Narrow component to a specific built-in type. */
88
+ export declare function isComponentOfType<T extends BuiltInComponentType>(component: Component, type: T): component is ComponentTypeMap[T] & Component;
89
+ /**
90
+ * Get a component with type-safe narrowing instead of `as` cast.
91
+ * Returns undefined if entity doesn't have that component.
92
+ */
93
+ export declare function getTypedComponent<T extends BuiltInComponentType>(components: Component[], type: T): (ComponentTypeMap[T] & Component) | undefined;
94
+ /**
95
+ * Require a component — throws if not found (use only when guaranteed).
96
+ */
97
+ export declare function requireComponent<T extends BuiltInComponentType>(components: Component[], type: T, entityId: EntityId): ComponentTypeMap[T] & Component;
98
+ /**
99
+ * Standard event name pattern: `namespace:action`
100
+ * This type restricts event names to the correct format.
101
+ */
102
+ export type EngineEventName = `engine:${string}` | `ecs:${string}` | `physics:${string}` | `input:${string}` | `audio:${string}` | `scene:${string}` | `render:${string}` | `network:${string}` | `editor:${string}` | `tutorial:${string}` | `plugin:${string}` | `collision:${string}` | `entity:${string}` | `sound:${string}` | `music:${string}` | `ui:${string}` | `game:${string}`;
103
+ /** Known engine events with typed payloads. */
104
+ export interface EngineEventMap {
105
+ 'engine:start': void;
106
+ 'engine:stop': void;
107
+ 'engine:pause': void;
108
+ 'engine:resume': void;
109
+ 'ecs:entity-created': {
110
+ entityId: EntityId;
111
+ };
112
+ 'ecs:entity-destroyed': {
113
+ entityId: EntityId;
114
+ };
115
+ 'ecs:component-added': {
116
+ entityId: EntityId;
117
+ type: ComponentType;
118
+ };
119
+ 'ecs:component-removed': {
120
+ entityId: EntityId;
121
+ type: ComponentType;
122
+ };
123
+ 'physics:collision-enter': {
124
+ entityA: EntityId;
125
+ entityB: EntityId;
126
+ };
127
+ 'physics:collision-exit': {
128
+ entityA: EntityId;
129
+ entityB: EntityId;
130
+ };
131
+ 'input:gamepad-connected': {
132
+ index: number;
133
+ };
134
+ 'input:gamepad-disconnected': {
135
+ index: number;
136
+ };
137
+ 'audio:sound-play': {
138
+ id: string;
139
+ soundId: number;
140
+ };
141
+ 'audio:music-play': {
142
+ id: string;
143
+ };
144
+ 'scene:load': {
145
+ sceneId: string;
146
+ };
147
+ 'scene:unload': {
148
+ sceneId: string;
149
+ };
150
+ }
151
+ /**
152
+ * Standard time parameter type.
153
+ * Use `dt` everywhere for delta time (seconds).
154
+ */
155
+ export interface TimeDelta {
156
+ /** Delta time in seconds since last frame. */
157
+ readonly dt: number;
158
+ /** Fixed delta time in seconds (for physics). */
159
+ readonly fixedDt: number;
160
+ /** Total elapsed time in seconds. */
161
+ readonly elapsed: number;
162
+ /** Frame count since start. */
163
+ readonly frame: number;
164
+ }
165
+ /** Generic record type (replaces `Record<string, any>`). */
166
+ export type StrictRecord<V = unknown> = Record<string, V>;
167
+ /** JSON-serializable value (replaces `any` in serialization). */
168
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
169
+ [key: string]: JsonValue;
170
+ };
171
+ /** Callback with optional data (replaces `(...args: any[]) => void`). */
172
+ export type EventCallback<T = unknown> = (data: T) => void;
173
+ /**
174
+ * Mark properties as strictly typed — no implicit `any` allowed.
175
+ * Use instead of `Partial<T>` where undefined is meaningful.
176
+ */
177
+ export type StrictPartial<T> = {
178
+ [K in keyof T]?: T[K] | undefined;
179
+ };
180
+ /**
181
+ * Ensure at least one property is defined (replaces loose optionals).
182
+ */
183
+ export type AtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
184
+ [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
185
+ }[Keys];
186
+ /**
187
+ * Use in `default` of switch to ensure all cases are handled.
188
+ * Compile-time error if a new case is added but not handled.
189
+ */
190
+ export declare function assertNever(value: never, message?: string): never;
@@ -0,0 +1,24 @@
1
+ export declare function clamp(value: number, min: number, max: number): number;
2
+ export declare function clampPositive(value: number): number;
3
+ export declare function assertFinite(value: number, name: string): void;
4
+ export declare function assertPositive(value: number, name: string): void;
5
+ export declare function assertNonNegative(value: number, name: string): void;
6
+ export declare function assertInRange(value: number, min: number, max: number, name: string): void;
7
+ export declare function assertNonEmpty(value: string, name: string): void;
8
+ export declare function assertCanvasElement(el: unknown, name?: string): asserts el is HTMLCanvasElement;
9
+ export interface ValidationResult {
10
+ valid: boolean;
11
+ warnings: string[];
12
+ errors: string[];
13
+ }
14
+ export declare function validateGameSettings(settings: {
15
+ width?: number;
16
+ height?: number;
17
+ targetFps?: number;
18
+ maxPlayers?: number;
19
+ }): ValidationResult;
20
+ export declare function validatePhysicsSettings(settings: {
21
+ fixedTimestep?: number;
22
+ velocityIterations?: number;
23
+ positionIterations?: number;
24
+ }): ValidationResult;
@@ -0,0 +1,7 @@
1
+ export * from './types';
2
+ export { GameLoop, type GameLoopCallbacks } from './GameLoop';
3
+ export { GameClock } from './GameClock';
4
+ export { GameConfig, DEFAULT_SETTINGS, DEFAULT_PHYSICS, DEFAULT_AUDIO, DEFAULT_RENDERING } from './GameConfig';
5
+ export { EventBus, type EventHandler } from './EventBus';
6
+ export { ServiceLocator, SERVICE_KEYS } from './ServiceLocator';
7
+ export { v2 } from './math';
@@ -0,0 +1,32 @@
1
+ import type { Vec2 } from './types';
2
+ export declare const v2: {
3
+ create(x?: number, y?: number): Vec2;
4
+ zero(): Vec2;
5
+ one(): Vec2;
6
+ clone(a: Vec2): Vec2;
7
+ add(a: Vec2, b: Vec2): Vec2;
8
+ sub(a: Vec2, b: Vec2): Vec2;
9
+ mul(a: Vec2, s: number): Vec2;
10
+ div(a: Vec2, s: number): Vec2;
11
+ dot(a: Vec2, b: Vec2): number;
12
+ cross(a: Vec2, b: Vec2): number;
13
+ len(a: Vec2): number;
14
+ lenSq(a: Vec2): number;
15
+ normalize(a: Vec2): Vec2;
16
+ dist(a: Vec2, b: Vec2): number;
17
+ distSq(a: Vec2, b: Vec2): number;
18
+ lerp(a: Vec2, b: Vec2, t: number): Vec2;
19
+ rotate(a: Vec2, angle: number): Vec2;
20
+ angle(a: Vec2): number;
21
+ angleBetween(a: Vec2, b: Vec2): number;
22
+ negate(a: Vec2): Vec2;
23
+ perpCW(a: Vec2): Vec2;
24
+ perpCCW(a: Vec2): Vec2;
25
+ reflect(a: Vec2, normal: Vec2): Vec2;
26
+ equals(a: Vec2, b: Vec2, epsilon?: number): boolean;
27
+ min(a: Vec2, b: Vec2): Vec2;
28
+ max(a: Vec2, b: Vec2): Vec2;
29
+ clamp(v: Vec2, min: Vec2, max: Vec2): Vec2;
30
+ fromAngle(angle: number, length?: number): Vec2;
31
+ random(minLen?: number, maxLen?: number): Vec2;
32
+ };
@@ -0,0 +1,130 @@
1
+ export interface Vec2 {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ export interface Vec3 {
6
+ x: number;
7
+ y: number;
8
+ z: number;
9
+ }
10
+ export interface Rect {
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export interface Color {
17
+ r: number;
18
+ g: number;
19
+ b: number;
20
+ a: number;
21
+ }
22
+ export type GameState = 'idle' | 'loading' | 'running' | 'paused' | 'menu' | 'gameover';
23
+ /** Unique entity identifier */
24
+ export type EntityId = number;
25
+ /** Component type tag */
26
+ export type ComponentType = string;
27
+ /**
28
+ * Base component — all components extend this.
29
+ * Every component records its entity owner and type.
30
+ */
31
+ export interface Component {
32
+ readonly type: ComponentType;
33
+ entityId: EntityId;
34
+ enabled: boolean;
35
+ }
36
+ /** Callback for system update */
37
+ export type UpdateFn = (dt: number) => void;
38
+ export type InputDevice = 'keyboard' | 'mouse' | 'gamepad' | 'touch';
39
+ export interface InputAction {
40
+ name: string;
41
+ pressed: boolean;
42
+ justPressed: boolean;
43
+ justReleased: boolean;
44
+ value: number;
45
+ }
46
+ export type AudioChannel = 'master' | 'music' | 'sfx' | 'voice' | 'ui';
47
+ export interface SceneData {
48
+ id: string;
49
+ name: string;
50
+ entities: SerializedEntity[];
51
+ settings: Record<string, unknown>;
52
+ }
53
+ export interface SerializedEntity {
54
+ id: EntityId;
55
+ name: string;
56
+ tags: string[];
57
+ components: SerializedComponent[];
58
+ children: EntityId[];
59
+ }
60
+ export interface SerializedComponent {
61
+ type: ComponentType;
62
+ data: Record<string, unknown>;
63
+ }
64
+ export interface GameProject {
65
+ /** .ndg format version */
66
+ formatVersion: number;
67
+ name: string;
68
+ version: string;
69
+ author: string;
70
+ description: string;
71
+ settings: GameSettings;
72
+ scenes: SceneData[];
73
+ startSceneId: string;
74
+ assets: AssetManifest;
75
+ }
76
+ export interface GameSettings {
77
+ width: number;
78
+ height: number;
79
+ targetFps: number;
80
+ maxPlayers: number;
81
+ physics: PhysicsSettings;
82
+ audio: AudioSettings;
83
+ rendering: RenderingSettings;
84
+ }
85
+ export interface PhysicsSettings {
86
+ gravity: Vec2;
87
+ fixedTimestep: number;
88
+ velocityIterations: number;
89
+ positionIterations: number;
90
+ }
91
+ export interface AudioSettings {
92
+ masterVolume: number;
93
+ musicVolume: number;
94
+ sfxVolume: number;
95
+ voiceVolume: number;
96
+ }
97
+ export interface RenderingSettings {
98
+ pixelPerfect: boolean;
99
+ antiAlias: boolean;
100
+ backgroundColor: Color;
101
+ }
102
+ export type AssetType = 'sprite' | 'spritesheet' | 'audio' | 'tilemap' | 'scene' | 'prefab' | 'script' | 'font';
103
+ export interface AssetEntry {
104
+ id: string;
105
+ name: string;
106
+ type: AssetType;
107
+ path: string;
108
+ meta?: Record<string, unknown>;
109
+ }
110
+ export interface AssetManifest {
111
+ assets: AssetEntry[];
112
+ }
113
+ export type GameEventType = string;
114
+ export interface GameEvent<T = unknown> {
115
+ type: GameEventType;
116
+ data: T;
117
+ timestamp: number;
118
+ }
119
+ export type ScreenMode = 'shared' | 'split-horizontal' | 'split-vertical' | 'split-quad' | 'split-6' | 'split-9' | 'split-12';
120
+ export interface PlayerConfig {
121
+ index: number;
122
+ name: string;
123
+ color: Color;
124
+ inputDevice: InputDevice;
125
+ gamepadIndex?: number;
126
+ }
127
+ export type DeepPartial<T> = {
128
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
129
+ };
130
+ export type Constructor<T = unknown> = new (...args: unknown[]) => T;
@@ -0,0 +1,133 @@
1
+ export type AssetCategory = 'sprite' | 'audio' | 'tileset' | 'template' | 'font' | 'shader' | 'model3d' | 'particle' | 'animation';
2
+ export type AssetLicense = 'free' | 'cc0' | 'cc-by' | 'premium' | 'subscription';
3
+ export interface StoreAsset {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ category: AssetCategory;
8
+ tags: string[];
9
+ author: string;
10
+ license: AssetLicense;
11
+ price: number;
12
+ currency: string;
13
+ thumbnailUrl: string;
14
+ downloadUrl: string;
15
+ fileSize: number;
16
+ downloads: number;
17
+ rating: number;
18
+ ratingCount: number;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ version: string;
22
+ compatibility: string[];
23
+ preview?: string[];
24
+ }
25
+ export interface StoreSearchParams {
26
+ query?: string;
27
+ category?: AssetCategory;
28
+ license?: AssetLicense;
29
+ minRating?: number;
30
+ maxPrice?: number;
31
+ sortBy?: 'popular' | 'newest' | 'rating' | 'name' | 'price';
32
+ page?: number;
33
+ pageSize?: number;
34
+ tags?: string[];
35
+ }
36
+ export interface StoreSearchResult {
37
+ assets: StoreAsset[];
38
+ total: number;
39
+ page: number;
40
+ pageSize: number;
41
+ totalPages: number;
42
+ }
43
+ export interface InstalledAsset {
44
+ asset: StoreAsset;
45
+ installedAt: string;
46
+ localPath: string;
47
+ version: string;
48
+ }
49
+ export declare const BUILTIN_FREE_ASSETS: StoreAsset[];
50
+ export declare class AssetStore {
51
+ private installed;
52
+ private allAssets;
53
+ /** Search available assets. */
54
+ search(params?: StoreSearchParams): StoreSearchResult;
55
+ /** Get featured assets. */
56
+ getFeatured(): StoreAsset[];
57
+ /** Get assets by category. */
58
+ getByCategory(category: AssetCategory): StoreAsset[];
59
+ /** Install an asset (downloads and registers locally). */
60
+ install(assetId: string, localPath: string): InstalledAsset | null;
61
+ /** Uninstall an asset. */
62
+ uninstall(assetId: string): boolean;
63
+ /** Get installed assets. */
64
+ getInstalled(): InstalledAsset[];
65
+ /** Check if an asset is installed. */
66
+ isInstalled(assetId: string): boolean;
67
+ /** Register external assets (from remote catalog). */
68
+ registerAssets(assets: StoreAsset[]): void;
69
+ }
70
+ export type DiffType = 'added' | 'removed' | 'modified' | 'unchanged';
71
+ export interface DiffEntry {
72
+ path: string;
73
+ type: DiffType;
74
+ oldValue?: unknown;
75
+ newValue?: unknown;
76
+ children?: DiffEntry[];
77
+ }
78
+ export interface ProjectDiff {
79
+ timestamp: string;
80
+ versionA: string;
81
+ versionB: string;
82
+ entities: DiffEntry[];
83
+ scenes: DiffEntry[];
84
+ assets: DiffEntry[];
85
+ settings: DiffEntry[];
86
+ summary: {
87
+ added: number;
88
+ removed: number;
89
+ modified: number;
90
+ unchanged: number;
91
+ };
92
+ }
93
+ /**
94
+ * Compare two serialized game projects and produce a diff.
95
+ */
96
+ export declare function compareProjects(projectA: Record<string, unknown>, projectB: Record<string, unknown>, versionA?: string, versionB?: string): ProjectDiff;
97
+ /** Format diff as human-readable text. */
98
+ export declare function formatDiff(diff: ProjectDiff): string;
99
+ export interface MarketplaceConfig {
100
+ /** Remote catalog endpoint URL */
101
+ catalogUrl?: string;
102
+ /** Max concurrent downloads */
103
+ maxConcurrent: number;
104
+ /** Auto-update installed plugins */
105
+ autoUpdate: boolean;
106
+ /** Allowed categories */
107
+ categories: string[];
108
+ }
109
+ export declare const DEFAULT_MARKETPLACE_CONFIG: MarketplaceConfig;
110
+ export interface PluginInstallResult {
111
+ pluginId: string;
112
+ success: boolean;
113
+ version: string;
114
+ message: string;
115
+ }
116
+ /**
117
+ * Plugin Marketplace UI controller.
118
+ * Extends the PluginSDK's PluginMarketplace with one-click install flow.
119
+ */
120
+ export declare class PluginMarketplaceUI {
121
+ private config;
122
+ private installing;
123
+ private installHistory;
124
+ constructor(config?: Partial<MarketplaceConfig>);
125
+ /** Check if a plugin is currently being installed. */
126
+ isInstalling(pluginId: string): boolean;
127
+ /** One-click install: validate, download, activate. */
128
+ installPlugin(pluginId: string, version?: string): Promise<PluginInstallResult>;
129
+ /** Uninstall a plugin. */
130
+ uninstallPlugin(pluginId: string): PluginInstallResult;
131
+ /** Get install history. */
132
+ getHistory(): PluginInstallResult[];
133
+ }