murow 0.0.60 → 0.0.71

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 (425) hide show
  1. package/README.md +52 -37
  2. package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
  3. package/dist/cjs/core/binary-codec/index.js +1 -0
  4. package/dist/cjs/core/driver/driver.js +1 -0
  5. package/dist/cjs/core/driver/drivers/immediate.js +1 -0
  6. package/dist/cjs/core/driver/drivers/index.js +1 -0
  7. package/dist/cjs/core/driver/drivers/raf.js +1 -0
  8. package/dist/cjs/core/driver/drivers/timeout.js +1 -0
  9. package/dist/cjs/core/driver/index.js +1 -0
  10. package/dist/cjs/core/events/event-system.js +1 -0
  11. package/dist/cjs/core/events/index.js +1 -0
  12. package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
  13. package/dist/cjs/core/fixed-ticker/index.js +1 -0
  14. package/dist/cjs/core/free-list/free-list.js +1 -0
  15. package/dist/cjs/core/free-list/index.js +1 -0
  16. package/dist/cjs/core/generate-id/generate-id.js +1 -0
  17. package/dist/cjs/core/generate-id/index.js +1 -0
  18. package/dist/cjs/core/index.js +1 -0
  19. package/dist/cjs/core/input/index.js +1 -0
  20. package/dist/cjs/core/input/manager.js +1 -0
  21. package/dist/cjs/core/input/sources/browser.js +1 -0
  22. package/dist/cjs/core/input/sources/index.js +1 -0
  23. package/dist/cjs/core/input/types.js +1 -0
  24. package/dist/cjs/core/lerp/index.js +1 -0
  25. package/dist/cjs/core/lerp/lerp.js +1 -0
  26. package/dist/cjs/core/navmesh/index.js +1 -0
  27. package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
  28. package/dist/cjs/core/navmesh/navmesh.js +1 -0
  29. package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
  30. package/dist/cjs/core/pooled-codec/index.js +1 -0
  31. package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
  32. package/dist/cjs/core/prediction/index.js +1 -0
  33. package/dist/cjs/core/prediction/prediction.js +1 -0
  34. package/dist/cjs/core/ray/index.js +1 -0
  35. package/dist/cjs/core/ray/ray-2d.js +1 -0
  36. package/dist/cjs/core/ray/ray-3d.js +1 -0
  37. package/dist/cjs/core/simple-rng/index.js +1 -0
  38. package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
  39. package/dist/cjs/core/sparse-batcher/index.js +1 -0
  40. package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
  41. package/dist/cjs/ecs/component-store.js +1 -0
  42. package/dist/cjs/ecs/component.js +1 -0
  43. package/dist/cjs/ecs/entity-handle.js +1 -0
  44. package/dist/cjs/ecs/index.js +1 -0
  45. package/dist/cjs/ecs/system-builder.js +1 -0
  46. package/dist/cjs/ecs/world-systems.js +1 -0
  47. package/dist/cjs/ecs/world.js +1 -0
  48. package/dist/cjs/game/index.js +1 -0
  49. package/dist/cjs/game/loop/index.js +1 -0
  50. package/dist/cjs/game/loop/loop.js +1 -0
  51. package/dist/cjs/index.js +1 -0
  52. package/dist/cjs/net/adapters/browser-websocket.js +1 -0
  53. package/dist/cjs/net/adapters/bun-websocket.js +1 -0
  54. package/dist/cjs/net/buffer-pool.js +1 -0
  55. package/dist/cjs/net/client.js +1 -0
  56. package/dist/cjs/net/index.js +1 -0
  57. package/dist/cjs/net/server.js +1 -0
  58. package/dist/cjs/net/types.js +1 -0
  59. package/dist/cjs/net/validators.js +1 -0
  60. package/dist/cjs/protocol/index.js +1 -0
  61. package/dist/cjs/protocol/intent/define-intent.js +1 -0
  62. package/dist/cjs/protocol/intent/index.js +1 -0
  63. package/dist/cjs/protocol/intent/intent-registry.js +1 -0
  64. package/dist/cjs/protocol/intent/intent.js +1 -0
  65. package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
  66. package/dist/cjs/protocol/rpc/index.js +1 -0
  67. package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
  68. package/dist/cjs/protocol/rpc/rpc.js +1 -0
  69. package/dist/cjs/protocol/snapshot/index.js +1 -0
  70. package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
  71. package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
  72. package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
  73. package/dist/cjs/renderer/base-2d-renderer.js +1 -0
  74. package/dist/cjs/renderer/base-3d-renderer.js +1 -0
  75. package/dist/cjs/renderer/base-renderer.js +1 -0
  76. package/dist/cjs/renderer/index.js +1 -0
  77. package/dist/cjs/renderer/types.js +1 -0
  78. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  79. package/dist/esm/core/binary-codec/index.js +1 -0
  80. package/dist/esm/core/driver/driver.js +1 -0
  81. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  82. package/dist/esm/core/driver/drivers/index.js +1 -0
  83. package/dist/esm/core/driver/drivers/raf.js +1 -0
  84. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  85. package/dist/esm/core/driver/index.js +1 -0
  86. package/dist/esm/core/events/event-system.js +1 -0
  87. package/dist/esm/core/events/index.js +1 -0
  88. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  89. package/dist/esm/core/fixed-ticker/index.js +1 -0
  90. package/dist/esm/core/free-list/free-list.js +1 -0
  91. package/dist/esm/core/free-list/index.js +1 -0
  92. package/dist/esm/core/generate-id/generate-id.js +1 -0
  93. package/dist/esm/core/generate-id/index.js +1 -0
  94. package/dist/esm/core/index.js +1 -0
  95. package/dist/esm/core/input/index.js +1 -0
  96. package/dist/esm/core/input/manager.js +1 -0
  97. package/dist/esm/core/input/sources/browser.js +1 -0
  98. package/dist/esm/core/input/sources/index.js +1 -0
  99. package/dist/esm/core/input/types.js +0 -0
  100. package/dist/esm/core/lerp/index.js +1 -0
  101. package/dist/esm/core/lerp/lerp.js +1 -0
  102. package/dist/esm/core/navmesh/index.js +1 -0
  103. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  104. package/dist/esm/core/navmesh/navmesh.js +1 -0
  105. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  106. package/dist/esm/core/pooled-codec/index.js +1 -0
  107. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  108. package/dist/esm/core/prediction/index.js +1 -0
  109. package/dist/esm/core/prediction/prediction.js +1 -0
  110. package/dist/esm/core/ray/index.js +1 -0
  111. package/dist/esm/core/ray/ray-2d.js +1 -0
  112. package/dist/esm/core/ray/ray-3d.js +1 -0
  113. package/dist/esm/core/simple-rng/index.js +1 -0
  114. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  115. package/dist/esm/core/sparse-batcher/index.js +1 -0
  116. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  117. package/dist/esm/ecs/component-store.js +1 -0
  118. package/dist/esm/ecs/component.js +1 -0
  119. package/dist/esm/ecs/entity-handle.js +1 -0
  120. package/dist/esm/ecs/index.js +1 -0
  121. package/dist/esm/ecs/system-builder.js +1 -0
  122. package/dist/esm/ecs/world-systems.js +1 -0
  123. package/dist/esm/ecs/world.js +1 -0
  124. package/dist/esm/game/index.js +1 -0
  125. package/dist/esm/game/loop/index.js +1 -0
  126. package/dist/esm/game/loop/loop.js +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  129. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  130. package/dist/esm/net/buffer-pool.js +1 -0
  131. package/dist/esm/net/client.js +1 -0
  132. package/dist/esm/net/index.js +1 -0
  133. package/dist/esm/net/server.js +1 -0
  134. package/dist/esm/net/types.js +1 -0
  135. package/dist/esm/net/validators.js +1 -0
  136. package/dist/esm/protocol/index.js +1 -0
  137. package/dist/esm/protocol/intent/define-intent.js +1 -0
  138. package/dist/esm/protocol/intent/index.js +1 -0
  139. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  140. package/dist/esm/protocol/intent/intent.js +0 -0
  141. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  142. package/dist/esm/protocol/rpc/index.js +1 -0
  143. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  144. package/dist/esm/protocol/rpc/rpc.js +0 -0
  145. package/dist/esm/protocol/snapshot/index.js +1 -0
  146. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  147. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  148. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  149. package/dist/esm/renderer/base-2d-renderer.js +1 -0
  150. package/dist/esm/renderer/base-3d-renderer.js +1 -0
  151. package/dist/esm/renderer/base-renderer.js +1 -0
  152. package/dist/esm/renderer/index.js +1 -0
  153. package/dist/esm/renderer/types.js +0 -0
  154. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  155. package/dist/{core/loop → types/core/driver}/drivers/immediate.d.ts +1 -1
  156. package/dist/{core/loop → types/core/driver}/drivers/raf.d.ts +1 -1
  157. package/dist/{core/loop → types/core/driver}/drivers/timeout.d.ts +1 -1
  158. package/dist/{core/loop → types/core/driver}/index.d.ts +1 -1
  159. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  160. package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +1 -1
  161. package/dist/types/core/free-list/free-list.d.ts +31 -0
  162. package/dist/types/core/free-list/index.d.ts +1 -0
  163. package/dist/{core → types/core}/index.d.ts +7 -1
  164. package/dist/types/core/input/index.d.ts +3 -0
  165. package/dist/types/core/input/manager.d.ts +56 -0
  166. package/dist/types/core/input/sources/browser.d.ts +9 -0
  167. package/dist/types/core/input/sources/index.d.ts +1 -0
  168. package/dist/types/core/input/types.d.ts +36 -0
  169. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  170. package/dist/types/core/ray/index.d.ts +2 -0
  171. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  172. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  173. package/dist/types/core/simple-rng/index.d.ts +1 -0
  174. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  175. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  176. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  177. package/dist/{ecs → types/ecs}/system-builder.d.ts +20 -9
  178. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  179. package/dist/types/game/index.d.ts +1 -0
  180. package/dist/types/game/loop/index.d.ts +1 -0
  181. package/dist/types/game/loop/loop.d.ts +175 -0
  182. package/dist/{index.d.ts → types/index.d.ts} +2 -0
  183. package/dist/{net → types/net}/index.d.ts +2 -2
  184. package/dist/{net → types/net}/server.d.ts +39 -19
  185. package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +15 -0
  186. package/dist/{protocol → types/protocol}/intent/index.d.ts +1 -1
  187. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  188. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  189. package/dist/types/renderer/base-renderer.d.ts +21 -0
  190. package/dist/types/renderer/index.d.ts +4 -0
  191. package/dist/types/renderer/types.d.ts +79 -0
  192. package/dist/webgpu/cjs/index.js +6004 -0
  193. package/dist/webgpu/esm/index.js +5972 -0
  194. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  195. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  196. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  197. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  198. package/dist/webgpu/types/2d/sprite-accessor.test.d.ts +1 -0
  199. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  200. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  201. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  202. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  203. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  204. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  205. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  206. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  207. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  208. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  209. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  210. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  211. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  212. package/dist/webgpu/types/camera/index.d.ts +2 -0
  213. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  214. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  215. package/dist/webgpu/types/core/constants.d.ts +59 -0
  216. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  217. package/dist/webgpu/types/core/index.d.ts +2 -0
  218. package/dist/webgpu/types/core/math.d.ts +37 -0
  219. package/dist/webgpu/types/core/types.d.ts +125 -0
  220. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  221. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  222. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  223. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  224. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  225. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  226. package/dist/webgpu/types/index.d.ts +32 -0
  227. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  228. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  229. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  230. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  231. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  232. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  233. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  234. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  235. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  236. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  237. package/package.json +96 -26
  238. package/dist/core/binary-codec/binary-codec.js +0 -354
  239. package/dist/core/binary-codec/index.js +0 -1
  240. package/dist/core/events/event-system.js +0 -88
  241. package/dist/core/events/index.js +0 -1
  242. package/dist/core/fixed-ticker/fixed-ticker.js +0 -101
  243. package/dist/core/fixed-ticker/index.js +0 -1
  244. package/dist/core/generate-id/generate-id.js +0 -25
  245. package/dist/core/generate-id/index.js +0 -1
  246. package/dist/core/index.js +0 -9
  247. package/dist/core/lerp/index.js +0 -1
  248. package/dist/core/lerp/lerp.js +0 -42
  249. package/dist/core/loop/drivers/immediate.js +0 -61
  250. package/dist/core/loop/drivers/index.js +0 -3
  251. package/dist/core/loop/drivers/raf.js +0 -62
  252. package/dist/core/loop/drivers/timeout.js +0 -71
  253. package/dist/core/loop/index.js +0 -2
  254. package/dist/core/loop/loop.js +0 -47
  255. package/dist/core/navmesh/index.js +0 -1
  256. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  257. package/dist/core/navmesh/navmesh.js +0 -799
  258. package/dist/core/navmesh/navmesh.worker.js +0 -79
  259. package/dist/core/pooled-codec/index.js +0 -1
  260. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  261. package/dist/core/prediction/index.js +0 -1
  262. package/dist/core/prediction/prediction.js +0 -99
  263. package/dist/core.esm.js +0 -1
  264. package/dist/core.js +0 -1
  265. package/dist/ecs/component-store.js +0 -175
  266. package/dist/ecs/component.js +0 -43
  267. package/dist/ecs/entity-handle.js +0 -515
  268. package/dist/ecs/example.js +0 -125
  269. package/dist/ecs/index.js +0 -4
  270. package/dist/ecs/system-builder.js +0 -180
  271. package/dist/ecs/system.d.ts +0 -63
  272. package/dist/ecs/system.js +0 -92
  273. package/dist/ecs/world-systems.js +0 -79
  274. package/dist/ecs/world.js +0 -684
  275. package/dist/index.js +0 -24
  276. package/dist/net/adapters/browser-websocket.js +0 -74
  277. package/dist/net/adapters/bun-websocket.js +0 -245
  278. package/dist/net/buffer-pool.js +0 -89
  279. package/dist/net/client.js +0 -586
  280. package/dist/net/index.js +0 -58
  281. package/dist/net/server.js +0 -938
  282. package/dist/net/types.js +0 -31
  283. package/dist/net/validators.js +0 -88
  284. package/dist/protocol/index.js +0 -92
  285. package/dist/protocol/intent/define-intent.js +0 -125
  286. package/dist/protocol/intent/index.js +0 -91
  287. package/dist/protocol/intent/intent-registry.js +0 -91
  288. package/dist/protocol/rpc/define-rpc.js +0 -84
  289. package/dist/protocol/rpc/index.js +0 -3
  290. package/dist/protocol/rpc/rpc-registry.js +0 -159
  291. package/dist/protocol/rpc/rpc.js +0 -12
  292. package/dist/protocol/snapshot/index.js +0 -43
  293. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  294. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  295. package/dist/protocol/snapshot/snapshot.js +0 -30
  296. package/src/core/binary-codec/README.md +0 -60
  297. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  298. package/src/core/binary-codec/binary-codec.ts +0 -448
  299. package/src/core/binary-codec/index.ts +0 -1
  300. package/src/core/events/README.md +0 -47
  301. package/src/core/events/event-system.test.ts +0 -243
  302. package/src/core/events/event-system.ts +0 -140
  303. package/src/core/events/index.ts +0 -1
  304. package/src/core/fixed-ticker/README.md +0 -77
  305. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  306. package/src/core/fixed-ticker/fixed-ticker.ts +0 -169
  307. package/src/core/fixed-ticker/index.ts +0 -1
  308. package/src/core/generate-id/README.md +0 -18
  309. package/src/core/generate-id/generate-id.test.ts +0 -79
  310. package/src/core/generate-id/generate-id.ts +0 -37
  311. package/src/core/generate-id/index.ts +0 -1
  312. package/src/core/index.ts +0 -9
  313. package/src/core/lerp/README.md +0 -79
  314. package/src/core/lerp/index.ts +0 -1
  315. package/src/core/lerp/lerp.test.ts +0 -90
  316. package/src/core/lerp/lerp.ts +0 -42
  317. package/src/core/loop/README.md +0 -97
  318. package/src/core/loop/drivers/immediate.ts +0 -66
  319. package/src/core/loop/drivers/index.ts +0 -3
  320. package/src/core/loop/drivers/raf.ts +0 -67
  321. package/src/core/loop/drivers/timeout.ts +0 -77
  322. package/src/core/loop/index.ts +0 -2
  323. package/src/core/loop/loop.test.ts +0 -414
  324. package/src/core/loop/loop.ts +0 -71
  325. package/src/core/navmesh/README.md +0 -164
  326. package/src/core/navmesh/index.ts +0 -1
  327. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  328. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  329. package/src/core/navmesh/navmesh.test.ts +0 -344
  330. package/src/core/navmesh/navmesh.ts +0 -1047
  331. package/src/core/navmesh/navmesh.worker.ts +0 -147
  332. package/src/core/pooled-codec/README.md +0 -70
  333. package/src/core/pooled-codec/index.ts +0 -1
  334. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  335. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  336. package/src/core/prediction/README.md +0 -64
  337. package/src/core/prediction/index.ts +0 -1
  338. package/src/core/prediction/prediction.test.ts +0 -423
  339. package/src/core/prediction/prediction.ts +0 -112
  340. package/src/ecs/README.md +0 -427
  341. package/src/ecs/benchmark.test.ts +0 -1645
  342. package/src/ecs/component-store.ts +0 -198
  343. package/src/ecs/component.ts +0 -90
  344. package/src/ecs/entity-handle.test.ts +0 -393
  345. package/src/ecs/entity-handle.ts +0 -563
  346. package/src/ecs/example.ts +0 -152
  347. package/src/ecs/index.ts +0 -4
  348. package/src/ecs/system-builder.ts +0 -309
  349. package/src/ecs/system.ts +0 -111
  350. package/src/ecs/world-systems.ts +0 -83
  351. package/src/ecs/world.test.ts +0 -310
  352. package/src/ecs/world.ts +0 -828
  353. package/src/index.ts +0 -28
  354. package/src/net/README.md +0 -474
  355. package/src/net/adapters/browser-websocket.ts +0 -86
  356. package/src/net/adapters/bun-websocket.ts +0 -292
  357. package/src/net/buffer-pool.ts +0 -106
  358. package/src/net/client.test.ts +0 -807
  359. package/src/net/client.ts +0 -695
  360. package/src/net/index.ts +0 -60
  361. package/src/net/server.test.ts +0 -799
  362. package/src/net/server.ts +0 -1116
  363. package/src/net/types.ts +0 -228
  364. package/src/net/validators.ts +0 -104
  365. package/src/protocol/README.md +0 -469
  366. package/src/protocol/index.ts +0 -93
  367. package/src/protocol/intent/define-intent.test.ts +0 -397
  368. package/src/protocol/intent/define-intent.ts +0 -182
  369. package/src/protocol/intent/index.ts +0 -94
  370. package/src/protocol/intent/intent-registry.test.ts +0 -198
  371. package/src/protocol/intent/intent-registry.ts +0 -112
  372. package/src/protocol/intent/intent.ts +0 -12
  373. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  374. package/src/protocol/rpc/define-rpc.ts +0 -113
  375. package/src/protocol/rpc/index.ts +0 -3
  376. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  377. package/src/protocol/rpc/rpc-registry.ts +0 -176
  378. package/src/protocol/rpc/rpc.ts +0 -37
  379. package/src/protocol/snapshot/index.ts +0 -45
  380. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  381. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  382. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  383. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  384. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  385. package/src/protocol/snapshot/snapshot.ts +0 -41
  386. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  387. /package/dist/{core/loop/loop.d.ts → types/core/driver/driver.d.ts} +0 -0
  388. /package/dist/{core/loop → types/core/driver}/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  390. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  391. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  392. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  394. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  395. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  396. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  397. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  398. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  400. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  402. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  403. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  404. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  405. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  406. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  407. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  408. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  409. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  410. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  411. /package/dist/{net → types/net}/client.d.ts +0 -0
  412. /package/dist/{net → types/net}/types.d.ts +0 -0
  413. /package/dist/{net → types/net}/validators.d.ts +0 -0
  414. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  415. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  416. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  417. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  418. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  419. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  420. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  421. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  422. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  423. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  424. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  425. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/animation.test.d.ts} +0 -0
