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
@@ -1 +0,0 @@
1
- export * from "./loop";
@@ -1 +0,0 @@
1
- export * from "./loop";
@@ -1,108 +0,0 @@
1
- import { createDriver, EventSystem, FixedTicker } from "../../core";
2
- import { InputManager, BrowserInputSource } from "../../core/input";
3
- /**
4
- * GameLoop class that manages the main game loop with tick events and optional rendering.
5
- * It supports both client and server types, emitting appropriate events for both.
6
- */
7
- export class GameLoop {
8
- constructor(options) {
9
- this.options = options;
10
- /**
11
- * Current frames per second (FPS) measurement.
12
- */
13
- this.fps = 0;
14
- /**
15
- * Current status of the game loop: 'running', 'paused', or 'stopped'.
16
- */
17
- this.status = 'stopped';
18
- const eventNames = [
19
- 'pre-tick',
20
- 'tick',
21
- 'post-tick',
22
- 'skip',
23
- 'start',
24
- 'stop',
25
- 'toggle-pause',
26
- ];
27
- if (this.options.type === 'client') {
28
- eventNames.push('render');
29
- }
30
- this._input = new InputManager();
31
- this.events = new EventSystem({
32
- events: eventNames,
33
- });
34
- this.ticker = new FixedTicker({
35
- rate: this.options.tickRate,
36
- onTick: (dt, tick = 0) => {
37
- const input = this._input.snapshot();
38
- this.events.emit('pre-tick', { deltaTime: dt, tick, input });
39
- this.options.onTick?.(dt, tick, input);
40
- this.events.emit('tick', { deltaTime: dt, tick, input });
41
- this.events.emit('post-tick', { deltaTime: dt, tick, input });
42
- },
43
- onTickSkipped: (skippedTicks) => {
44
- this.events.emit('skip', { ticks: skippedTicks });
45
- },
46
- });
47
- this._driver = createDriver(this.options.type, (dt) => {
48
- this.ticker.tick(dt);
49
- this.fps = 1 / dt;
50
- if (this.options.type === 'client') {
51
- this.options.onRender?.(dt, this.ticker.alpha, this._input.peek());
52
- this.events.emit('render', {
53
- deltaTime: dt,
54
- alpha: this.ticker.alpha,
55
- input: this._input.peek(),
56
- });
57
- }
58
- });
59
- }
60
- /**
61
- * Pauses the game ticker and emits a 'toggle-pause' event.
62
- */
63
- pause() {
64
- this._driver.stop();
65
- this.status = 'paused';
66
- this.events.emit('toggle-pause', {
67
- paused: true,
68
- lastToggledAt: Date.now(),
69
- lastToggleTick: this.ticker.tickCount,
70
- });
71
- }
72
- /**
73
- * Resumes the game ticker and emits a 'toggle-pause' event.
74
- */
75
- resume() {
76
- this._driver.start();
77
- this.status = 'running';
78
- this.events.emit('toggle-pause', {
79
- paused: false,
80
- lastToggledAt: Date.now(),
81
- lastToggleTick: this.ticker.tickCount,
82
- });
83
- }
84
- /**
85
- * Starts the game ticker and emits a 'start' event.
86
- */
87
- start() {
88
- this._driver.start();
89
- this.status = 'running';
90
- this.events.emit('start', { startedAt: Date.now() });
91
- if (this.options.type === 'client') {
92
- const source = new BrowserInputSource(document, document.body);
93
- this._input.listen(source);
94
- }
95
- }
96
- /**
97
- * Stops the game ticker and emits a 'stop' event.
98
- */
99
- stop() {
100
- this._driver.stop();
101
- this.ticker.resetTickCount();
102
- this.status = 'stopped';
103
- this.events.emit('stop', { stoppedAt: Date.now() });
104
- if (this.options.type === 'client') {
105
- this._input.unlisten();
106
- }
107
- }
108
- }
package/dist/index.js DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * GameDev Utils
3
- *
4
- * A collection of utilities for game development, including:
5
- * - Binary codecs for efficient serialization
6
- * - Event system for decoupled communication
7
- * - Fixed-timestep ticker for deterministic simulation
8
- * - ID generation utilities
9
- * - Linear interpolation (lerp) utilities
10
- * - NavMesh pathfinding with obstacle management
11
- * - Pooled codecs for zero-allocation networking
12
- * - Prediction system for client-side prediction
13
- * - Protocol layer for networked multiplayer games
14
- * - Transport-agnostic networking layer (client/server abstractions)
15
- * - Entity Component System (ECS) for scalable game architecture
16
- */
17
- // Core utilities
18
- export * from "./core";
19
- // Protocol layer for networking
20
- export * from "./protocol";
21
- // Networking layer (client/server abstractions)
22
- export * from "./net";
23
- // Entity Component System
24
- export * from "./ecs";
25
- // Game utilities
26
- export * from "./game";
@@ -1,74 +0,0 @@
1
- /**
2
- * Browser WebSocket transport adapter for ClientNetwork
3
- *
4
- * @example
5
- * ```ts
6
- * const transport = new BrowserWebSocketClientTransport("ws://localhost:3007");
7
- * const client = new ClientNetwork({ transport, ... });
8
- * ```
9
- */
10
- export class BrowserWebSocketClientTransport {
11
- constructor(url) {
12
- this.openHandler = null;
13
- this.messageHandler = null;
14
- this.closeHandler = null;
15
- this.errorHandler = null;
16
- this.isOpen = false;
17
- this.pendingMessages = [];
18
- this.ws = new WebSocket(url);
19
- this.ws.binaryType = 'arraybuffer';
20
- this.ws.onopen = () => {
21
- this.isOpen = true;
22
- // Flush any pending messages
23
- for (const msg of this.pendingMessages) {
24
- this.ws.send(msg);
25
- }
26
- this.pendingMessages = [];
27
- if (this.openHandler) {
28
- this.openHandler();
29
- }
30
- ;
31
- };
32
- this.ws.onmessage = (event) => {
33
- if (this.messageHandler && event.data instanceof ArrayBuffer) {
34
- this.messageHandler(new Uint8Array(event.data));
35
- }
36
- };
37
- this.ws.onclose = () => {
38
- this.isOpen = false;
39
- if (this.closeHandler) {
40
- this.closeHandler();
41
- }
42
- };
43
- this.ws.onerror = () => {
44
- if (this.errorHandler) {
45
- this.errorHandler(new Error('WebSocket error'));
46
- }
47
- };
48
- }
49
- send(data) {
50
- if (this.isOpen && this.ws.readyState === WebSocket.OPEN) {
51
- // WebSocket.send() copies the buffer, so this is safe
52
- this.ws.send(data);
53
- }
54
- else if (this.ws.readyState === WebSocket.CONNECTING) {
55
- // Queue messages sent before connection is established
56
- this.pendingMessages.push(data);
57
- }
58
- }
59
- onMessage(handler) {
60
- this.messageHandler = handler;
61
- }
62
- onOpen(handler) {
63
- this.openHandler = handler;
64
- }
65
- onClose(handler) {
66
- this.closeHandler = handler;
67
- }
68
- onError(handler) {
69
- this.errorHandler = handler;
70
- }
71
- close() {
72
- this.ws.close();
73
- }
74
- }
@@ -1,245 +0,0 @@
1
- import { generateId } from "../../core/generate-id/generate-id";
2
- /**
3
- * Bun WebSocket transport adapter for client-side connections
4
- */
5
- export class BunWebSocketClientTransport {
6
- constructor(socket) {
7
- this.messageHandlers = [];
8
- this.closeHandlers = [];
9
- this.errorHandlers = [];
10
- this.socket = socket;
11
- this.setupHandlers();
12
- }
13
- send(data) {
14
- if (this.socket.readyState === WebSocket.OPEN) {
15
- this.socket.send(data);
16
- }
17
- }
18
- onMessage(handler) {
19
- this.messageHandlers.push(handler);
20
- }
21
- onClose(handler) {
22
- this.closeHandlers.push(handler);
23
- }
24
- onError(handler) {
25
- this.errorHandlers.push(handler);
26
- }
27
- close() {
28
- this.socket.close();
29
- }
30
- setupHandlers() {
31
- this.socket.binaryType = "arraybuffer";
32
- this.socket.addEventListener("message", (event) => {
33
- if (event.data instanceof ArrayBuffer) {
34
- const data = new Uint8Array(event.data);
35
- for (const handler of this.messageHandlers) {
36
- handler(data);
37
- }
38
- }
39
- else {
40
- // Warn about non-binary messages
41
- const error = new Error(`Unexpected message type: ${typeof event.data}`);
42
- for (const handler of this.errorHandlers) {
43
- handler(error);
44
- }
45
- }
46
- });
47
- this.socket.addEventListener("close", () => {
48
- for (const handler of this.closeHandlers) {
49
- handler();
50
- }
51
- });
52
- this.socket.addEventListener("error", () => {
53
- const error = new Error("WebSocket error");
54
- for (const handler of this.errorHandlers) {
55
- handler(error);
56
- }
57
- });
58
- }
59
- /**
60
- * Static factory method to connect to a server
61
- */
62
- static connect(url) {
63
- return new Promise((resolve, reject) => {
64
- const socket = new WebSocket(url);
65
- const transport = new BunWebSocketClientTransport(socket);
66
- socket.addEventListener("open", () => {
67
- resolve(transport);
68
- });
69
- socket.addEventListener("error", (error) => {
70
- reject(error);
71
- });
72
- });
73
- }
74
- }
75
- /**
76
- * Bun WebSocket transport adapter for server-side peer connections
77
- */
78
- export class BunWebSocketPeerTransport {
79
- constructor(socket) {
80
- this.messageHandlers = [];
81
- this.closeHandlers = [];
82
- this.errorHandlers = [];
83
- this.socket = socket;
84
- }
85
- send(data) {
86
- this.socket.send(data);
87
- }
88
- onMessage(handler) {
89
- this.messageHandlers.push(handler);
90
- }
91
- onClose(handler) {
92
- this.closeHandlers.push(handler);
93
- }
94
- onError(handler) {
95
- this.errorHandlers.push(handler);
96
- }
97
- close() {
98
- this.socket.close();
99
- }
100
- _handleOpen() {
101
- // No-op for server peer transport
102
- }
103
- /**
104
- * Internal: Call message handlers (used by server adapter)
105
- */
106
- _handleMessage(data) {
107
- for (const handler of this.messageHandlers) {
108
- handler(data);
109
- }
110
- }
111
- /**
112
- * Internal: Call close handlers (used by server adapter)
113
- */
114
- _handleClose() {
115
- for (const handler of this.closeHandlers) {
116
- handler();
117
- }
118
- }
119
- /**
120
- * Internal: Call error handlers (used by server adapter)
121
- */
122
- _handleError(error) {
123
- for (const handler of this.errorHandlers) {
124
- handler(error);
125
- }
126
- }
127
- }
128
- /**
129
- * Bun WebSocket server transport adapter
130
- */
131
- export class BunWebSocketServerTransport {
132
- constructor(server) {
133
- this.peers = new Map();
134
- this.connectionHandlers = [];
135
- this.disconnectionHandlers = [];
136
- this.server = server;
137
- }
138
- onConnection(handler) {
139
- this.connectionHandlers.push(handler);
140
- }
141
- onDisconnection(handler) {
142
- this.disconnectionHandlers.push(handler);
143
- }
144
- getPeer(peerId) {
145
- return this.peers.get(peerId);
146
- }
147
- getPeerIds() {
148
- return Array.from(this.peers.keys());
149
- }
150
- close() {
151
- this.server.stop();
152
- this.peers.clear();
153
- }
154
- /**
155
- * Internal: Register a new peer (called from Bun server fetch handler)
156
- */
157
- _registerPeer(socket) {
158
- const peerId = generateId({ prefix: "peer_" });
159
- const peer = new BunWebSocketPeerTransport(socket);
160
- this.peers.set(peerId, peer);
161
- // Notify connection handlers
162
- for (const handler of this.connectionHandlers) {
163
- handler(peer, peerId);
164
- }
165
- return peerId;
166
- }
167
- /**
168
- * Internal: Handle peer message (called from Bun server message handler)
169
- */
170
- _handlePeerMessage(peerId, data) {
171
- const peer = this.peers.get(peerId);
172
- if (peer) {
173
- peer._handleMessage(data);
174
- }
175
- }
176
- /**
177
- * Internal: Handle peer disconnection (called from Bun server close handler)
178
- */
179
- _handlePeerDisconnection(peerId) {
180
- const peer = this.peers.get(peerId);
181
- if (peer) {
182
- peer._handleClose();
183
- this.peers.delete(peerId);
184
- // Notify disconnection handlers
185
- for (const handler of this.disconnectionHandlers) {
186
- handler(peerId);
187
- }
188
- }
189
- }
190
- _handlePeerConnection(peerId) {
191
- const peer = this.peers.get(peerId);
192
- if (peer) {
193
- for (const handler of this.connectionHandlers) {
194
- handler(peer, peerId);
195
- }
196
- }
197
- }
198
- /**
199
- * Static factory method to create a Bun WebSocket server
200
- */
201
- static create(port) {
202
- // Peer ID tracking per socket
203
- const socketToPeerId = new WeakMap();
204
- let transport;
205
- const server = Bun.serve({
206
- port,
207
- fetch(req, server) {
208
- // Upgrade HTTP request to WebSocket
209
- if (server.upgrade(req)) {
210
- return; // Connection upgraded
211
- }
212
- return new Response("Expected WebSocket connection", { status: 400 });
213
- },
214
- websocket: {
215
- open(ws) {
216
- // Register peer on connection
217
- const peerId = transport._registerPeer(ws);
218
- socketToPeerId.set(ws, peerId);
219
- transport._handlePeerConnection(peerId);
220
- transport.connectionHandlers.forEach((handler) => handler(transport.getPeer(peerId), peerId));
221
- },
222
- message(ws, message) {
223
- // Handle incoming message
224
- const peerId = socketToPeerId.get(ws);
225
- if (peerId && message instanceof Uint8Array) {
226
- transport._handlePeerMessage(peerId, message);
227
- }
228
- else if (peerId && message instanceof ArrayBuffer) {
229
- transport._handlePeerMessage(peerId, new Uint8Array(message));
230
- }
231
- },
232
- close(ws) {
233
- // Handle disconnection
234
- const peerId = socketToPeerId.get(ws);
235
- if (peerId) {
236
- transport._handlePeerDisconnection(peerId);
237
- socketToPeerId.delete(ws);
238
- }
239
- },
240
- },
241
- });
242
- transport = new BunWebSocketServerTransport(server);
243
- return transport;
244
- }
245
- }
@@ -1,89 +0,0 @@
1
- import { ObjectPool } from "../core/pooled-codec/pooled-codec";
2
- /**
3
- * Message wrapper pool for network messages
4
- * Pools buffers for wrapping encoded data with message type headers
5
- *
6
- * Works alongside PooledCodec:
7
- * - PooledCodec handles encoding game data (intents/snapshots)
8
- * - MessageWrapperPool handles wrapping with protocol headers
9
- *
10
- * This eliminates the "new Uint8Array(1 + data.length)" allocation in hot paths
11
- *
12
- * Uses ObjectPool from core/pooled-codec for consistent pooling strategy
13
- */
14
- export class MessageWrapperPool {
15
- /**
16
- * @param sizeClass Buffers are pooled in multiples of this size (default: 256 bytes)
17
- * @param zeroBuffersOnRelease If true, zero buffers before returning to pool (default: false for performance)
18
- */
19
- constructor(sizeClass = 256, zeroBuffersOnRelease = false) {
20
- this.pools = new Map();
21
- this.sizeClass = sizeClass;
22
- this.zeroBuffersOnRelease = zeroBuffersOnRelease;
23
- }
24
- /**
25
- * Wrap payload data with a message type header
26
- * Returns a buffer from the pool (or allocates if needed)
27
- *
28
- * Format: [messageType: u8][payload: Uint8Array]
29
- *
30
- * IMPORTANT: Caller must call release() when done to return buffer to pool
31
- */
32
- wrap(messageType, payload) {
33
- const totalSize = 1 + payload.byteLength;
34
- const poolSize = Math.ceil(totalSize / this.sizeClass) * this.sizeClass;
35
- // Get or create pool for this size class
36
- let pool = this.pools.get(poolSize);
37
- if (!pool) {
38
- pool = new ObjectPool(() => new Uint8Array(poolSize));
39
- this.pools.set(poolSize, pool);
40
- }
41
- // Acquire buffer from pool
42
- const buffer = pool.acquire();
43
- // Write message type and payload
44
- buffer[0] = messageType;
45
- buffer.set(payload, 1);
46
- // Return view of exact size needed
47
- return buffer.subarray(0, totalSize);
48
- }
49
- /**
50
- * Return a buffer to the pool for reuse
51
- * Optionally zeros buffer based on constructor config
52
- *
53
- * WARNING: Caller must not use the buffer after calling release()
54
- */
55
- release(buffer) {
56
- // Get the actual underlying buffer size
57
- const poolSize = buffer.buffer.byteLength;
58
- // Only pool buffers that match our size classes
59
- if (poolSize % this.sizeClass !== 0) {
60
- return;
61
- }
62
- const pool = this.pools.get(poolSize);
63
- if (!pool) {
64
- return; // No pool for this size, let it be garbage collected
65
- }
66
- // Create a view of the full buffer
67
- const fullBuffer = new Uint8Array(buffer.buffer);
68
- // Optionally zero buffer (expensive but safer if caller might hold references)
69
- if (this.zeroBuffersOnRelease) {
70
- fullBuffer.fill(0);
71
- }
72
- pool.release(fullBuffer);
73
- }
74
- /**
75
- * Get current pool statistics
76
- * Note: ObjectPool doesn't expose size, so we can only list pool classes
77
- */
78
- getStats() {
79
- return {
80
- poolSizes: Array.from(this.pools.keys()).sort((a, b) => a - b),
81
- };
82
- }
83
- /**
84
- * Clear all pooled buffers (useful for testing or memory cleanup)
85
- */
86
- clear() {
87
- this.pools.clear();
88
- }
89
- }