ECS engine,
built for performance.
A JavaScript ECS engine with a zero-allocation core. Runs a million entities on low-spec hardware without GC stutter. No editor, no scene files — just code.
$
npm install @woosh/meep-engine Why Meep
Most web engines are heavy, opinionated, and choke on GC.
Meep is built around a different premise: that web games can rival native code if you take memory layout, cache locality, and bundle size seriously. Every decision in the engine bends toward that goal.
A true Entity-Component-System foundation — not an OOP engine with ECS bolted on. One component per type per entity. Memory layout is predictable. Component queries are instantaneous, even with millions of entities.
Zero-garbage architecture
no GC spikes
Custom memory management eliminates the per-frame allocation pattern that destroys frame consistency on the web. Meep handles millions of objects on low-spec mobile without GC pauses.
Fast cold start
boots first, streams next
The engine ships as ~3,000 fine-grained ES modules that tree-shake to only what you reference. On the web that matters less for total payload size — your textures and meshes will dwarf the engine anyway — and more for cold start: the engine is parsed and running in milliseconds, so asset streaming begins sooner.
Code-first, no editor
programmatic
No GUI. No proprietary file formats. Meep is built for engineers who treat their codebase as the source of truth. Edit code, not opaque scene files.
Forward+ rendering
clustered lighting
Thousands of point lights. 1,000,000+ GPU-driven decals. A particle engine compiled into just 4 shaders to eliminate state-switching overhead. Plus a pure-JS path tracer for offline.
Hierarchy: solved
parent-child transforms
Pure ECS engines historically struggle with scene graphs. Meep gives you the composability of a hierarchy with the raw speed of a flat array — without compromising either side.
AI & simulation toolkit
rare in JS
Behavior trees, blackboards, Monte-Carlo Tree Search (AlphaGo's algorithm), resource allocation solvers, FABRIK IK, BVH spatial queries. Industrial decision-making tools.
Battle-hardened
decade in production
Powers Might is Right on Steam. 4,000+ handwritten tests cover critical algorithms and edge cases. 4,500+ assertions in dev mode catch errors instantly; stripped from production builds.
Production builds
Invisible at runtime.
In development, Meep runs with thousands of assertions to catch errors at the source. For production, a single Rollup plugin strips every assertion away. What ships is small, tight, and runs at the speed of light.
- ✓ Tree-shakes to only the modules you reference
- ✓ Zero runtime overhead from assertions
- ✓ Optional Three.js peer dep — opt in only if you need it
- ✓ Targets last-2 versions of Chrome, Firefox, Safari
import { defineConfig } from "vite";
import strip from "@rollup/plugin-strip";
export default defineConfig({
plugins: [
{ ...strip({ functions: ["assert.*"] }), apply: "build" }
]
}); Get started
Read the source. Build something.
Free for hobby and small commercial work. One-time pricing per shipped title for indies, annual seats for studios.