@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.
- package/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/cjs/accessibility/Accessibility.js +162 -0
- package/dist/cjs/accessibility/Accessibility.js.map +1 -0
- package/dist/cjs/ai/AI.js +321 -0
- package/dist/cjs/ai/AI.js.map +1 -0
- package/dist/cjs/animation/Animation.js +233 -0
- package/dist/cjs/animation/Animation.js.map +1 -0
- package/dist/cjs/audio/AudioAdvanced.js +262 -0
- package/dist/cjs/audio/AudioAdvanced.js.map +1 -0
- package/dist/cjs/audio/AudioManager.js +248 -0
- package/dist/cjs/audio/AudioManager.js.map +1 -0
- package/dist/cjs/core/EventBus.js +63 -0
- package/dist/cjs/core/EventBus.js.map +1 -0
- package/dist/cjs/core/GameClock.js +70 -0
- package/dist/cjs/core/GameClock.js.map +1 -0
- package/dist/cjs/core/GameConfig.js +86 -0
- package/dist/cjs/core/GameConfig.js.map +1 -0
- package/dist/cjs/core/GameLoop.js +93 -0
- package/dist/cjs/core/GameLoop.js.map +1 -0
- package/dist/cjs/core/ServiceLocator.js +73 -0
- package/dist/cjs/core/ServiceLocator.js.map +1 -0
- package/dist/cjs/core/Validation.js +119 -0
- package/dist/cjs/core/Validation.js.map +1 -0
- package/dist/cjs/core/math.js +116 -0
- package/dist/cjs/core/math.js.map +1 -0
- package/dist/cjs/devtools/DevTools.js +560 -0
- package/dist/cjs/devtools/DevTools.js.map +1 -0
- package/dist/cjs/devtools/DeveloperExperience.js +562 -0
- package/dist/cjs/devtools/DeveloperExperience.js.map +1 -0
- package/dist/cjs/docs/DocGenerator.js +357 -0
- package/dist/cjs/docs/DocGenerator.js.map +1 -0
- package/dist/cjs/ecs/World.js +280 -0
- package/dist/cjs/ecs/World.js.map +1 -0
- package/dist/cjs/editor/AdvancedEditor.js +149 -0
- package/dist/cjs/editor/AdvancedEditor.js.map +1 -0
- package/dist/cjs/editor/AssetManager.js +190 -0
- package/dist/cjs/editor/AssetManager.js.map +1 -0
- package/dist/cjs/editor/DebugTools.js +187 -0
- package/dist/cjs/editor/DebugTools.js.map +1 -0
- package/dist/cjs/editor/NiceGameEditor.js +361 -0
- package/dist/cjs/editor/NiceGameEditor.js.map +1 -0
- package/dist/cjs/editor/SceneEditor.js +223 -0
- package/dist/cjs/editor/SceneEditor.js.map +1 -0
- package/dist/cjs/engine/NiceGameEngine.js +172 -0
- package/dist/cjs/engine/NiceGameEngine.js.map +1 -0
- package/dist/cjs/enterprise/Enterprise.js +258 -0
- package/dist/cjs/enterprise/Enterprise.js.map +1 -0
- package/dist/cjs/i18n/I18n.js +634 -0
- package/dist/cjs/i18n/I18n.js.map +1 -0
- package/dist/cjs/i18n/useTranslation.js +100 -0
- package/dist/cjs/i18n/useTranslation.js.map +1 -0
- package/dist/cjs/index.js +526 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/input/GamepadNavigation.js +181 -0
- package/dist/cjs/input/GamepadNavigation.js.map +1 -0
- package/dist/cjs/input/InputManager.js +404 -0
- package/dist/cjs/input/InputManager.js.map +1 -0
- package/dist/cjs/input/useGamepads.js +86 -0
- package/dist/cjs/input/useGamepads.js.map +1 -0
- package/dist/cjs/kids/KidMode.js +670 -0
- package/dist/cjs/kids/KidMode.js.map +1 -0
- package/dist/cjs/kids/KidTools.js +533 -0
- package/dist/cjs/kids/KidTools.js.map +1 -0
- package/dist/cjs/monetization/Monetization.js +197 -0
- package/dist/cjs/monetization/Monetization.js.map +1 -0
- package/dist/cjs/multiplayer/LocalMultiplayer.js +288 -0
- package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -0
- package/dist/cjs/multiplayer/MiniGameTypes.js +70 -0
- package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -0
- package/dist/cjs/network/MultiplayerTransport.js +109 -0
- package/dist/cjs/network/MultiplayerTransport.js.map +1 -0
- package/dist/cjs/network/Networking.js +569 -0
- package/dist/cjs/network/Networking.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +32 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +51 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +46 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +18 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +145 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +161 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +56 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +11 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +52 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +576 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +956 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +149 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +124 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +17 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +188 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +199 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +108 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +38 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +24 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +264 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +160 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +88 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +50 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +6 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
- package/dist/cjs/pathfinding/Pathfinding.js +255 -0
- package/dist/cjs/pathfinding/Pathfinding.js.map +1 -0
- package/dist/cjs/performance/BenchmarkSuite.js +318 -0
- package/dist/cjs/performance/BenchmarkSuite.js.map +1 -0
- package/dist/cjs/performance/Performance.js +180 -0
- package/dist/cjs/performance/Performance.js.map +1 -0
- package/dist/cjs/performance/PerformanceAdvanced.js +628 -0
- package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -0
- package/dist/cjs/physics/PhysicsAdvanced.js +432 -0
- package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -0
- package/dist/cjs/physics/PhysicsEngine2D.js +445 -0
- package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -0
- package/dist/cjs/plugins/PluginSDK.js +488 -0
- package/dist/cjs/plugins/PluginSDK.js.map +1 -0
- package/dist/cjs/plugins/PluginTestKit.js +368 -0
- package/dist/cjs/plugins/PluginTestKit.js.map +1 -0
- package/dist/cjs/procedural/Procedural.js +288 -0
- package/dist/cjs/procedural/Procedural.js.map +1 -0
- package/dist/cjs/procedural/WorldBuilding.js +246 -0
- package/dist/cjs/procedural/WorldBuilding.js.map +1 -0
- package/dist/cjs/release/MobileExport.js +149 -0
- package/dist/cjs/release/MobileExport.js.map +1 -0
- package/dist/cjs/release/Release.js +151 -0
- package/dist/cjs/release/Release.js.map +1 -0
- package/dist/cjs/rendering/Camera2D.js +129 -0
- package/dist/cjs/rendering/Camera2D.js.map +1 -0
- package/dist/cjs/rendering/Renderer2D.js +337 -0
- package/dist/cjs/rendering/Renderer2D.js.map +1 -0
- package/dist/cjs/runtime3d/Runtime3D.js +381 -0
- package/dist/cjs/runtime3d/Runtime3D.js.map +1 -0
- package/dist/cjs/runtime3d/SceneEditor3D.js +316 -0
- package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -0
- package/dist/cjs/scene/SceneManager.js +186 -0
- package/dist/cjs/scene/SceneManager.js.map +1 -0
- package/dist/cjs/scripting/NodeGraph.js +573 -0
- package/dist/cjs/scripting/NodeGraph.js.map +1 -0
- package/dist/cjs/social/Social.js +91 -0
- package/dist/cjs/social/Social.js.map +1 -0
- package/dist/cjs/templates/ActionTemplates.js +229 -0
- package/dist/cjs/templates/ActionTemplates.js.map +1 -0
- package/dist/cjs/templates/PartyTemplates.js +221 -0
- package/dist/cjs/templates/PartyTemplates.js.map +1 -0
- package/dist/cjs/templates/PuzzleTemplates.js +283 -0
- package/dist/cjs/templates/PuzzleTemplates.js.map +1 -0
- package/dist/cjs/templates/RPGTemplates.js +209 -0
- package/dist/cjs/templates/RPGTemplates.js.map +1 -0
- package/dist/cjs/templates/SportsTemplates.js +272 -0
- package/dist/cjs/templates/SportsTemplates.js.map +1 -0
- package/dist/cjs/templates/StrategyTemplates.js +173 -0
- package/dist/cjs/templates/StrategyTemplates.js.map +1 -0
- package/dist/cjs/templates/WaveDefense.js +470 -0
- package/dist/cjs/templates/WaveDefense.js.map +1 -0
- package/dist/cjs/tilemap/Tilemap.js +208 -0
- package/dist/cjs/tilemap/Tilemap.js.map +1 -0
- package/dist/cjs/tutorials/TutorialBranching.js +392 -0
- package/dist/cjs/tutorials/TutorialBranching.js.map +1 -0
- package/dist/cjs/tutorials/TutorialEngine.js +903 -0
- package/dist/cjs/tutorials/TutorialEngine.js.map +1 -0
- package/dist/cjs/tutorials/TutorialOverlay.js +602 -0
- package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +816 -0
- package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +741 -0
- package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +786 -0
- package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +1 -0
- package/dist/cjs/ui/GameUI.js +312 -0
- package/dist/cjs/ui/GameUI.js.map +1 -0
- package/dist/cjs/xr/ARVR.js +197 -0
- package/dist/cjs/xr/ARVR.js.map +1 -0
- package/dist/esm/accessibility/Accessibility.js +153 -0
- package/dist/esm/accessibility/Accessibility.js.map +1 -0
- package/dist/esm/ai/AI.js +302 -0
- package/dist/esm/ai/AI.js.map +1 -0
- package/dist/esm/animation/Animation.js +227 -0
- package/dist/esm/animation/Animation.js.map +1 -0
- package/dist/esm/audio/AudioAdvanced.js +243 -0
- package/dist/esm/audio/AudioAdvanced.js.map +1 -0
- package/dist/esm/audio/AudioManager.js +246 -0
- package/dist/esm/audio/AudioManager.js.map +1 -0
- package/dist/esm/core/EventBus.js +61 -0
- package/dist/esm/core/EventBus.js.map +1 -0
- package/dist/esm/core/GameClock.js +68 -0
- package/dist/esm/core/GameClock.js.map +1 -0
- package/dist/esm/core/GameConfig.js +80 -0
- package/dist/esm/core/GameConfig.js.map +1 -0
- package/dist/esm/core/GameLoop.js +91 -0
- package/dist/esm/core/GameLoop.js.map +1 -0
- package/dist/esm/core/ServiceLocator.js +70 -0
- package/dist/esm/core/ServiceLocator.js.map +1 -0
- package/dist/esm/core/Validation.js +108 -0
- package/dist/esm/core/Validation.js.map +1 -0
- package/dist/esm/core/math.js +114 -0
- package/dist/esm/core/math.js.map +1 -0
- package/dist/esm/devtools/DevTools.js +555 -0
- package/dist/esm/devtools/DevTools.js.map +1 -0
- package/dist/esm/devtools/DeveloperExperience.js +547 -0
- package/dist/esm/devtools/DeveloperExperience.js.map +1 -0
- package/dist/esm/docs/DocGenerator.js +353 -0
- package/dist/esm/docs/DocGenerator.js.map +1 -0
- package/dist/esm/ecs/World.js +276 -0
- package/dist/esm/ecs/World.js.map +1 -0
- package/dist/esm/editor/AdvancedEditor.js +141 -0
- package/dist/esm/editor/AdvancedEditor.js.map +1 -0
- package/dist/esm/editor/AssetManager.js +188 -0
- package/dist/esm/editor/AssetManager.js.map +1 -0
- package/dist/esm/editor/DebugTools.js +179 -0
- package/dist/esm/editor/DebugTools.js.map +1 -0
- package/dist/esm/editor/NiceGameEditor.js +355 -0
- package/dist/esm/editor/NiceGameEditor.js.map +1 -0
- package/dist/esm/editor/SceneEditor.js +209 -0
- package/dist/esm/editor/SceneEditor.js.map +1 -0
- package/dist/esm/engine/NiceGameEngine.js +170 -0
- package/dist/esm/engine/NiceGameEngine.js.map +1 -0
- package/dist/esm/enterprise/Enterprise.js +246 -0
- package/dist/esm/enterprise/Enterprise.js.map +1 -0
- package/dist/esm/i18n/I18n.js +622 -0
- package/dist/esm/i18n/I18n.js.map +1 -0
- package/dist/esm/i18n/useTranslation.js +95 -0
- package/dist/esm/i18n/useTranslation.js.map +1 -0
- package/dist/esm/index.js +71 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/input/GamepadNavigation.js +178 -0
- package/dist/esm/input/GamepadNavigation.js.map +1 -0
- package/dist/esm/input/InputManager.js +399 -0
- package/dist/esm/input/InputManager.js.map +1 -0
- package/dist/esm/input/useGamepads.js +83 -0
- package/dist/esm/input/useGamepads.js.map +1 -0
- package/dist/esm/kids/KidMode.js +663 -0
- package/dist/esm/kids/KidMode.js.map +1 -0
- package/dist/esm/kids/KidTools.js +529 -0
- package/dist/esm/kids/KidTools.js.map +1 -0
- package/dist/esm/monetization/Monetization.js +186 -0
- package/dist/esm/monetization/Monetization.js.map +1 -0
- package/dist/esm/multiplayer/LocalMultiplayer.js +284 -0
- package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -0
- package/dist/esm/multiplayer/MiniGameTypes.js +60 -0
- package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -0
- package/dist/esm/network/MultiplayerTransport.js +106 -0
- package/dist/esm/network/MultiplayerTransport.js.map +1 -0
- package/dist/esm/network/Networking.js +561 -0
- package/dist/esm/network/Networking.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +30 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +49 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +44 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +16 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +136 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +159 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +54 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +9 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +49 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +573 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +954 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +147 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +122 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +15 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +186 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +197 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +106 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +36 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +22 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +249 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +158 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +86 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +13 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
- package/dist/esm/pathfinding/Pathfinding.js +250 -0
- package/dist/esm/pathfinding/Pathfinding.js.map +1 -0
- package/dist/esm/performance/BenchmarkSuite.js +315 -0
- package/dist/esm/performance/BenchmarkSuite.js.map +1 -0
- package/dist/esm/performance/Performance.js +171 -0
- package/dist/esm/performance/Performance.js.map +1 -0
- package/dist/esm/performance/PerformanceAdvanced.js +620 -0
- package/dist/esm/performance/PerformanceAdvanced.js.map +1 -0
- package/dist/esm/physics/PhysicsAdvanced.js +417 -0
- package/dist/esm/physics/PhysicsAdvanced.js.map +1 -0
- package/dist/esm/physics/PhysicsEngine2D.js +442 -0
- package/dist/esm/physics/PhysicsEngine2D.js.map +1 -0
- package/dist/esm/plugins/PluginSDK.js +484 -0
- package/dist/esm/plugins/PluginSDK.js.map +1 -0
- package/dist/esm/plugins/PluginTestKit.js +359 -0
- package/dist/esm/plugins/PluginTestKit.js.map +1 -0
- package/dist/esm/procedural/Procedural.js +282 -0
- package/dist/esm/procedural/Procedural.js.map +1 -0
- package/dist/esm/procedural/WorldBuilding.js +225 -0
- package/dist/esm/procedural/WorldBuilding.js.map +1 -0
- package/dist/esm/release/MobileExport.js +142 -0
- package/dist/esm/release/MobileExport.js.map +1 -0
- package/dist/esm/release/Release.js +141 -0
- package/dist/esm/release/Release.js.map +1 -0
- package/dist/esm/rendering/Camera2D.js +127 -0
- package/dist/esm/rendering/Camera2D.js.map +1 -0
- package/dist/esm/rendering/Renderer2D.js +334 -0
- package/dist/esm/rendering/Renderer2D.js.map +1 -0
- package/dist/esm/runtime3d/Runtime3D.js +371 -0
- package/dist/esm/runtime3d/Runtime3D.js.map +1 -0
- package/dist/esm/runtime3d/SceneEditor3D.js +299 -0
- package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -0
- package/dist/esm/scene/SceneManager.js +184 -0
- package/dist/esm/scene/SceneManager.js.map +1 -0
- package/dist/esm/scripting/NodeGraph.js +568 -0
- package/dist/esm/scripting/NodeGraph.js.map +1 -0
- package/dist/esm/social/Social.js +85 -0
- package/dist/esm/social/Social.js.map +1 -0
- package/dist/esm/templates/ActionTemplates.js +217 -0
- package/dist/esm/templates/ActionTemplates.js.map +1 -0
- package/dist/esm/templates/PartyTemplates.js +204 -0
- package/dist/esm/templates/PartyTemplates.js.map +1 -0
- package/dist/esm/templates/PuzzleTemplates.js +267 -0
- package/dist/esm/templates/PuzzleTemplates.js.map +1 -0
- package/dist/esm/templates/RPGTemplates.js +196 -0
- package/dist/esm/templates/RPGTemplates.js.map +1 -0
- package/dist/esm/templates/SportsTemplates.js +257 -0
- package/dist/esm/templates/SportsTemplates.js.map +1 -0
- package/dist/esm/templates/StrategyTemplates.js +157 -0
- package/dist/esm/templates/StrategyTemplates.js.map +1 -0
- package/dist/esm/templates/WaveDefense.js +467 -0
- package/dist/esm/templates/WaveDefense.js.map +1 -0
- package/dist/esm/tilemap/Tilemap.js +205 -0
- package/dist/esm/tilemap/Tilemap.js.map +1 -0
- package/dist/esm/tutorials/TutorialBranching.js +388 -0
- package/dist/esm/tutorials/TutorialBranching.js.map +1 -0
- package/dist/esm/tutorials/TutorialEngine.js +897 -0
- package/dist/esm/tutorials/TutorialEngine.js.map +1 -0
- package/dist/esm/tutorials/TutorialOverlay.js +600 -0
- package/dist/esm/tutorials/TutorialOverlay.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T05_T08.js +810 -0
- package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T09_T11.js +736 -0
- package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T12_T15.js +780 -0
- package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +1 -0
- package/dist/esm/ui/GameUI.js +310 -0
- package/dist/esm/ui/GameUI.js.map +1 -0
- package/dist/esm/xr/ARVR.js +182 -0
- package/dist/esm/xr/ARVR.js.map +1 -0
- package/dist/types/__tests__/setup.d.ts +1 -0
- package/dist/types/accessibility/Accessibility.d.ts +82 -0
- package/dist/types/accessibility/index.d.ts +1 -0
- package/dist/types/ai/AI.d.ts +140 -0
- package/dist/types/ai/index.d.ts +1 -0
- package/dist/types/animation/Animation.d.ts +90 -0
- package/dist/types/animation/index.d.ts +1 -0
- package/dist/types/audio/AudioAdvanced.d.ts +190 -0
- package/dist/types/audio/AudioManager.d.ts +55 -0
- package/dist/types/audio/index.d.ts +1 -0
- package/dist/types/community/Community.d.ts +112 -0
- package/dist/types/community/index.d.ts +1 -0
- package/dist/types/core/EventBus.d.ts +16 -0
- package/dist/types/core/GameClock.d.ts +29 -0
- package/dist/types/core/GameConfig.d.ts +20 -0
- package/dist/types/core/GameLoop.d.ts +32 -0
- package/dist/types/core/ServiceLocator.d.ts +36 -0
- package/dist/types/core/TypeSafety.d.ts +190 -0
- package/dist/types/core/Validation.d.ts +24 -0
- package/dist/types/core/index.d.ts +7 -0
- package/dist/types/core/math.d.ts +32 -0
- package/dist/types/core/types.d.ts +130 -0
- package/dist/types/devtools/AssetStore.d.ts +133 -0
- package/dist/types/devtools/DevTools.d.ts +217 -0
- package/dist/types/devtools/DeveloperExperience.d.ts +123 -0
- package/dist/types/devtools/index.d.ts +3 -0
- package/dist/types/docs/APIPlayground.d.ts +26 -0
- package/dist/types/docs/Cookbook.d.ts +18 -0
- package/dist/types/docs/DocGenerator.d.ts +83 -0
- package/dist/types/docs/Guides.d.ts +18 -0
- package/dist/types/docs/index.d.ts +4 -0
- package/dist/types/ecs/World.d.ts +219 -0
- package/dist/types/ecs/index.d.ts +1 -0
- package/dist/types/editor/AdvancedEditor.d.ts +267 -0
- package/dist/types/editor/AssetManager.d.ts +45 -0
- package/dist/types/editor/DebugTools.d.ts +74 -0
- package/dist/types/editor/NiceGameEditor.d.ts +115 -0
- package/dist/types/editor/SceneEditor.d.ts +37 -0
- package/dist/types/editor/index.d.ts +8 -0
- package/dist/types/engine/NiceGameEngine.d.ts +53 -0
- package/dist/types/engine/index.d.ts +2 -0
- package/dist/types/enterprise/Enterprise.d.ts +217 -0
- package/dist/types/enterprise/index.d.ts +1 -0
- package/dist/types/epic/index.d.ts +10 -0
- package/dist/types/i18n/I18n.d.ts +107 -0
- package/dist/types/i18n/index.d.ts +2 -0
- package/dist/types/i18n/useTranslation.d.ts +74 -0
- package/dist/types/index.d.ts +127 -0
- package/dist/types/input/GamepadNavigation.d.ts +34 -0
- package/dist/types/input/InputManager.d.ts +77 -0
- package/dist/types/input/index.d.ts +3 -0
- package/dist/types/input/useGamepads.d.ts +39 -0
- package/dist/types/kids/KidMode.d.ts +207 -0
- package/dist/types/kids/KidTools.d.ts +135 -0
- package/dist/types/kids/index.d.ts +2 -0
- package/dist/types/legendary/index.d.ts +57 -0
- package/dist/types/monetization/Monetization.d.ts +224 -0
- package/dist/types/monetization/index.d.ts +1 -0
- package/dist/types/multiplayer/LocalMultiplayer.d.ts +61 -0
- package/dist/types/multiplayer/MiniGameTypes.d.ts +70 -0
- package/dist/types/multiplayer/index.d.ts +3 -0
- package/dist/types/network/MultiplayerTransport.d.ts +71 -0
- package/dist/types/network/Networking.d.ts +199 -0
- package/dist/types/network/index.d.ts +2 -0
- package/dist/types/pathfinding/Pathfinding.d.ts +42 -0
- package/dist/types/pathfinding/index.d.ts +1 -0
- package/dist/types/performance/AssetCompression.d.ts +137 -0
- package/dist/types/performance/BenchmarkSuite.d.ts +99 -0
- package/dist/types/performance/Performance.d.ts +87 -0
- package/dist/types/performance/PerformanceAdvanced.d.ts +220 -0
- package/dist/types/performance/WASMModules.d.ts +65 -0
- package/dist/types/performance/WebGPUCompute.d.ts +164 -0
- package/dist/types/performance/index.d.ts +1 -0
- package/dist/types/physics/PhysicsAdvanced.d.ts +148 -0
- package/dist/types/physics/PhysicsEngine2D.d.ts +66 -0
- package/dist/types/physics/index.d.ts +1 -0
- package/dist/types/plugins/PluginSDK.d.ts +134 -0
- package/dist/types/plugins/PluginTestKit.d.ts +107 -0
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/procedural/Procedural.d.ts +90 -0
- package/dist/types/procedural/WorldBuilding.d.ts +200 -0
- package/dist/types/procedural/index.d.ts +2 -0
- package/dist/types/release/MobileExport.d.ts +218 -0
- package/dist/types/release/Release.d.ts +81 -0
- package/dist/types/release/index.d.ts +1 -0
- package/dist/types/rendering/Camera2D.d.ts +39 -0
- package/dist/types/rendering/Renderer2D.d.ts +41 -0
- package/dist/types/rendering/index.d.ts +2 -0
- package/dist/types/runtime3d/Runtime3D.d.ts +259 -0
- package/dist/types/runtime3d/SceneEditor3D.d.ts +186 -0
- package/dist/types/runtime3d/index.d.ts +2 -0
- package/dist/types/scene/SceneManager.d.ts +59 -0
- package/dist/types/scene/index.d.ts +2 -0
- package/dist/types/scripting/NodeGraph.d.ts +84 -0
- package/dist/types/scripting/index.d.ts +2 -0
- package/dist/types/social/Social.d.ts +245 -0
- package/dist/types/social/index.d.ts +1 -0
- package/dist/types/templates/ActionTemplates.d.ts +173 -0
- package/dist/types/templates/PartyTemplates.d.ts +195 -0
- package/dist/types/templates/PuzzleTemplates.d.ts +127 -0
- package/dist/types/templates/RPGTemplates.d.ts +210 -0
- package/dist/types/templates/SportsTemplates.d.ts +162 -0
- package/dist/types/templates/StrategyTemplates.d.ts +264 -0
- package/dist/types/templates/WaveDefense.d.ts +92 -0
- package/dist/types/templates/index.d.ts +2 -0
- package/dist/types/tilemap/Tilemap.d.ts +66 -0
- package/dist/types/tilemap/index.d.ts +1 -0
- package/dist/types/tutorials/TutorialBranching.d.ts +132 -0
- package/dist/types/tutorials/TutorialEditor.d.ts +43 -0
- package/dist/types/tutorials/TutorialEngine.d.ts +237 -0
- package/dist/types/tutorials/TutorialOverlay.d.ts +79 -0
- package/dist/types/tutorials/VoiceNarration.d.ts +75 -0
- package/dist/types/tutorials/content/Tutorials_T04.d.ts +3 -0
- package/dist/types/tutorials/content/Tutorials_T05_T08.d.ts +6 -0
- package/dist/types/tutorials/content/Tutorials_T09_T11.d.ts +5 -0
- package/dist/types/tutorials/content/Tutorials_T12_T15.d.ts +6 -0
- package/dist/types/tutorials/content/UITutorials.d.ts +14 -0
- package/dist/types/tutorials/content/index.d.ts +5 -0
- package/dist/types/tutorials/index.d.ts +6 -0
- package/dist/types/ui/GameUI.d.ts +97 -0
- package/dist/types/ui/index.d.ts +2 -0
- package/dist/types/xr/ARVR.d.ts +252 -0
- package/dist/types/xr/index.d.ts +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
/* ────────────────────────────────────────────────────────────────
|
|
2
|
+
DeveloperExperience — LEGENDARY DX improvements
|
|
3
|
+
|
|
4
|
+
Features:
|
|
5
|
+
• Rich error messages with suggestions and docs links
|
|
6
|
+
• API usage hints / auto-complete metadata
|
|
7
|
+
• Performance dashboard data collection
|
|
8
|
+
• Engine health check
|
|
9
|
+
• Debug overlay system
|
|
10
|
+
──────────────────────────────────────────────────────────────── */
|
|
11
|
+
/** Error code registry with friendly messages */
|
|
12
|
+
const ERROR_REGISTRY = {
|
|
13
|
+
'E001': {
|
|
14
|
+
message: 'Entity not found',
|
|
15
|
+
suggestion: 'Check that the entity ID exists. Use world.hasEntity(id) before accessing.',
|
|
16
|
+
docsSection: 'ecs/entities',
|
|
17
|
+
severity: 'error',
|
|
18
|
+
},
|
|
19
|
+
'E002': {
|
|
20
|
+
message: 'Component not found on entity',
|
|
21
|
+
suggestion: 'Use world.hasComponent(entityId, type) to check before getComponent().',
|
|
22
|
+
docsSection: 'ecs/components',
|
|
23
|
+
severity: 'error',
|
|
24
|
+
},
|
|
25
|
+
'E003': {
|
|
26
|
+
message: 'Scene not registered',
|
|
27
|
+
suggestion: 'Register the scene with sceneManager.register(id, config) before loading it.',
|
|
28
|
+
docsSection: 'scenes/management',
|
|
29
|
+
severity: 'error',
|
|
30
|
+
},
|
|
31
|
+
'E004': {
|
|
32
|
+
message: 'Canvas not found',
|
|
33
|
+
suggestion: 'Ensure the canvas element exists in the DOM before creating the engine. Use document.getElementById("your-canvas-id").',
|
|
34
|
+
docsSection: 'getting-started',
|
|
35
|
+
severity: 'error',
|
|
36
|
+
},
|
|
37
|
+
'E005': {
|
|
38
|
+
message: 'Physics body has NaN values',
|
|
39
|
+
suggestion: 'A velocity or position component has NaN. Check for division by zero or uninitialized values.',
|
|
40
|
+
docsSection: 'physics/debugging',
|
|
41
|
+
severity: 'error',
|
|
42
|
+
},
|
|
43
|
+
'E006': {
|
|
44
|
+
message: 'Asset not loaded',
|
|
45
|
+
suggestion: 'Load assets before using them: await assetManager.load(id, url). Check assetManager.isLoaded(id).',
|
|
46
|
+
docsSection: 'assets/loading',
|
|
47
|
+
severity: 'error',
|
|
48
|
+
},
|
|
49
|
+
'E007': {
|
|
50
|
+
message: 'System priority conflict',
|
|
51
|
+
suggestion: 'Two systems have the same priority. Assign unique priority values to control execution order.',
|
|
52
|
+
docsSection: 'ecs/systems',
|
|
53
|
+
severity: 'warning',
|
|
54
|
+
},
|
|
55
|
+
'E008': {
|
|
56
|
+
message: 'Maximum entity count exceeded',
|
|
57
|
+
suggestion: 'You have too many entities. Consider using object pooling (ObjectPool) or destroying unused entities.',
|
|
58
|
+
docsSection: 'performance/pooling',
|
|
59
|
+
severity: 'warning',
|
|
60
|
+
},
|
|
61
|
+
'E009': {
|
|
62
|
+
message: 'Circular parent reference detected',
|
|
63
|
+
suggestion: 'Entity A is a child of B which is a child of A. Remove the circular parent-child relationship.',
|
|
64
|
+
docsSection: 'ecs/hierarchy',
|
|
65
|
+
severity: 'error',
|
|
66
|
+
},
|
|
67
|
+
'E010': {
|
|
68
|
+
message: 'WebGL context lost',
|
|
69
|
+
suggestion: 'The browser lost the rendering context. This usually happens with GPU memory issues. Try reducing texture sizes.',
|
|
70
|
+
docsSection: 'rendering/troubleshooting',
|
|
71
|
+
severity: 'error',
|
|
72
|
+
},
|
|
73
|
+
'W001': {
|
|
74
|
+
message: 'Frame time exceeds budget',
|
|
75
|
+
suggestion: 'The frame took longer than 16.67ms (60 FPS). Profile your systems to find the bottleneck.',
|
|
76
|
+
docsSection: 'performance/profiling',
|
|
77
|
+
severity: 'warning',
|
|
78
|
+
},
|
|
79
|
+
'W002': {
|
|
80
|
+
message: 'Orphaned event listener',
|
|
81
|
+
suggestion: 'An event listener was registered but never unsubscribed. Store the unsubscribe function and call it in dispose().',
|
|
82
|
+
docsSection: 'patterns/cleanup',
|
|
83
|
+
severity: 'warning',
|
|
84
|
+
},
|
|
85
|
+
'W003': {
|
|
86
|
+
message: 'Deprecated API usage',
|
|
87
|
+
suggestion: 'This API is deprecated and will be removed in a future version. Check the migration guide.',
|
|
88
|
+
docsSection: 'migration',
|
|
89
|
+
severity: 'warning',
|
|
90
|
+
},
|
|
91
|
+
'W004': {
|
|
92
|
+
message: 'Large texture detected',
|
|
93
|
+
suggestion: 'Texture exceeds 2048x2048. Consider using texture atlases or lower resolution for better performance.',
|
|
94
|
+
docsSection: 'assets/optimization',
|
|
95
|
+
severity: 'warning',
|
|
96
|
+
},
|
|
97
|
+
'I001': {
|
|
98
|
+
message: 'Engine initialized successfully',
|
|
99
|
+
suggestion: '',
|
|
100
|
+
docsSection: 'getting-started',
|
|
101
|
+
severity: 'info',
|
|
102
|
+
},
|
|
103
|
+
'I002': {
|
|
104
|
+
message: 'Hot module replacement active',
|
|
105
|
+
suggestion: 'Changes to game scripts will be applied without restarting the engine.',
|
|
106
|
+
docsSection: 'development/hmr',
|
|
107
|
+
severity: 'info',
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
/** Get a rich engine error by code */
|
|
111
|
+
function getEngineError(code, context) {
|
|
112
|
+
const entry = ERROR_REGISTRY[code];
|
|
113
|
+
if (!entry) {
|
|
114
|
+
return {
|
|
115
|
+
code,
|
|
116
|
+
message: `Unknown engine error: ${code}`,
|
|
117
|
+
suggestion: 'Report this issue at github.com/nicetdev/game-engine/issues',
|
|
118
|
+
severity: 'error',
|
|
119
|
+
context,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return { code, ...entry, context };
|
|
123
|
+
}
|
|
124
|
+
/** Format an engine error for console output */
|
|
125
|
+
function formatEngineError(err) {
|
|
126
|
+
const icon = err.severity === 'error' ? '❌' : err.severity === 'warning' ? '⚠️' : 'ℹ️';
|
|
127
|
+
const lines = [
|
|
128
|
+
`${icon} [Nice2Dev ${err.code}] ${err.message}`,
|
|
129
|
+
];
|
|
130
|
+
if (err.suggestion) {
|
|
131
|
+
lines.push(` 💡 ${err.suggestion}`);
|
|
132
|
+
}
|
|
133
|
+
if (err.docsSection) {
|
|
134
|
+
lines.push(` 📖 Docs: https://nice2dev.com/docs/game-engine/${err.docsSection}`);
|
|
135
|
+
}
|
|
136
|
+
if (err.context) {
|
|
137
|
+
lines.push(` 📋 Context: ${JSON.stringify(err.context)}`);
|
|
138
|
+
}
|
|
139
|
+
return lines.join('\n');
|
|
140
|
+
}
|
|
141
|
+
/** Throw a rich engine error */
|
|
142
|
+
function throwEngineError(code, context) {
|
|
143
|
+
const err = getEngineError(code, context);
|
|
144
|
+
throw new Error(formatEngineError(err));
|
|
145
|
+
}
|
|
146
|
+
/** Log a rich engine warning */
|
|
147
|
+
function warnEngine(code, context) {
|
|
148
|
+
const err = getEngineError(code, context);
|
|
149
|
+
// eslint-disable-next-line no-console
|
|
150
|
+
console.warn(formatEngineError(err));
|
|
151
|
+
}
|
|
152
|
+
/** Core API hints for auto-complete and intellisense */
|
|
153
|
+
const API_HINTS = [
|
|
154
|
+
{
|
|
155
|
+
method: 'world.createEntity',
|
|
156
|
+
module: 'ECS',
|
|
157
|
+
signature: 'world.createEntity(name?: string): EntityId',
|
|
158
|
+
description: 'Create a new entity in the world',
|
|
159
|
+
example: 'const player = world.createEntity("Player");',
|
|
160
|
+
params: [{ name: 'name', type: 'string', description: 'Optional display name', optional: true }],
|
|
161
|
+
returns: 'EntityId — unique numeric ID',
|
|
162
|
+
since: '0.1.0',
|
|
163
|
+
tags: ['ecs', 'entity', 'create'],
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
method: 'world.addComponent',
|
|
167
|
+
module: 'ECS',
|
|
168
|
+
signature: 'world.addComponent<K>(entityId, type: K, data?: Partial<ComponentMap[K]>): ComponentMap[K]',
|
|
169
|
+
description: 'Add a component to an entity',
|
|
170
|
+
example: 'world.addComponent(player, "Transform", { x: 100, y: 200 });',
|
|
171
|
+
params: [
|
|
172
|
+
{ name: 'entityId', type: 'EntityId', description: 'Entity to add component to' },
|
|
173
|
+
{ name: 'type', type: 'string', description: 'Component type name (e.g., "Transform", "Sprite")' },
|
|
174
|
+
{ name: 'data', type: 'Partial<ComponentMap[K]>', description: 'Initial component data', optional: true },
|
|
175
|
+
],
|
|
176
|
+
returns: 'The created component instance',
|
|
177
|
+
since: '0.1.0',
|
|
178
|
+
tags: ['ecs', 'component', 'add'],
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
method: 'world.getComponent',
|
|
182
|
+
module: 'ECS',
|
|
183
|
+
signature: 'world.getComponent<K>(entityId, type: K): ComponentMap[K]',
|
|
184
|
+
description: 'Get a component from an entity',
|
|
185
|
+
example: 'const pos = world.getComponent(player, "Transform");',
|
|
186
|
+
params: [
|
|
187
|
+
{ name: 'entityId', type: 'EntityId', description: 'Entity to get from' },
|
|
188
|
+
{ name: 'type', type: 'string', description: 'Component type name' },
|
|
189
|
+
],
|
|
190
|
+
returns: 'The component data',
|
|
191
|
+
since: '0.1.0',
|
|
192
|
+
tags: ['ecs', 'component', 'get'],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
method: 'world.query',
|
|
196
|
+
module: 'ECS',
|
|
197
|
+
signature: 'world.query(...types: string[]): EntityId[]',
|
|
198
|
+
description: 'Find all entities with ALL specified components',
|
|
199
|
+
example: 'const movers = world.query("Transform", "RigidBody2D");',
|
|
200
|
+
params: [
|
|
201
|
+
{ name: 'types', type: '...string[]', description: 'Component types to match (spread)' },
|
|
202
|
+
],
|
|
203
|
+
returns: 'Array of matching EntityIds',
|
|
204
|
+
since: '0.1.0',
|
|
205
|
+
tags: ['ecs', 'query', 'search'],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
method: 'engine.start',
|
|
209
|
+
module: 'Engine',
|
|
210
|
+
signature: 'engine.start(): void',
|
|
211
|
+
description: 'Start the game loop',
|
|
212
|
+
example: 'engine.start();',
|
|
213
|
+
params: [],
|
|
214
|
+
returns: 'void',
|
|
215
|
+
since: '0.1.0',
|
|
216
|
+
tags: ['engine', 'start', 'loop'],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
method: 'input.isKeyDown',
|
|
220
|
+
module: 'Input',
|
|
221
|
+
signature: 'input.isKeyDown(key: string): boolean',
|
|
222
|
+
description: 'Check if a key is currently held down (continuous)',
|
|
223
|
+
example: 'if (input.isKeyDown("ArrowRight")) { /* move */ }',
|
|
224
|
+
params: [{ name: 'key', type: 'string', description: 'Key code (e.g., "ArrowLeft", "Space", "KeyA")' }],
|
|
225
|
+
returns: 'boolean',
|
|
226
|
+
since: '0.1.0',
|
|
227
|
+
tags: ['input', 'keyboard', 'continuous'],
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
method: 'input.isKeyPressed',
|
|
231
|
+
module: 'Input',
|
|
232
|
+
signature: 'input.isKeyPressed(key: string): boolean',
|
|
233
|
+
description: 'Check if a key was just pressed this frame (single-frame)',
|
|
234
|
+
example: 'if (input.isKeyPressed("Space")) { /* jump */ }',
|
|
235
|
+
params: [{ name: 'key', type: 'string', description: 'Key code' }],
|
|
236
|
+
returns: 'boolean — true only on the first frame',
|
|
237
|
+
since: '0.1.0',
|
|
238
|
+
tags: ['input', 'keyboard', 'single-frame'],
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
method: 'sceneManager.loadScene',
|
|
242
|
+
module: 'Scene',
|
|
243
|
+
signature: 'sceneManager.loadScene(id: string, transition?: TransitionType): void',
|
|
244
|
+
description: 'Load a registered scene with optional transition',
|
|
245
|
+
example: 'sceneManager.loadScene("level2", "fade");',
|
|
246
|
+
params: [
|
|
247
|
+
{ name: 'id', type: 'string', description: 'Scene ID' },
|
|
248
|
+
{ name: 'transition', type: 'TransitionType', description: 'Transition effect', optional: true },
|
|
249
|
+
],
|
|
250
|
+
returns: 'void',
|
|
251
|
+
since: '0.1.0',
|
|
252
|
+
tags: ['scene', 'load', 'transition'],
|
|
253
|
+
},
|
|
254
|
+
];
|
|
255
|
+
/** Search API hints */
|
|
256
|
+
function searchAPIHints(query) {
|
|
257
|
+
const lower = query.toLowerCase();
|
|
258
|
+
return API_HINTS.filter(h => h.method.toLowerCase().includes(lower) ||
|
|
259
|
+
h.description.toLowerCase().includes(lower) ||
|
|
260
|
+
h.tags.some(t => t.includes(lower)));
|
|
261
|
+
}
|
|
262
|
+
function createPerfDashboard(maxSnapshots = 300) {
|
|
263
|
+
return { snapshots: [], maxSnapshots, warnings: [] };
|
|
264
|
+
}
|
|
265
|
+
function recordPerfSnapshot(dashboard, snapshot) {
|
|
266
|
+
dashboard.snapshots.push(snapshot);
|
|
267
|
+
if (dashboard.snapshots.length > dashboard.maxSnapshots) {
|
|
268
|
+
dashboard.snapshots.shift();
|
|
269
|
+
}
|
|
270
|
+
// Auto-detect warnings
|
|
271
|
+
if (snapshot.fps < 30) {
|
|
272
|
+
dashboard.warnings.push(`Low FPS: ${snapshot.fps.toFixed(1)} at ${new Date(snapshot.timestamp).toISOString()}`);
|
|
273
|
+
}
|
|
274
|
+
if (snapshot.frameTimeMs > 33) {
|
|
275
|
+
dashboard.warnings.push(`Frame time spike: ${snapshot.frameTimeMs.toFixed(1)}ms`);
|
|
276
|
+
}
|
|
277
|
+
if (snapshot.entityCount > 5000) {
|
|
278
|
+
dashboard.warnings.push(`High entity count: ${snapshot.entityCount}`);
|
|
279
|
+
}
|
|
280
|
+
// Keep last 50 warnings
|
|
281
|
+
if (dashboard.warnings.length > 50) {
|
|
282
|
+
dashboard.warnings.splice(0, dashboard.warnings.length - 50);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/** Get average FPS from last N snapshots */
|
|
286
|
+
function getAverageFPS(dashboard, lastN = 60) {
|
|
287
|
+
const snapshots = dashboard.snapshots;
|
|
288
|
+
const start = Math.max(0, snapshots.length - lastN);
|
|
289
|
+
const slice = snapshots.slice(start);
|
|
290
|
+
if (slice.length === 0)
|
|
291
|
+
return 0;
|
|
292
|
+
let sum = 0;
|
|
293
|
+
for (const s of slice)
|
|
294
|
+
sum += s.fps;
|
|
295
|
+
return sum / slice.length;
|
|
296
|
+
}
|
|
297
|
+
/** Get performance summary */
|
|
298
|
+
function getPerfSummary(dashboard) {
|
|
299
|
+
const snaps = dashboard.snapshots;
|
|
300
|
+
if (snaps.length === 0) {
|
|
301
|
+
return { avgFPS: 0, minFPS: 0, maxFPS: 0, avgFrameTime: 0, peakFrameTime: 0, totalWarnings: 0 };
|
|
302
|
+
}
|
|
303
|
+
let sumFPS = 0;
|
|
304
|
+
let minFPS = Infinity;
|
|
305
|
+
let maxFPS = 0;
|
|
306
|
+
let sumFrameTime = 0;
|
|
307
|
+
let peakFrameTime = 0;
|
|
308
|
+
for (const s of snaps) {
|
|
309
|
+
sumFPS += s.fps;
|
|
310
|
+
sumFrameTime += s.frameTimeMs;
|
|
311
|
+
if (s.fps < minFPS)
|
|
312
|
+
minFPS = s.fps;
|
|
313
|
+
if (s.fps > maxFPS)
|
|
314
|
+
maxFPS = s.fps;
|
|
315
|
+
if (s.frameTimeMs > peakFrameTime)
|
|
316
|
+
peakFrameTime = s.frameTimeMs;
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
avgFPS: sumFPS / snaps.length,
|
|
320
|
+
minFPS,
|
|
321
|
+
maxFPS,
|
|
322
|
+
avgFrameTime: sumFrameTime / snaps.length,
|
|
323
|
+
peakFrameTime,
|
|
324
|
+
totalWarnings: dashboard.warnings.length,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
/** Run a health check on common engine misconfigurations */
|
|
328
|
+
function runHealthCheck(config) {
|
|
329
|
+
const results = [];
|
|
330
|
+
// Canvas size check
|
|
331
|
+
if (config.canvasWidth > 3840 || config.canvasHeight > 2160) {
|
|
332
|
+
results.push({
|
|
333
|
+
category: 'Rendering',
|
|
334
|
+
status: 'warning',
|
|
335
|
+
message: 'Canvas resolution is very high',
|
|
336
|
+
details: `${config.canvasWidth}x${config.canvasHeight} — may cause performance issues on lower-end devices.`,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
results.push({ category: 'Rendering', status: 'ok', message: 'Canvas resolution is reasonable' });
|
|
341
|
+
}
|
|
342
|
+
// Entity count
|
|
343
|
+
if (config.entityCount > 10000) {
|
|
344
|
+
results.push({
|
|
345
|
+
category: 'ECS',
|
|
346
|
+
status: 'error',
|
|
347
|
+
message: 'Very high entity count',
|
|
348
|
+
details: `${config.entityCount} entities. Consider object pooling or culling.`,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
else if (config.entityCount > 5000) {
|
|
352
|
+
results.push({
|
|
353
|
+
category: 'ECS',
|
|
354
|
+
status: 'warning',
|
|
355
|
+
message: 'High entity count',
|
|
356
|
+
details: `${config.entityCount} entities. Monitor FPS closely.`,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
results.push({ category: 'ECS', status: 'ok', message: `${config.entityCount} entities — healthy` });
|
|
361
|
+
}
|
|
362
|
+
// FPS target
|
|
363
|
+
if (config.targetFps > 144) {
|
|
364
|
+
results.push({
|
|
365
|
+
category: 'Performance',
|
|
366
|
+
status: 'warning',
|
|
367
|
+
message: 'Target FPS is unusually high',
|
|
368
|
+
details: `${config.targetFps} FPS target. Most displays are 60-144Hz.`,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
results.push({ category: 'Performance', status: 'ok', message: `Target FPS: ${config.targetFps}` });
|
|
373
|
+
}
|
|
374
|
+
// Physics timestep
|
|
375
|
+
if (config.physicsTimestep < 1 / 120) {
|
|
376
|
+
results.push({
|
|
377
|
+
category: 'Physics',
|
|
378
|
+
status: 'warning',
|
|
379
|
+
message: 'Physics timestep is very small',
|
|
380
|
+
details: `${config.physicsTimestep.toFixed(6)}s — will use more CPU. Standard is 1/60.`,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
results.push({ category: 'Physics', status: 'ok', message: 'Physics timestep is standard' });
|
|
385
|
+
}
|
|
386
|
+
// Systems
|
|
387
|
+
if (config.systemCount === 0) {
|
|
388
|
+
results.push({
|
|
389
|
+
category: 'ECS',
|
|
390
|
+
status: 'warning',
|
|
391
|
+
message: 'No systems registered',
|
|
392
|
+
details: 'Add systems to process game logic.',
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
results.push({ category: 'ECS', status: 'ok', message: `${config.systemCount} systems registered` });
|
|
397
|
+
}
|
|
398
|
+
// Texture
|
|
399
|
+
if (config.maxTextureDimension > 4096) {
|
|
400
|
+
results.push({
|
|
401
|
+
category: 'Assets',
|
|
402
|
+
status: 'warning',
|
|
403
|
+
message: 'Large textures detected',
|
|
404
|
+
details: `Max dimension: ${config.maxTextureDimension}px. Consider texture atlasing.`,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
results.push({ category: 'Assets', status: 'ok', message: 'Texture sizes are reasonable' });
|
|
409
|
+
}
|
|
410
|
+
return results;
|
|
411
|
+
}
|
|
412
|
+
const DEFAULT_DEBUG_OVERLAY = {
|
|
413
|
+
showFPS: true,
|
|
414
|
+
showEntityCount: true,
|
|
415
|
+
showDrawCalls: false,
|
|
416
|
+
showPhysicsDebug: false,
|
|
417
|
+
showGrid: false,
|
|
418
|
+
gridSize: 32,
|
|
419
|
+
showBoundingBoxes: false,
|
|
420
|
+
showOrigins: false,
|
|
421
|
+
position: 'top-left',
|
|
422
|
+
opacity: 0.85,
|
|
423
|
+
};
|
|
424
|
+
/** Render a debug text overlay onto a canvas context */
|
|
425
|
+
function renderDebugOverlay(ctx, config, stats, canvasSize) {
|
|
426
|
+
const lines = [];
|
|
427
|
+
if (config.showFPS)
|
|
428
|
+
lines.push(`FPS: ${stats.fps.toFixed(0)} (${stats.frameTimeMs.toFixed(1)}ms)`);
|
|
429
|
+
if (config.showEntityCount)
|
|
430
|
+
lines.push(`Entities: ${stats.entityCount}`);
|
|
431
|
+
if (config.showDrawCalls)
|
|
432
|
+
lines.push(`Draw Calls: ${stats.drawCalls}`);
|
|
433
|
+
if (lines.length === 0)
|
|
434
|
+
return;
|
|
435
|
+
const lineHeight = 16;
|
|
436
|
+
const padding = 6;
|
|
437
|
+
const width = 180;
|
|
438
|
+
const height = lines.length * lineHeight + padding * 2;
|
|
439
|
+
// Position
|
|
440
|
+
let x = padding;
|
|
441
|
+
let y = padding;
|
|
442
|
+
if (config.position === 'top-right')
|
|
443
|
+
x = canvasSize.x - width - padding;
|
|
444
|
+
if (config.position === 'bottom-left')
|
|
445
|
+
y = canvasSize.y - height - padding;
|
|
446
|
+
if (config.position === 'bottom-right') {
|
|
447
|
+
x = canvasSize.x - width - padding;
|
|
448
|
+
y = canvasSize.y - height - padding;
|
|
449
|
+
}
|
|
450
|
+
// Background
|
|
451
|
+
ctx.save();
|
|
452
|
+
ctx.globalAlpha = config.opacity;
|
|
453
|
+
ctx.fillStyle = '#000';
|
|
454
|
+
ctx.fillRect(x, y, width, height);
|
|
455
|
+
ctx.globalAlpha = 1;
|
|
456
|
+
// Text
|
|
457
|
+
ctx.fillStyle = stats.fps < 30 ? '#ff4444' : stats.fps < 55 ? '#ffaa00' : '#44ff44';
|
|
458
|
+
ctx.font = '12px monospace';
|
|
459
|
+
ctx.textBaseline = 'top';
|
|
460
|
+
for (let i = 0; i < lines.length; i++) {
|
|
461
|
+
ctx.fillText(lines[i], x + padding, y + padding + i * lineHeight);
|
|
462
|
+
}
|
|
463
|
+
ctx.restore();
|
|
464
|
+
}
|
|
465
|
+
const QUICK_START_TEMPLATES = [
|
|
466
|
+
{
|
|
467
|
+
id: 'empty-project',
|
|
468
|
+
name: 'Empty Project',
|
|
469
|
+
description: 'A blank canvas to start from scratch',
|
|
470
|
+
category: 'prototype',
|
|
471
|
+
difficulty: 'beginner',
|
|
472
|
+
tags: ['empty', 'starter'],
|
|
473
|
+
code: `const engine = new NiceGameEngine({
|
|
474
|
+
canvas: document.getElementById("game") as HTMLCanvasElement,
|
|
475
|
+
settings: { width: 800, height: 600, targetFps: 60 },
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
engine.start();`,
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
id: 'hello-world',
|
|
482
|
+
name: 'Hello World',
|
|
483
|
+
description: 'A rotating square to verify everything works',
|
|
484
|
+
category: 'demo',
|
|
485
|
+
difficulty: 'beginner',
|
|
486
|
+
tags: ['hello', 'demo', 'beginner'],
|
|
487
|
+
code: `const engine = new NiceGameEngine({
|
|
488
|
+
canvas: document.getElementById("game") as HTMLCanvasElement,
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
const entity = engine.world.createEntity("Square");
|
|
492
|
+
engine.world.addComponent(entity, "Transform", { x: 400, y: 300 });
|
|
493
|
+
engine.world.addComponent(entity, "Sprite", {
|
|
494
|
+
shape: "rect", width: 50, height: 50, color: "#00ff88",
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
// Rotate every frame
|
|
498
|
+
engine.events.on("engine:update", () => {
|
|
499
|
+
const t = engine.world.getComponent(entity, "Transform");
|
|
500
|
+
t.rotation += 2;
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
engine.start();`,
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
id: 'platformer-starter',
|
|
507
|
+
name: 'Platformer Starter',
|
|
508
|
+
description: 'A basic platformer with player, ground, and gravity',
|
|
509
|
+
category: 'game',
|
|
510
|
+
difficulty: 'intermediate',
|
|
511
|
+
tags: ['platformer', 'physics', '2d'],
|
|
512
|
+
code: `const engine = new NiceGameEngine({
|
|
513
|
+
canvas: document.getElementById("game") as HTMLCanvasElement,
|
|
514
|
+
settings: {
|
|
515
|
+
width: 800, height: 600, targetFps: 60,
|
|
516
|
+
physics: { gravity: { x: 0, y: 980 } },
|
|
517
|
+
},
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
// Player
|
|
521
|
+
const player = engine.world.createEntity("Player");
|
|
522
|
+
engine.world.addComponent(player, "Transform", { x: 400, y: 400 });
|
|
523
|
+
engine.world.addComponent(player, "Sprite", {
|
|
524
|
+
shape: "rect", width: 32, height: 48, color: "#4488ff",
|
|
525
|
+
});
|
|
526
|
+
engine.world.addComponent(player, "RigidBody2D", { type: "dynamic" });
|
|
527
|
+
engine.world.addComponent(player, "Collider2D", {
|
|
528
|
+
shape: "box", width: 32, height: 48,
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
// Ground
|
|
532
|
+
const ground = engine.world.createEntity("Ground");
|
|
533
|
+
engine.world.addComponent(ground, "Transform", { x: 400, y: 580 });
|
|
534
|
+
engine.world.addComponent(ground, "Sprite", {
|
|
535
|
+
shape: "rect", width: 800, height: 40, color: "#44aa44",
|
|
536
|
+
});
|
|
537
|
+
engine.world.addComponent(ground, "RigidBody2D", { type: "static" });
|
|
538
|
+
engine.world.addComponent(ground, "Collider2D", {
|
|
539
|
+
shape: "box", width: 800, height: 40,
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
engine.start();`,
|
|
543
|
+
},
|
|
544
|
+
];
|
|
545
|
+
|
|
546
|
+
export { API_HINTS, DEFAULT_DEBUG_OVERLAY, QUICK_START_TEMPLATES, createPerfDashboard, formatEngineError, getAverageFPS, getEngineError, getPerfSummary, recordPerfSnapshot, renderDebugOverlay, runHealthCheck, searchAPIHints, throwEngineError, warnEngine };
|
|
547
|
+
//# sourceMappingURL=DeveloperExperience.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeveloperExperience.js","sources":["../../../src/devtools/DeveloperExperience.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|