Murow v0.0.71
Changelog — murow 0.0.70 → 0.0.71
This release is a major expansion: the package moved into a monorepo, gained a full WebGPU rendering stack (2D + 3D + compute), and added a long list of engine features. 102 commits.
Highlights
- Monorepo + new build system. Moved to a workspace layout, switched build to Bun + esbuild with ESM/CJS outputs, and reorganized package exports (
murow/core,murow/ecs,murow/game,murow/net,murow/protocol,murow/renderer,murow/webgpu). murow/webgpu— new subpath. Full WebGPU backend built on TypeGPU.- GPU compute pipeline with skeletal animation, particles, and zero-copy buffer reuse.
- Renderer benchmarks app under
benchmarks/renderer(Starfield, GPU Particles, glTF).
Rendering — WebGPU 2D
- New
WebGPU2DRenderer— instanced sprite renderer with one draw call per spritesheet batch, GPU-side interpolation between ticks, layer sorting. SpriteAccessor,Spritesheet,AnimationController(clip-based 2D animation).Camera2Dwith interpolation, follow, andsetPosition/move.
Rendering — WebGPU 3D
- New
WebGPU3DRenderer— mesh-based renderer with textured-model pipeline. - glTF loader with skin parsing and morph targets.
- GPU skeletal animation via compute (
ComputeBuilder), with crossfade blending, looping, and frustum culling by bind-pose radius. Camera3Dwith configurable movement modes (local/grounded/global), interpolation, follow, picking via Ray3D.createGridhelper for ground/debug meshes.- Configurable
maxSkinnedInstancesandmaxBonesPerSkin.
GPU compute & geometry builders
GeometryBuilder— fluent, fully generic instanced-geometry builder.ComputeBuilder— declarative compute pipelines with read/readwrite storage buffers.fromCompute()zero-copy path between compute and geometry buffers.- Runtime shader transpilation: no
'use gpu'directive orunplugin-typegpurequired in user code. - Bundler-safe
d/stdre-exports so minified production builds don't break TGSL parsing.
Cameras & math
Ray2D/Ray3Dintersection utilities + camera picking.- DDA spatial traversal for graph-based NavMesh line-of-sight.
- Improved A* pathfinding implementation and perf tests.
Input
InputManagerwith zero-allocationpeek/snapshotsemantics.BrowserInputSourcenow uses pointer events (pointermove/pointerdown/pointerup/pointercancel) — unified mouse/touch/pen on desktop and mobile.- Mouse delta computed from
clientX/Ywhen unlocked,movementX/Ywhen pointer-locked. InputSnapshotexported fromcore/input.
Core systems
SimpleRNG— deterministic, seedable RNG.FreeList— index allocator.SparseBatcher— sparse-set batching primitive with tests.f16— 16-bit float field support.EventSystem— flat-array, zero-allocation event dispatch; reused event objects.GameLoopis now generic (GameLoopOptions<T>), supportsmanualdriver type, and exposes aGameLoopTypeenum.
ECS
- Comprehensive ECS README clarifying that murow uses SoA (Structure of Arrays), not AoS.
- Despawned-entity tracking; source-entry export.
Examples & docs
- New
multiplayer-snakeexample. - New
bouncing-3dECS example. - WebGPU bouncing demos.
- Comprehensive top-level README and MIT license.
- WebGPU 3D renderer documentation.
Fixes
- TypeScript types tightened across the WebGPU renderer and compute kernel.
- Renderer/Webgpu
requireexports normalized. - Camera follow smoothing tests.
- Animation kernel offsets/mids correctly typed as
d.i32. - WebGPU3DRenderer's skinned instance limits made configurable.
Build & packaging
- ESM + CJS outputs via esbuild.
- Type declarations under
dist/types. - New
murow/webgpusubpath, with its own dist tree copied via a postbuild step. optionalDependencies:acorn,tinyest,tinyest-for-wgsl,typegpu(only needed when usingmurow/webgpu).- Bumped from
0.0.70→0.0.71.
What's Changed
- docs: clarify murow ECS uses SoA, not AoS by @Copilot in #4
New Contributors
- @Copilot made their first contribution in #4
Full Changelog: v0.0.70...v0.0.71