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
10K
GLTF props · 60 fps
0
Allocations per frame
4,000+
Handwritten tests
4,500+
Runtime assertions
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.

Pure ECS

data-oriented
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

Read the install guide →

vite.config.js
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.