Skip to content

Murow v0.0.71

Choose a tag to compare

@mococa mococa released this 22 May 01:28
· 114 commits to main since this release

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).
  • Camera2D with interpolation, follow, and setPosition/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.
  • Camera3D with configurable movement modes (local / grounded / global), interpolation, follow, picking via Ray3D.
  • createGrid helper for ground/debug meshes.
  • Configurable maxSkinnedInstances and maxBonesPerSkin.

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 or unplugin-typegpu required in user code.
  • Bundler-safe d / std re-exports so minified production builds don't break TGSL parsing.

Cameras & math

  • Ray2D / Ray3D intersection utilities + camera picking.
  • DDA spatial traversal for graph-based NavMesh line-of-sight.
  • Improved A* pathfinding implementation and perf tests.

Input

  • InputManager with zero-allocation peek / snapshot semantics.
  • BrowserInputSource now uses pointer events (pointermove / pointerdown / pointerup / pointercancel) — unified mouse/touch/pen on desktop and mobile.
  • Mouse delta computed from clientX/Y when unlocked, movementX/Y when pointer-locked.
  • InputSnapshot exported from core/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.
  • GameLoop is now generic (GameLoopOptions<T>), supports manual driver type, and exposes a GameLoopType enum.

ECS

  • Comprehensive ECS README clarifying that murow uses SoA (Structure of Arrays), not AoS.
  • Despawned-entity tracking; source-entry export.

Examples & docs

  • New multiplayer-snake example.
  • New bouncing-3d ECS 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 require exports 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/webgpu subpath, with its own dist tree copied via a postbuild step.
  • optionalDependencies: acorn, tinyest, tinyest-for-wgsl, typegpu (only needed when using murow/webgpu).
  • Bumped from 0.0.700.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