@woosh/meep-engine 2.165.0 → 2.165.2

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 (205) hide show
  1. package/README.md +137 -108
  2. package/build/bundle-worker-image-decoder.js +1 -1
  3. package/package.json +1 -1
  4. package/samples/generation/SampleGenerator0.js +3 -3
  5. package/samples/generation/filters/SampleGroundMoistureFilter.js +63 -56
  6. package/samples/generation/filters/SampleNoise20_0.js +6 -1
  7. package/samples/generation/themes/SampleTheme0.js +47 -47
  8. package/src/core/color/YCoCg/rgb_to_ycocg.d.ts +17 -0
  9. package/src/core/color/YCoCg/rgb_to_ycocg.d.ts.map +1 -0
  10. package/src/core/color/YCoCg/rgb_to_ycocg.js +20 -0
  11. package/src/core/color/YCoCg/ycocg_to_rgb.d.ts +14 -0
  12. package/src/core/color/YCoCg/ycocg_to_rgb.d.ts.map +1 -0
  13. package/src/core/color/YCoCg/ycocg_to_rgb.js +17 -0
  14. package/src/engine/REVIEW_2026_07_03.md +211 -0
  15. package/src/engine/animation/curve/actionProcessorOperations/curveActions.d.ts.map +1 -1
  16. package/src/engine/animation/curve/actionProcessorOperations/curveActions.js +3 -2
  17. package/src/engine/animation/curve/compression/sample_animation_curve_to_float_array.js +1 -1
  18. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  19. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +3 -1
  20. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +2 -2
  21. package/src/engine/asset/preloader/AssetPreloader.d.ts.map +1 -1
  22. package/src/engine/asset/preloader/AssetPreloader.js +6 -0
  23. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  24. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +5 -2
  25. package/src/engine/ecs/Entity.js +1 -1
  26. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  27. package/src/engine/ecs/EntityComponentDataset.js +1 -0
  28. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  29. package/src/engine/ecs/EntityManager.js +12 -8
  30. package/src/engine/ecs/EntityObserver.js +1 -1
  31. package/src/engine/ecs/System.d.ts.map +1 -1
  32. package/src/engine/ecs/System.js +4 -0
  33. package/src/engine/ecs/animation/AnimationClip.js +1 -1
  34. package/src/engine/ecs/attachment/AttachmentSystem.js +2 -2
  35. package/src/engine/ecs/attachment/TransformAttachmentBinding.d.ts.map +1 -1
  36. package/src/engine/ecs/attachment/TransformAttachmentBinding.js +11 -0
  37. package/src/engine/ecs/fow/FogOfWar.js +2 -2
  38. package/src/engine/ecs/fow/shader/screenSpaceFogOfWarShader.d.ts.map +1 -1
  39. package/src/engine/ecs/fow/shader/screenSpaceFogOfWarShader.js +27 -9
  40. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +1 -1
  41. package/src/engine/ecs/gui/position/ViewportPosition.d.ts +3 -1
  42. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  43. package/src/engine/ecs/gui/position/ViewportPosition.js +4 -1
  44. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts +10 -0
  45. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  46. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +43 -0
  47. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts +93 -0
  48. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -0
  49. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +315 -0
  50. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.d.ts +48 -0
  51. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.d.ts.map +1 -0
  52. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.js +331 -0
  53. package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +199 -0
  54. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.d.ts +53 -0
  55. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.d.ts.map +1 -0
  56. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.js +57 -0
  57. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.d.ts +53 -0
  58. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.d.ts.map +1 -0
  59. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.js +56 -0
  60. package/src/engine/ecs/storage/binary/object-v2/README.md +110 -0
  61. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.d.ts +13 -0
  62. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.d.ts.map +1 -0
  63. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.js +48 -0
  64. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +29 -0
  65. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +1 -0
  66. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +44 -0
  67. package/src/engine/ecs/system_validate_class.d.ts.map +1 -1
  68. package/src/engine/ecs/system_validate_class.js +9 -2
  69. package/src/engine/graphics/camera/makeScreenScissorFrustum.d.ts.map +1 -1
  70. package/src/engine/graphics/camera/makeScreenScissorFrustum.js +11 -10
  71. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.d.ts.map +1 -1
  72. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.js +3 -1
  73. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.d.ts +1 -1
  74. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.d.ts.map +1 -1
  75. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.js +2 -2
  76. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/writeAnimationGraphDefinitionToJSON.d.ts.map +1 -1
  77. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/writeAnimationGraphDefinitionToJSON.js +2 -0
  78. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  79. package/src/engine/graphics/ecs/camera/Camera.js +4 -0
  80. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  81. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -2
  82. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +1 -1
  83. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  84. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -1
  85. package/src/engine/graphics/ecs/light/binding/LightBinding.js +2 -2
  86. package/src/engine/graphics/ecs/mesh/MeshSystem.js +1 -1
  87. package/src/engine/graphics/ecs/mesh/SkeletonUtils.js +1 -1
  88. package/src/engine/graphics/ecs/mesh-v2/sg_hierarchy_compute_bounding_box_via_parent_entity.js +1 -1
  89. package/src/engine/graphics/ecs/water/WaterSystem.d.ts +6 -0
  90. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  91. package/src/engine/graphics/ecs/water/WaterSystem.js +12 -1
  92. package/src/engine/graphics/geometry/buffered/ensureGeometryBoundingSphere.js +1 -1
  93. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  94. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +0 -15
  95. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +10 -10
  96. package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +1 -1
  97. package/src/engine/graphics/material/SplatMaterial.js +1 -1
  98. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  99. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +3 -2
  100. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +1 -1
  101. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts.map +1 -1
  102. package/src/engine/graphics/particles/particular/group/ParticleGroup.js +3 -2
  103. package/src/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  104. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts +1 -8
  105. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  106. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +2 -14
  107. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.d.ts +9 -0
  108. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.d.ts.map +1 -0
  109. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.js +14 -0
  110. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts.map +1 -1
  111. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.js +4 -1
  112. package/src/engine/graphics/sh3/lpg/LightProbeGrid.d.ts +69 -0
  113. package/src/engine/graphics/sh3/lpg/LightProbeGrid.d.ts.map +1 -0
  114. package/src/engine/graphics/sh3/lpg/LightProbeGrid.js +173 -0
  115. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.d.ts +24 -0
  116. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.d.ts.map +1 -0
  117. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.js +88 -0
  118. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.d.ts +20 -0
  119. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.d.ts.map +1 -0
  120. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.js +79 -0
  121. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.d.ts +11 -0
  122. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.d.ts.map +1 -0
  123. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.js +84 -0
  124. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.d.ts +29 -0
  125. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.d.ts.map +1 -0
  126. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.js +160 -0
  127. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.d.ts +23 -0
  128. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.d.ts.map +1 -0
  129. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.js +228 -0
  130. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts +2 -0
  131. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -0
  132. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +24 -0
  133. package/src/engine/graphics/sh3/lpg/material/common.d.ts +3 -0
  134. package/src/engine/graphics/sh3/lpg/material/common.d.ts.map +1 -0
  135. package/src/engine/graphics/sh3/lpg/material/common.js +73 -0
  136. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts +6 -0
  137. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  138. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +42 -0
  139. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts +6 -0
  140. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  141. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +49 -0
  142. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  143. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  144. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.js +12 -0
  145. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts +6 -0
  146. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  147. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +30 -0
  148. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts +6 -0
  149. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  150. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +41 -0
  151. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.d.ts +3 -0
  152. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.d.ts.map +1 -0
  153. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.js +15 -0
  154. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.d.ts +3 -0
  155. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.d.ts.map +1 -0
  156. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.js +9 -0
  157. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  158. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  159. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.js +12 -0
  160. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.d.ts +20 -0
  161. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.d.ts.map +1 -0
  162. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.js +59 -0
  163. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -1
  164. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +8 -0
  165. package/src/engine/graphics/sh3/prototypeLightProbeGrid.d.ts +2 -0
  166. package/src/engine/graphics/sh3/prototypeLightProbeGrid.d.ts.map +1 -0
  167. package/src/engine/graphics/sh3/prototypeLightProbeGrid.js +170 -0
  168. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.js +1 -1
  169. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +1 -1
  170. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.js +1 -1
  171. package/src/engine/graphics/texture/sampler/sampler2d_copy_with_margins.js +3 -3
  172. package/src/engine/graphics/util/build_max_height_pyramid.d.ts.map +1 -1
  173. package/src/engine/graphics/util/build_max_height_pyramid.js +5 -2
  174. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +1 -1
  175. package/src/engine/input/ecs/components/InputBinding.d.ts +7 -1
  176. package/src/engine/input/ecs/components/InputBinding.d.ts.map +1 -1
  177. package/src/engine/input/ecs/components/InputBinding.js +8 -1
  178. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  179. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.d.ts +2 -1
  180. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.d.ts.map +1 -1
  181. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.js +6 -2
  182. package/src/engine/intelligence/behavior/selector/WeightedElement.js +1 -1
  183. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  184. package/src/engine/knowledge/database/StaticKnowledgeDatabase.js +2 -4
  185. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts +1 -2
  186. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts.map +1 -1
  187. package/src/engine/logging/elastic/ElasticSearchLogger.js +14 -10
  188. package/src/engine/navigation/ecs/path_following/PathFollower.js +1 -1
  189. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
  190. package/src/engine/navigation/grid/find_path_on_grid_astar.js +5 -2
  191. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +1 -1
  192. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  193. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +17 -0
  194. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  195. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  196. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  197. package/src/engine/scene/SceneManager.js +4 -2
  198. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  199. package/src/engine/simulation/Ticker.js +9 -0
  200. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  201. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +6 -1
  202. package/src/engine/sound/material/concrete/json/serializeSoundMaterialToJSON.js +1 -1
  203. package/src/generation/theme/ThemeEngine.d.ts +9 -0
  204. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  205. package/src/generation/theme/ThemeEngine.js +37 -2
