murow 0.0.70 → 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 (439) 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 → types/core}/events/event-system.d.ts +14 -33
  156. package/dist/types/core/free-list/free-list.d.ts +31 -0
  157. package/dist/types/core/free-list/index.d.ts +1 -0
  158. package/dist/{core → types/core}/index.d.ts +5 -0
  159. package/dist/{core → types/core}/input/index.d.ts +1 -0
  160. package/dist/{core → types/core}/input/manager.d.ts +2 -0
  161. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  162. package/dist/types/core/ray/index.d.ts +2 -0
  163. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  164. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  165. package/dist/types/core/simple-rng/index.d.ts +1 -0
  166. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  167. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  168. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  169. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  170. package/dist/{game → types/game}/loop/loop.d.ts +33 -29
  171. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  172. package/dist/{net → types/net}/index.d.ts +2 -2
  173. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  174. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  175. package/dist/types/renderer/base-renderer.d.ts +21 -0
  176. package/dist/types/renderer/index.d.ts +4 -0
  177. package/dist/types/renderer/types.d.ts +79 -0
  178. package/dist/webgpu/cjs/index.js +6004 -0
  179. package/dist/webgpu/esm/index.js +5972 -0
  180. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  181. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  182. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  183. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  184. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  185. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  186. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  187. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  188. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  189. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  190. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  191. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  192. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  193. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  194. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  195. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  196. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  197. package/dist/webgpu/types/camera/index.d.ts +2 -0
  198. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  199. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  200. package/dist/webgpu/types/core/constants.d.ts +59 -0
  201. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  202. package/dist/webgpu/types/core/index.d.ts +2 -0
  203. package/dist/webgpu/types/core/math.d.ts +37 -0
  204. package/dist/webgpu/types/core/types.d.ts +125 -0
  205. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  206. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  207. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  208. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  209. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  210. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  211. package/dist/webgpu/types/index.d.ts +32 -0
  212. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  213. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  214. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  215. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  216. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  217. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  218. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  219. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  220. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  221. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  222. package/package.json +96 -26
  223. package/dist/core/binary-codec/binary-codec.js +0 -354
  224. package/dist/core/binary-codec/index.js +0 -1
  225. package/dist/core/driver/driver.js +0 -47
  226. package/dist/core/driver/drivers/immediate.js +0 -61
  227. package/dist/core/driver/drivers/index.js +0 -3
  228. package/dist/core/driver/drivers/raf.js +0 -62
  229. package/dist/core/driver/drivers/timeout.js +0 -71
  230. package/dist/core/driver/index.js +0 -2
  231. package/dist/core/events/event-system.js +0 -88
  232. package/dist/core/events/index.js +0 -1
  233. package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
  234. package/dist/core/fixed-ticker/index.js +0 -1
  235. package/dist/core/generate-id/generate-id.js +0 -25
  236. package/dist/core/generate-id/index.js +0 -1
  237. package/dist/core/index.js +0 -10
  238. package/dist/core/input/index.js +0 -2
  239. package/dist/core/input/manager.js +0 -211
  240. package/dist/core/input/sources/browser.js +0 -29
  241. package/dist/core/input/sources/index.js +0 -1
  242. package/dist/core/lerp/index.js +0 -1
  243. package/dist/core/lerp/lerp.js +0 -42
  244. package/dist/core/navmesh/index.js +0 -1
  245. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  246. package/dist/core/navmesh/navmesh.js +0 -799
  247. package/dist/core/navmesh/navmesh.worker.js +0 -79
  248. package/dist/core/pooled-codec/index.js +0 -1
  249. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  250. package/dist/core/prediction/index.js +0 -1
  251. package/dist/core/prediction/prediction.js +0 -99
  252. package/dist/core.esm.js +0 -1
  253. package/dist/core.js +0 -1
  254. package/dist/ecs/component-store.js +0 -175
  255. package/dist/ecs/component.js +0 -43
  256. package/dist/ecs/entity-handle.js +0 -515
  257. package/dist/ecs/example.js +0 -125
  258. package/dist/ecs/index.js +0 -4
  259. package/dist/ecs/system-builder.js +0 -249
  260. package/dist/ecs/world-systems.js +0 -79
  261. package/dist/ecs/world.js +0 -767
  262. package/dist/game/index.js +0 -1
  263. package/dist/game/loop/index.js +0 -1
  264. package/dist/game/loop/loop.js +0 -108
  265. package/dist/index.js +0 -26
  266. package/dist/net/adapters/browser-websocket.js +0 -74
  267. package/dist/net/adapters/bun-websocket.js +0 -245
  268. package/dist/net/buffer-pool.js +0 -89
  269. package/dist/net/client.js +0 -586
  270. package/dist/net/index.js +0 -58
  271. package/dist/net/server.js +0 -974
  272. package/dist/net/types.js +0 -31
  273. package/dist/net/validators.js +0 -88
  274. package/dist/protocol/index.js +0 -92
  275. package/dist/protocol/intent/define-intent.js +0 -125
  276. package/dist/protocol/intent/index.js +0 -91
  277. package/dist/protocol/intent/intent-registry.js +0 -91
  278. package/dist/protocol/rpc/define-rpc.js +0 -84
  279. package/dist/protocol/rpc/index.js +0 -3
  280. package/dist/protocol/rpc/rpc-registry.js +0 -159
  281. package/dist/protocol/rpc/rpc.js +0 -12
  282. package/dist/protocol/snapshot/index.js +0 -43
  283. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  284. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  285. package/dist/protocol/snapshot/snapshot.js +0 -30
  286. package/src/core/binary-codec/README.md +0 -60
  287. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  288. package/src/core/binary-codec/binary-codec.ts +0 -448
  289. package/src/core/binary-codec/index.ts +0 -1
  290. package/src/core/driver/README.md +0 -97
  291. package/src/core/driver/driver.test.ts +0 -414
  292. package/src/core/driver/driver.ts +0 -71
  293. package/src/core/driver/drivers/immediate.ts +0 -66
  294. package/src/core/driver/drivers/index.ts +0 -3
  295. package/src/core/driver/drivers/raf.ts +0 -67
  296. package/src/core/driver/drivers/timeout.ts +0 -77
  297. package/src/core/driver/index.ts +0 -2
  298. package/src/core/events/README.md +0 -47
  299. package/src/core/events/event-system.test.ts +0 -243
  300. package/src/core/events/event-system.ts +0 -140
  301. package/src/core/events/index.ts +0 -1
  302. package/src/core/fixed-ticker/README.md +0 -77
  303. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  304. package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
  305. package/src/core/fixed-ticker/index.ts +0 -1
  306. package/src/core/generate-id/README.md +0 -18
  307. package/src/core/generate-id/generate-id.test.ts +0 -79
  308. package/src/core/generate-id/generate-id.ts +0 -37
  309. package/src/core/generate-id/index.ts +0 -1
  310. package/src/core/index.ts +0 -10
  311. package/src/core/input/README.md +0 -24
  312. package/src/core/input/index.ts +0 -2
  313. package/src/core/input/manager.ts +0 -259
  314. package/src/core/input/sources/browser.ts +0 -39
  315. package/src/core/input/sources/index.ts +0 -1
  316. package/src/core/input/types.ts +0 -40
  317. package/src/core/lerp/README.md +0 -79
  318. package/src/core/lerp/index.ts +0 -1
  319. package/src/core/lerp/lerp.test.ts +0 -90
  320. package/src/core/lerp/lerp.ts +0 -42
  321. package/src/core/navmesh/README.md +0 -164
  322. package/src/core/navmesh/index.ts +0 -1
  323. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  324. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  325. package/src/core/navmesh/navmesh.test.ts +0 -344
  326. package/src/core/navmesh/navmesh.ts +0 -1047
  327. package/src/core/navmesh/navmesh.worker.ts +0 -147
  328. package/src/core/pooled-codec/README.md +0 -70
  329. package/src/core/pooled-codec/index.ts +0 -1
  330. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  331. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  332. package/src/core/prediction/README.md +0 -64
  333. package/src/core/prediction/index.ts +0 -1
  334. package/src/core/prediction/prediction.test.ts +0 -423
  335. package/src/core/prediction/prediction.ts +0 -112
  336. package/src/ecs/README.md +0 -427
  337. package/src/ecs/benchmark.test.ts +0 -1645
  338. package/src/ecs/component-store.ts +0 -198
  339. package/src/ecs/component.ts +0 -90
  340. package/src/ecs/entity-handle.test.ts +0 -393
  341. package/src/ecs/entity-handle.ts +0 -563
  342. package/src/ecs/example.ts +0 -152
  343. package/src/ecs/index.ts +0 -4
  344. package/src/ecs/system-builder.ts +0 -404
  345. package/src/ecs/world-systems.ts +0 -83
  346. package/src/ecs/world.test.ts +0 -310
  347. package/src/ecs/world.ts +0 -904
  348. package/src/game/index.ts +0 -1
  349. package/src/game/loop/README.md +0 -32
  350. package/src/game/loop/index.ts +0 -1
  351. package/src/game/loop/loop.ts +0 -236
  352. package/src/index.ts +0 -32
  353. package/src/net/README.md +0 -474
  354. package/src/net/adapters/browser-websocket.ts +0 -86
  355. package/src/net/adapters/bun-websocket.ts +0 -292
  356. package/src/net/buffer-pool.ts +0 -106
  357. package/src/net/client.test.ts +0 -807
  358. package/src/net/client.ts +0 -695
  359. package/src/net/index.ts +0 -60
  360. package/src/net/server.test.ts +0 -799
  361. package/src/net/server.ts +0 -1152
  362. package/src/net/types.ts +0 -228
  363. package/src/net/validators.ts +0 -104
  364. package/src/protocol/README.md +0 -469
  365. package/src/protocol/index.ts +0 -93
  366. package/src/protocol/intent/define-intent.test.ts +0 -397
  367. package/src/protocol/intent/define-intent.ts +0 -201
  368. package/src/protocol/intent/index.ts +0 -94
  369. package/src/protocol/intent/intent-registry.test.ts +0 -198
  370. package/src/protocol/intent/intent-registry.ts +0 -112
  371. package/src/protocol/intent/intent.ts +0 -12
  372. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  373. package/src/protocol/rpc/define-rpc.ts +0 -113
  374. package/src/protocol/rpc/index.ts +0 -3
  375. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  376. package/src/protocol/rpc/rpc-registry.ts +0 -176
  377. package/src/protocol/rpc/rpc.ts +0 -37
  378. package/src/protocol/snapshot/index.ts +0 -45
  379. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  380. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  381. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  382. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  383. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  384. package/src/protocol/snapshot/snapshot.ts +0 -41
  385. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  386. /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
  387. /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
  388. /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
  390. /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
  391. /package/dist/{core → types/core}/driver/index.d.ts +0 -0
  392. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
  394. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  395. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  396. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  397. /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
  398. /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/input/types.d.ts +0 -0
  400. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  402. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  403. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  404. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  405. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  406. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  407. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  408. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  409. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  410. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  411. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  412. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  413. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  414. /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
  415. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  416. /package/dist/{game → types/game}/index.d.ts +0 -0
  417. /package/dist/{game → types/game}/loop/index.d.ts +0 -0
  418. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  419. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  420. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  421. /package/dist/{net → types/net}/client.d.ts +0 -0
  422. /package/dist/{net → types/net}/server.d.ts +0 -0
  423. /package/dist/{net → types/net}/types.d.ts +0 -0
  424. /package/dist/{net → types/net}/validators.d.ts +0 -0
  425. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  426. /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
  427. /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
  428. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  429. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  430. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  431. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  432. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  433. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  434. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  435. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  436. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  437. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  438. /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
  439. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.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