Threenity / Unity-style engine for the web
Unity habits, web-native engine
If you think in GameObjects, components, prefabs, and an Inspector, you don't need to unlearn any of it to build for the browser. Threenity is a web-native engine that keeps the Unity mental model — in TypeScript, on Three.js, running as ordinary JavaScript in the page rather than a Wasm blob.
Your mental model, mapped one-to-one
This table is the heart of the pitch. Every core Unity concept has a direct Threenity counterpart — the familiar workflow survives the migration:
| Unity | Threenity |
|---|---|
| GameObject | A Three.js Object3D in the scene graph |
| Transform | Object3D.position / .quaternion / .scale |
| MonoBehaviour | class X extends Component — onStart → onUpdate(ctx, dt) → onDestroy |
| MeshRenderer | MeshRenderer component (core pack) |
| Camera | Camera component — Unity's +Z-forward convention included |
| Scene (.unity) | Open, versioned .scene.json — validated and merge-friendly |
| Prefab | Prefab JSON + world.spawn(prefab, parent?), with per-instance overrides |
| Material / Shader | .mat.json assets resolved through a material cache |
| Layers / Tags | Layers and tags per object; physics collision matrix per scene |
| Inspector / Hierarchy | The same panels, in the Threenity editor |
C# vs TypeScript: the honest trade
You trade C# for TypeScript — strictly typed, modern, and arguably closer to the platform you're shipping to. A behavior is a class with lifecycle methods and schema-declared fields that appear in the Inspector, exactly the shape a MonoBehaviour occupies in your head. What you give up: Unity's asset store and two decades of tooling maturity. What you gain: your game is a web project — npm, Vite, hot reload, version control over readable JSON scenes instead of opaque binaries.
Web-native, not web-exported
An exported engine compiles its runtime through IL2CPP and Emscripten into a large Wasm heap the browser must download and boot before the first frame. A web-native engine is JavaScript: the renderer is Three.js, the payload is your code plus only the engine packs you enabled, and startup time is a page load. That also means mobile browsers are a first-class target, not a compatibility footnote. (Unity remains the right tool for many targets — this page is about building for the web, where being native to the platform pays compound interest in build size and iteration speed.)
The parts of Unity you'd actually miss
- Visual editor — Hierarchy, Inspector, Scene view, gizmos, undo/redo: the Threenity editor.
- Physics — rigidbodies, colliders, and a kinematic character controller via the Rapier pack.
- Prefabs — reusable object templates with per-instance overrides.
- Component ecosystem — UI, audio, input rebinding, character controllers, VFX, save/load, shipped as opt-in packs.
Where to go next
- The architecture underneath: a real game engine for Three.js.
- Coming from scratch instead? Make a 3D game with Three.js.
- Back to the Threenity homepage.
Threenity is in pre-release — the editor ships to waitlist members first.
Join the waitlist