package/src/ecs/README.md DELETED
@@ -1,427 +0,0 @@
1
- # Entity Component System (ECS)
2
-
3
- A high-performance Entity Component System for multiplayer games, built on typed arrays with automatic pooling.
4
-
5
- ## Features
6
-
7
- - **Typed Array Storage**: Components stored in packed ArrayBuffer with DataView for cache-friendly iteration
8
- - **Zero Allocations**: Reusable DataView and ObjectPool eliminate GC pressure
9
- - **BinaryCodec Integration**: Components use your existing schema definitions
10
- - **PooledCodec Serialization**: Efficient network encoding built-in
11
- - **Bitmask Queries**: Fast O(1) component checks and O(n) entity queries with query result caching
12
- - **Unlimited Components**: Dynamically scales to support any number of components (32 per bitmask word)
13
- - **Optimized Hot Paths**: Cached references and unrolled loops for <128 component common case
14
- - **Simple API**: Define components, spawn entities, query and update
15
-
16
- ## Quick Start
17
-
18
- ```typescript
19
- import { defineComponent, World, BinaryCodec } from 'murow';
20
-
21
- // 1. Define components using BinaryCodec schemas
22
- const Transform = defineComponent('Transform', {
23
- x: BinaryCodec.f32,
24
- y: BinaryCodec.f32,
25
- rotation: BinaryCodec.f32,
26
- });
27
-
28
- const Velocity = defineComponent('Velocity', {
29
- vx: BinaryCodec.f32,
30
- vy: BinaryCodec.f32,
31
- });
32
-
33
- const Health = defineComponent('Health', {
34
- current: BinaryCodec.u16,
35
- max: BinaryCodec.u16,
36
- });
37
-
38
- // 2. Create a world with your components
39
- const world = new World({
40
- maxEntities: 10000,
41
- components: [Transform, Velocity, Health],
42
- });
43
-
44
- // 3. Spawn entities and add components
45
- const player = world.spawn();
46
- world.add(player, Transform, { x: 100, y: 200, rotation: 0 });
47
- world.add(player, Velocity, { vx: 10, vy: 20 });
48
- world.add(player, Health, { current: 100, max: 100 });
49
-
50
- // 4. Query and update entities
51
- for (const entity of world.query(Transform, Velocity)) {
52
- const transform = world.get(entity, Transform);
53
- const velocity = world.get(entity, Velocity);
54
-
55
- // Update position using update() for efficiency
56
- world.update(entity, Transform, {
57
- x: transform.x + velocity.vx * deltaTime,
58
- y: transform.y + velocity.vy * deltaTime,
59
- });
60
- }
61
- ```
62
-
63
- ## API Reference
64
-
65
- ### `defineComponent(name, schema)`
66
-
67
- Define a component type with a binary schema.
68
-
69
- ```typescript
70
- const Transform = defineComponent('Transform', {
71
- x: BinaryCodec.f32,
72
- y: BinaryCodec.f32,
73
- rotation: BinaryCodec.f32,
74
- });
75
- ```
76
-
77
- **Parameters:**
78
- - `name`: Unique name for the component
79
- - `schema`: BinaryCodec schema defining the component's fields
80
-
81
- **Returns:** Component definition that can be used with World
82
-
83
- ### `World`
84
-
85
- Manages entities and their components.
86
-
87
- #### Constructor
88
-
89
- ```typescript
90
- const world = new World({
91
- maxEntities: 10000, // Optional, defaults to 10000
92
- components: [Transform, Velocity, Health],
93
- });
94
- ```
95
-
96
- **Options:**
97
- - `maxEntities`: Maximum number of entities (affects memory allocation)
98
- - `components`: Array of component definitions (dynamically scales, 32 components per bitmask word)
99
-
100
- #### Entity Management
101
-
102
- ```typescript
103
- // Spawn a new entity
104
- const entity = world.spawn();
105
-
106
- // Despawn (destroy) an entity
107
- world.despawn(entity);
108
-
109
- // Check if entity is alive
110
- world.isAlive(entity);
111
- ```
112
-
113
- #### Component Operations
114
-
115
- ```typescript
116
- // Add a component with initial data
117
- world.add(entity, Transform, { x: 0, y: 0, rotation: 0 });
118
-
119
- // Get component data (returns pooled object)
120
- const transform = world.get(entity, Transform);
121
-
122
- // Set component data (overwrites all fields)
123
- world.set(entity, Transform, { x: 100, y: 200, rotation: 0 });
124
-
125
- // Update partial fields (more efficient)
126
- world.update(entity, Transform, { x: 150 });
127
-
128
- // Check if entity has component
129
- world.has(entity, Transform);
130
-
131
- // Remove component from entity
132
- world.remove(entity, Transform);
133
- ```
134
-
135
- #### Querying
136
-
137
- ```typescript
138
- // Query entities with specific components
139
- for (const entity of world.query(Transform, Velocity)) {
140
- // Only entities with BOTH Transform AND Velocity
141
- const t = world.get(entity, Transform);
142
- const v = world.get(entity, Velocity);
143
- // ... process entity
144
- }
145
- ```
146
-
147
- #### Serialization
148
-
149
- See [Networking](../net/README.md) for snapshot-based serialization using the same component schemas.
150
-
151
- ## Performance
152
-
153
- **Highly optimized for multiplayer games** - zero allocations in hot paths, sub-millisecond queries with intelligent caching, scales to 50k+ entities.
154
-
155
- ### Quick Numbers
156
-
157
- | Metric | Performance |
158
- |--------|-------------|
159
- | **Spawn rate** | 30M+ entities/sec |
160
- | **Query speed (first)** | 10k entities in 0.13ms |
161
- | **Query speed (cached)** | 10k entities in **0.01ms** (100x) |
162
- | **Component access** | 9.3M ops/sec (get) |
163
- | **Frame time** (5k entities) | 4.98ms avg (~200 FPS) |
164
- | **Memory overhead** | Zero allocations in gameplay, <100KB for query cache |
165
-
166
- ### Realistic Game Simulation
167
- 11 systems with realistic workload (movement, rotation, boundaries, health regen, cooldowns, combat, death, status effects, lifetime, velocity damping, AI behavior).
168
- Results averaged across 5 runs using **raw World API**:
169
-
170
- | Entities | Avg Frame | Std Dev | Min | Max | FPS | 60fps (16.67ms) | 30fps (33.33ms) |
171
- |----------|-----------|---------|-----|-----|-----|-----------------|-----------------|
172
- | 500 | 0.57ms | ±0.05ms | 0.38ms | 2.27ms | 1,754 | ✅ 3.4% | ✅ 1.7% |
173
- | 1,000 | 1.03ms | ±0.04ms | 0.78ms | 1.75ms | 972 | ✅ 6.2% | ✅ 3.1% |
174
- | 5,000 | 4.98ms | ±0.36ms | 3.57ms | 11.12ms | 200 | ✅ 29.9% | ✅ 14.9% |
175
- | 10,000 | 9.63ms | ±0.48ms | 8.19ms | 13.55ms | 103 | ✅ 57.8% | ✅ 28.9% |
176
- | 25,000 | 22.91ms | ±1.02ms | 20.59ms | 28.65ms | 43 | ❌ 137.4% | ✅ 68.7% |
177
- | 50,000 | 45.41ms | ±1.62ms | 38.14ms | 55.69ms | 22 | ❌ 272.4% | ❌ 136.2% |
178
-
179
- **10k entities fits comfortably in 60 FPS budget. 25k entities achieves 30 FPS.**
180
-
181
- Low standard deviations indicate stable, predictable performance across runs.
182
-
183
- ### Optimizations Applied
184
- - **Query result caching** with archetype version tracking (16-473x speedup for repeated queries)
185
- - **Object-based query buffers** and field lookups (2.2x faster than Map)
186
- - Loop unrolling for 2/3/4-field components (covers 95% of use cases)
187
- - Query loop unrolling (8x batch processing with write cursor)
188
- - Single/dual-field update fast paths (zero allocation for common cases)
189
- - Component-specialized read/write paths
190
- - Inlined math operations in hot paths
191
- - O(1) entity lookups with index mapping
192
- - Power-of-2 ring buffer with bitwise operations
193
-
194
- Run benchmarks: `bun test src/ecs/benchmark.test.ts`
195
-
196
- **Methodology**: All performance numbers are averaged across 5 runs using `bun test --rerun-each=5` to account for JIT warmup and variance. The "Complex Game Simulation" benchmark uses the raw World API for maximum transparency.
197
-
198
- ## Advanced Usage
199
-
200
- ### Fluent API with EntityHandle
201
-
202
- EntityHandle provides a chainable interface for entity operations with **zero runtime overhead**. Modern JIT compilers inline these simple method calls, making them identical in performance to the raw World API.
203
-
204
- ```typescript
205
- // Fluent API - clean and expressive
206
- const player = world.entity(world.spawn())
207
- .add(Transform, { x: 0, y: 0, rotation: 0 })
208
- .add(Health, { current: 100, max: 100 })
209
- .add(Velocity, { vx: 0, vy: 0 });
210
-
211
- // Use the handle
212
- player.update(Transform, { x: 10 });
213
- const health = player.get(Health);
214
-
215
- // Chain multiple operations
216
- player
217
- .update(Health, { current: 50 })
218
- .update(Velocity, { vx: 5, vy: 5 });
219
-
220
- // Access raw entity ID when needed
221
- world.add(player.id, Armor, { value: 50 });
222
-
223
- // Mix with raw API freely
224
- for (const id of world.query(Transform, Velocity)) {
225
- const entity = world.entity(id);
226
- const t = entity.get(Transform);
227
- const v = entity.get(Velocity);
228
- entity.update(Transform, {
229
- x: t.x + v.vx * deltaTime,
230
- y: t.y + v.vy * deltaTime,
231
- });
232
- }
233
- ```
234
-
235
- **Performance**: EntityHandle has minimal overhead. Benchmark results show <5-15% overhead in complex simulations, well within acceptable range for the ergonomic benefits.
236
-
237
- ### Systems Pattern
238
-
239
- ```typescript
240
- class MovementSystem {
241
- update(world: World, deltaTime: number) {
242
- for (const entity of world.query(Transform, Velocity)) {
243
- const t = world.get(entity, Transform);
244
- const v = world.get(entity, Velocity);
245
-
246
- // Use update() for efficient partial updates
247
- world.update(entity, Transform, {
248
- x: t.x + v.vx * deltaTime,
249
- y: t.y + v.vy * deltaTime,
250
- });
251
- }
252
- }
253
- }
254
-
255
- class HealthSystem {
256
- update(world: World) {
257
- for (const entity of world.query(Health)) {
258
- const health = world.get(entity, Health);
259
-
260
- if (health.current <= 0) {
261
- world.despawn(entity);
262
- }
263
- }
264
- }
265
- }
266
-
267
- // Game loop
268
- const movementSystem = new MovementSystem();
269
- const healthSystem = new HealthSystem();
270
-
271
- function gameLoop(deltaTime: number) {
272
- movementSystem.update(world, deltaTime);
273
- healthSystem.update(world);
274
- }
275
- ```
276
-
277
- ### Partial Updates
278
-
279
- ```typescript
280
- // ❌ WRONG: Can't mutate readonly
281
- const transform = world.get(entity, Transform);
282
- transform.x = 150; // TypeScript error!
283
- world.set(entity, Transform, transform);
284
-
285
- // ✅ CORRECT: Use update() for partial changes (fastest!)
286
- world.update(entity, Transform, { x: 150 });
287
-
288
- // ✅ ALSO CORRECT: Use set() to replace all fields
289
- world.set(entity, Transform, { x: 150, y: 200, rotation: 0 });
290
- ```
291
-
292
- ### Component Reuse with Tags
293
-
294
- ```typescript
295
- // Create tag components (empty schemas)
296
- const Enemy = defineComponent('Enemy', {
297
- _tag: BinaryCodec.u8, // Dummy field
298
- });
299
-
300
- const Player = defineComponent('Player', {
301
- _tag: BinaryCodec.u8,
302
- });
303
-
304
- // Add tags
305
- world.add(entity, Enemy, { _tag: 1 });
306
-
307
- // Query with tags
308
- for (const entity of world.query(Transform, Enemy)) {
309
- // Only enemy entities with Transform
310
- }
311
- ```
312
-
313
- ## Integration with Existing Code
314
-
315
- The ECS integrates seamlessly with your existing networking code:
316
-
317
- ```typescript
318
- // Define components (same schema for storage AND network!)
319
- const Transform = defineComponent('Transform', {
320
- x: BinaryCodec.f32,
321
- y: BinaryCodec.f32,
322
- rotation: BinaryCodec.f32,
323
- });
324
-
325
- // Use in ECS
326
- world.add(entity, Transform, { x: 100, y: 200, rotation: 0 });
327
-
328
- // Use in snapshots (same schema!)
329
- snapshotRegistry.register('transform', Transform.arrayCodec);
330
- ```
331
-
332
- ## Best Practices
333
-
334
- ### 1. Keep Components Small
335
- ```typescript
336
- // Good: Small, focused components
337
- const Transform = defineComponent('Transform', { x: f32, y: f32, rotation: f32 });
338
- const Velocity = defineComponent('Velocity', { vx: f32, vy: f32 });
339
-
340
- // Bad: Large, monolithic component
341
- const Entity = defineComponent('Entity', {
342
- x, y, rotation, vx, vy, health, maxHealth, damage, ...
343
- });
344
- ```
345
-
346
- ### 2. Use Partial Updates
347
- ```typescript
348
- // Good: Update only what changed
349
- world.update(entity, Transform, { x: newX });
350
-
351
- // Bad: Get + spread + set for single field
352
- const t = world.get(entity, Transform);
353
- world.set(entity, Transform, { ...t, x: newX });
354
- ```
355
-
356
- ### 3. Batch Operations
357
- ```typescript
358
- // Good: Query once, process many
359
- for (const entity of world.query(Transform, Velocity)) {
360
- // Process all entities in one loop
361
- }
362
-
363
- // Bad: Individual queries
364
- for (const entity of world.getEntities()) {
365
- if (world.has(entity, Transform) && world.has(entity, Velocity)) {
366
- // Slower
367
- }
368
- }
369
- ```
370
-
371
- ### 4. Avoid Nested Queries
372
- ```typescript
373
- // Bad: O(n²) complexity
374
- for (const e1 of world.query(Transform)) {
375
- for (const e2 of world.query(Transform)) {
376
- // Very slow!
377
- }
378
- }
379
-
380
- // Good: Use spatial partitioning for collision detection
381
- const grid = new SpatialGrid();
382
- // ... (see NavMesh or implement your own)
383
- ```
384
-
385
- ## Performance
386
-
387
- Benchmark results (5-run average, 10,000 entities on Intel i5-2400 (4 cores) @ 3.4GHz, 2011):
388
-
389
- **Complex Simulation (10+ systems):**
390
- - 10.34ms average (98 FPS) ✅ Well under 60 FPS budget
391
- - Handles realistic game workloads with ease
392
-
393
- **25-Component Stress Test:**
394
- - 18.90ms average (52 FPS) ✅ Passes 30 FPS target
395
- - Extreme test with many components still performant
396
-
397
- **Query Performance:**
398
- - Single query: 0.209ms for 10,000 entities
399
- - 100x repeated queries: 0.11ms (query result caching)
400
- - Persistent cache invalidated only on archetype changes
401
-
402
- **Key Optimizations:**
403
- - Cached reference to first word (fast path for <32 components)
404
- - Unrolled loops for 1-4 word cases (up to 128 components)
405
- - Query mask caching (zero recomputation for repeated queries)
406
- - Query result caching (invalidated only on spawn/despawn/add/remove)
407
-
408
- **Scaling:**
409
- - 500 entities: 0.6-0.7ms (1,500+ FPS)
410
- - 1,000 entities: 1.1-1.3ms (800+ FPS)
411
- - 5,000 entities: 5.0-5.5ms (180+ FPS)
412
- - 10,000 entities: 10.3ms (98 FPS)
413
- - 25,000 entities: 24ms (42 FPS)
414
-
415
- All tests maintain excellent frame rates for realistic game scenarios. Modern CPUs will perform significantly better.
416
-
417
- ## Limitations
418
-
419
- - **Fixed max entities** (set at world creation, affects memory allocation)
420
- - **No component inheritance** (composition over inheritance pattern)
421
- - **No component dependencies** (manage manually in systems)
422
-
423
- ## See Also
424
-
425
- - [BinaryCodec](../core/binary-codec/README.md) - Schema definitions
426
- - [PooledCodec](../core/pooled-codec/README.md) - Zero-copy serialization
427
- - [Networking](../net/README.md) - Client/Server integration