package/README.md CHANGED
@@ -1,108 +1,137 @@
1
- # Meep Engine
2
- **The unopinionated, high-performance ECS engine for code-first developers.**
3
-
4
- Meep is a battle-tested JavaScript game engine designed for scale. Built over 10+ years and used in commercial Steam releases, it strips away the bloat of traditional engines to offer a molecular, zero-allocation architecture.
5
-
6
- It is designed for engineers who want full control, offering performance that rivals native code on the web.
7
-
8
- [🕹️Examples](https://meep.company-named.com/examples/) | [📚 Documentation](https://meep.company-named.com/docs/getting-started/) | [🚀 Quick Start Template](http://gitlab.company-named.com/travnik/dream-engine-template)
9
-
10
- ---
11
-
12
- ## Why Meep?
13
- Most web engines are heavy, opinionated, and struggle with garbage collection. Meep is different.
14
-
15
- * **Pure ECS Architecture:** A true data-oriented foundation that supports complex hierarchies and millions of entities. Unlike hybrid engines, our component queries are instantaneous.
16
- * **Molecular Modularity:** Distributed as ~3,000 fine-grained modules. Need a lerp function? Import it for a 4-line footprint. You never pay for code you don't use.
17
- * **Zero-Garbage Architecture:** Custom memory management ensures stable frame rates. Meep handles millions of objects on low-spec mobile hardware without GC spikes.
18
- * **Code-First:** No GUI. No black boxes. Meep is a programmatic tool designed for software engineers who value architecture and long-term integration.
19
- * **Battle-Hardened:** Covered by 6,500+ unit tests and extensive assertions. This is not a prototype; it is industrial-grade software.
20
-
21
- ---
22
-
23
- ## 💎 Architecture: Pure ECS
24
- Meep is not yet another Object-Oriented engine with an ECS tacked on; it is a **Pure Entity Component System** engine.
25
-
26
- While other engines (like Unity) struggle with slow query times and documentation that advises you to use component lookups "sparingly" — Meep thrives on them.
27
-
28
- * **Strict Data-Oriented Design:** One component instance per type per entity. This guarantees memory layout optimization and cache locality.
29
- * **The Hierarchy Problem: Solved.** Pure ECS architectures historically struggle with scene graphs and parent-child transforms. Meep solves this natively. You get the composability of a scene graph with the raw speed of a flat array. (Similar to the Rust-based Bevy engine).
30
- * **Tiered API Access:**
31
- * **High-Level:** Use convenient abstraction layers for gameplay logic.
32
- * **Low-Level:** Drop down to raw typed arrays for performance-critical paths.
33
- * **Uncompromised Speed:** Because the architecture is solid, you can query, filter, and iterate over millions of entities without performance cliffs.
34
-
35
- ---
36
-
37
- ## ⚡ High-Performance Rendering
38
- Meep implements a Clustered Forward+ rendering pipeline, allowing for scenes that traditional web engines choke on.
39
-
40
- * **Unlimited Lighting:** Render thousands of point lights (muzzle flashes, explosions, torches) with clustered lighting.
41
-
42
- * **GPU-Driven Decals:** Handle 1,000,000+ decals for persistent battle damage and environmental details.
43
-
44
- * **Massive Terrain:** Chunk-based, auto-culled terrain system supporting up to 256 layers (vs Unity's 4).
45
-
46
- * **"Particular" Particle Engine:** A zero-allocation particle system with full lighting, soft particles, and automatic atlassing. Compiled into just 4 shaders to eliminate state-switching overhead.
47
-
48
- * **Path Tracing:** Includes a pure JS path tracer utilizing the engine's internal BVH.
49
-
50
- ## 🧠 AI & Simulation Tools
51
- Meep provides a suite of tools rarely found in JS engines, optimized for complex decision making.
52
-
53
- * **Behavior Trees & Blackboards:** Industry-standard tools for state management.
54
-
55
- * **Monte-Carlo Tree Search:** The same algorithm used in AlphaGo, available for your decision logic.
56
-
57
- * **Resource Allocation Solver:** Plan optimal actions based on limited resources (ammo, health, currency).
58
-
59
- * **Spatial Query System:** Highly optimized BVH for Ray, Box, Frustum, and Point queries.
60
-
61
- * **Inverse Kinematics:** Includes FABRIK solvers and specialized bip/quadruped solvers for uneven terrain adaptation.
62
-
63
- ## 🛠️ Developer Experience
64
-
65
- ### Installation & Stripping
66
-
67
- Meep is designed to be invisible in production.
68
- ```shell
69
- npm install @woosh/meep-engine
70
- ```
71
-
72
- **Development Mode:** The engine includes ~4,000 assertions to help you catch errors instantly.
73
-
74
- **Production Mode:** Using @rollup/plugin-strip, Meep compiles to tiny size and runs at the speed of light.
75
-
76
- ```js
77
- // vite.config.js
78
- import strip from '@rollup/plugin-strip';
79
- export default defineConfig({
80
- plugins: [{ ...strip(), apply: 'build' }]
81
- });
82
- ```
83
-
84
- ### Reliability
85
- * **Tests:** 7,554 tests with 90%+ core coverage.
86
-
87
- * **Stability:** Exhaustively tested corner cases over a decade of development.
88
-
89
- ---
90
-
91
- ## Additional Features
92
-
93
- | Category | Features |
94
- |------------------|-----------------------------------------------------------------------------------------------------------------------|
95
- | Audio | Custom culling and attenuation; supports 1,000s of positional sources with zero overhead |
96
- | Input | Unified abstraction for Touch, Mouse, and Keyboard. Event-driven and Query-based APIs |
97
- | Assets | Web-first asset streaming. The engine runs before assets even load |
98
- | Serialization | Binary serialization system with version upgrading |
99
- | UI | High-speed, zero-garbage UI system. Optional—can be replaced with React/Vue if desired |
100
- | Color Management | Scientific-grade color management toolkit, including spectral-integration tools and modern color spaces such as OKLab |
101
- | NodeGraph | A building block for node-graph systems, such as shader editors and workflow engines |
102
- | Achievements | State-of-the-art achievement system, using expressions and blackboards |
103
- | Inverse Kinematics (IK) | Highly optimized FABRIK inverse kinematics solver even the most complex IK use cases |
104
-
105
- ---
106
-
107
- ## License & Copyright
108
- Copyright © 2026 Company Named Limited, All Rights Reserved.
1
+ # Meep Engine
2
+ **The unopinionated, high-performance ECS engine for code-first developers.**
3
+
4
+ Meep is a battle-tested JavaScript game engine designed for scale. Built over 10+ years and used in commercial Steam releases, it strips away the bloat of traditional engines to offer a molecular, zero-allocation architecture.
5
+
6
+ It is designed for engineers who want full control, offering performance that rivals native code on the web.
7
+
8
+ [🕹️Examples](https://meep.company-named.com/examples/) | [📚 Documentation](https://meep.company-named.com/docs/getting-started/) | [🚀 Quick Start Template](http://gitlab.company-named.com/travnik/dream-engine-template)
9
+
10
+ ---
11
+
12
+ ## Why Meep?
13
+ Most web engines are heavy, opinionated, and struggle with garbage collection. Meep is different.
14
+
15
+ * **Pure ECS Architecture:** A true data-oriented foundation that supports complex hierarchies and millions of entities. Unlike hybrid engines, our component queries are instantaneous.
16
+ * **Molecular Modularity:** Distributed as ~3,700 fine-grained modules. Need a lerp function? Import it for a 4-line footprint. You never pay for code you don't use.
17
+ * **Zero-Garbage Architecture:** Custom memory management ensures stable frame rates. Meep handles millions of objects on low-spec mobile hardware without GC spikes.
18
+ * **Code-First:** No GUI. No black boxes. Meep is a programmatic tool designed for software engineers who value architecture and long-term integration.
19
+ * **Battle-Hardened:** Covered by 8,000+ unit tests and extensive assertions. This is not a prototype; it is industrial-grade software.
20
+
21
+ ---
22
+
23
+ ## 💎 Architecture: Pure ECS
24
+ Meep is not yet another Object-Oriented engine with an ECS tacked on; it is a **Pure Entity Component System** engine.
25
+
26
+ While other engines (like Unity) struggle with slow query times and documentation that advises you to use component lookups "sparingly" — Meep thrives on them.
27
+
28
+ * **Strict Data-Oriented Design:** One component instance per type per entity. This guarantees memory layout optimization and cache locality.
29
+ * **The Hierarchy Problem: Solved.** Pure ECS architectures historically struggle with scene graphs and parent-child transforms. Meep solves this natively. You get the composability of a scene graph with the raw speed of a flat array. (Similar to the Rust-based Bevy engine).
30
+ * **Tiered API Access:**
31
+ * **High-Level:** Use convenient abstraction layers for gameplay logic.
32
+ * **Low-Level:** Drop down to raw typed arrays for performance-critical paths.
33
+ * **Uncompromised Speed:** Because the architecture is solid, you can query, filter, and iterate over millions of entities without performance cliffs.
34
+
35
+ ---
36
+
37
+ ## ⚡ High-Performance Rendering
38
+ Meep implements a Clustered Forward+ rendering pipeline, allowing for scenes that traditional web engines choke on.
39
+
40
+ * **Unlimited Lighting:** Render thousands of point lights (muzzle flashes, explosions, torches) with clustered lighting.
41
+
42
+ * **GPU-Driven Decals:** Handle 1,000,000+ decals for persistent battle damage and environmental details.
43
+
44
+ * **Massive Terrain:** Chunk-based, auto-culled terrain system supporting up to 256 layers (vs Unity's 4).
45
+
46
+ * **"Particular" Particle Engine:** A zero-allocation particle system with full lighting, soft particles, and automatic atlassing. Compiled into just 4 shaders to eliminate state-switching overhead.
47
+
48
+ * **Path Tracing:** Includes a pure JS path tracer utilizing the engine's internal BVH.
49
+
50
+ ## ⚙️ Physics
51
+ A deterministic rigid-body engine in pure JS no WASM, no worker threads — built for replay-stable netcode and scenes with millions of mostly-sleeping bodies.
52
+
53
+ * **Rigid Bodies at Scale:** SoA body pool, two-tree BVH broadphase, sequential-impulse solver with warm starting, and island-based atomic sleep/wake.
54
+
55
+ * **Broad Shape Coverage:** Closed-form sphere/box/capsule paths, GJK+EPA for arbitrary convex shapes, heightmap and triangle-mesh terrain collisions, and continuous collision detection for fast movers.
56
+
57
+ * **Fluid Dynamics:** Eulerian MAC-grid solver (MacCormack advection, vorticity confinement, SOR/PCG pressure) plus an MLS-MPM material-point simulator.
58
+
59
+ * **Vehicles & Characters:** Raycast vehicle and a kinematic first-person character controller with stair and ramp handling.
60
+
61
+ * **Inverse Kinematics:** Highly optimized FABRIK and analytic two-joint solvers.
62
+
63
+ ## 🔊 Audio
64
+ A data-driven sound engine built on Wwise / FMOD concepts — without the opaque middleware banks.
65
+
66
+ * **Full Middleware Feature Set:** Events, a mixer bus tree, RTPC parameters, voice stealing, mixer snapshots, and ducking — all authored as serializable engine data.
67
+
68
+ * **Acoustic Simulation (opt-in):** Geometry-driven occlusion, transmission, propagation pathing, and baked reverb probes. What Steam Audio is to FMOD/Wwise, this layer is to the sound engine.
69
+
70
+ * **Scale:** Custom culling and attenuation support 1,000s of positional sources with zero overhead.
71
+
72
+ ## 🌐 Networking
73
+ A game-ready netcode stack, from raw transport to rollback.
74
+
75
+ * **Server-Authoritative Rollback:** Client-side prediction and reconciliation over action-log replication and binary snapshots.
76
+
77
+ * **Pluggable Transports:** WebRTC DataChannel, WebTransport, WebSocket, and Node UDP — with ack-based reliability, MTU fragmentation, and per-peer scope filtering.
78
+
79
+ * **Diagnostics Built In:** Bandwidth metering, packet record/replay, and cross-peer desync detection.
80
+
81
+ ## 🧠 AI & Simulation Tools
82
+ Meep provides a suite of tools rarely found in JS engines, optimized for complex decision making.
83
+
84
+ * **Behavior Trees & Blackboards:** Industry-standard tools for state management.
85
+
86
+ * **Monte-Carlo Tree Search:** The same algorithm used in AlphaGo, available for your decision logic.
87
+
88
+ * **Resource Allocation Solver:** Plan optimal actions based on limited resources (ammo, health, currency).
89
+
90
+ * **Spatial Query System:** Highly optimized BVH for Ray, Box, Frustum, and Point queries.
91
+
92
+ * **Pathfinding:** A* grid search and a navigation mesh with agents and runtime obstacle carving.
93
+
94
+ ## 🛠️ Developer Experience
95
+
96
+ ### Installation & Stripping
97
+
98
+ Meep is designed to be invisible in production.
99
+ ```shell
100
+ npm install @woosh/meep-engine
101
+ ```
102
+
103
+ **Development Mode:** The engine includes ~5,000 assertions to help you catch errors instantly.
104
+
105
+ **Production Mode:** Using @rollup/plugin-strip, Meep compiles to tiny size and runs at the speed of light.
106
+
107
+ ```js
108
+ // vite.config.js
109
+ import strip from '@rollup/plugin-strip';
110
+ export default defineConfig({
111
+ plugins: [{ ...strip(), apply: 'build' }]
112
+ });
113
+ ```
114
+
115
+ ### Reliability
116
+ * **Tests:** 8,000+ tests across 1,400+ suites, including determinism, benchmark, and adversarial suites.
117
+
118
+ * **Stability:** Exhaustively tested corner cases over a decade of development.
119
+
120
+ ---
121
+
122
+ ## Additional Features
123
+
124
+ | Category | Features |
125
+ |------------------|-----------------------------------------------------------------------------------------------------------------------|
126
+ | Input | Unified abstraction for Touch, Mouse, Keyboard, and Gamepad. Event-driven and Query-based APIs |
127
+ | Assets | Web-first asset streaming. The engine runs before assets even load |
128
+ | Serialization | Binary serialization system with version upgrading |
129
+ | UI | High-speed, zero-garbage UI system. Optional—can be replaced with React/Vue if desired |
130
+ | Color Management | Scientific-grade color management toolkit, including spectral-integration tools and modern color spaces such as OKLab |
131
+ | NodeGraph | A building block for node-graph systems, such as shader editors and workflow engines |
132
+ | Achievements | State-of-the-art achievement system, using expressions and blackboards |
133
+
134
+ ---
135
+
136
+ ## License & Copyright
137
+ Copyright © 2026 Company Named Limited, All Rights Reserved.