Guides

FAQ

Answers to common questions about Meep, licensing, and integration.

Is Meep open source?

No. Meep is source-available — you receive and can read the full source of the engine, but usage is governed by a proprietary license. It was briefly open-source around 2018; the codebase has since returned to closed-source under commercial licensing.

If you’ve worked with Unreal Engine’s license model, the structure is similar: source available, commercial use under license.

How does Meep compare to Three.js?

Three.js is a rendering library. Meep is a full game engine — ECS, asset streaming, audio, input, save/load, UI, AI, physics, terrain, particles, scene management — that uses Three.js as one component of its renderer.

You’d reach for Three.js if you need to draw 3D geometry and that’s it. You’d reach for Meep if you’re building a game and you’d rather not write the surrounding 90% from scratch.

How does Meep compare to Babylon.js or PlayCanvas?

The main differences are architectural rather than feature-by-feature:

  • Meep is pure ECS; Babylon and PlayCanvas are scene-graph + OOP.
  • Meep is code-first with no GUI editor; both alternatives ship editors.
  • Meep prioritizes zero-allocation patterns and bundle size.

If you want an editor and a polished onboarding ramp, the alternatives are better choices. If you want full control of architecture and the smallest possible runtime, Meep is the closer fit.

Why JavaScript and not WebAssembly?

Two reasons, both structural.

Debuggability. JavaScript is the only debuggable language on the web. Every browser ships a real debugger for it — source maps, live values, the full DOM. WebAssembly debugging is still effectively binary inspection: no readable variables, no useful symbols, painful stepping. For an engine you’re going to stare at for years, that’s a non-starter.

Integration. WASM has no dynamic linking. You receive an already-compiled binary; you can’t include parts of it at the source level, you can’t recompile it together with your own code, you can’t extend it from the inside. And every interaction with the page — DOM, input, assets, audio, network — has to go through a JavaScript shim anyway, because that’s the only thing the browser exposes. Engines that ship as WASM are wrapping JS shims around a black box and asking you to live inside that arrangement. It’s a fundamentally flawed integration paradigm for the web, and many engines pay for it.

TypeScript has a milder version of the same asymmetry: TS can consume JavaScript happily, but JavaScript can’t directly consume TS without a compile step. JavaScript is the lowest common denominator on the web — the most universal way for a library to be usable by anyone on the platform, including TS users.

Meep is JavaScript because JavaScript is what the web is. Where WebAssembly earns its keep — narrowly-scoped number-crunching like a physics solver — you can call into it from Meep code without turning the whole engine into a black box.

Can I use TypeScript?

Yes. The engine source itself is JavaScript with JSDoc annotations, and TypeScript declarations are generated by the build (npm run generate-types) and picked up by any standard TS setup.

The reason the engine is JS-with-JSDoc rather than written in TypeScript is the asymmetry mentioned above: TS code can consume JS, but JS code can’t directly consume TS without compilation. Authoring in JS keeps the engine usable from both worlds with zero friction.

What platforms does Meep target?

Web first. Meep runs in any modern browser (last two stable versions of Chrome, Firefox, Safari). For desktop and mobile shipping, wrap with Electron, Tauri, Capacitor, or a similar shell. There are commercial Steam titles shipping today using exactly that pattern.

Is there a community / forum / Discord?

Not at the moment. Meep is built and maintained by one person, and a forum is a real time investment. Email is the right channel for now — see /contact.

What if I need a feature that isn’t there?

Free and Indie tiers: you can work around it in your project code or fork what you need locally. Standard: same, plus you can email me about it. Enterprise can purchase dedicated hours for specific feature work in writing.

I have a license question not covered here.

Email me. I read everything.