"If Unreal Engine were invented today — for WebGPU, TypeScript, and AI-assisted development — what would it look like?"
That is the question 3JSE exists to answer. This is the answer.
3JSE is an open-source game engine and editor for the platform that will run the next billion games: the web.
Godot proved that open source can be world-class. Unreal proved what the bar is — a real editor, expressive visual scripting, a deep library of gameplay systems, and a pipeline that takes you from blank project to shipped game. 3JSE rebuilds that bar, natively, for the modern stack: WebGPU, TypeScript, and AI-assisted development.
It is built around Three.js — never on top of a fork of it. Three.js already won the "does the web have a real renderer" argument. What the web has never had is everything a renderer needs around it to become a platform. That gap — not rendering quality — is what 3JSE closes.
| 3JSE | Godot | Unreal Engine | |
|---|---|---|---|
| Language | TypeScript — one language, everywhere. No separate scripting layer | GDScript / C# | C++ + Blueprints |
| Editor boot | Instant. It's a web app — also a Tauri desktop app | Seconds | Minutes |
| Project format | Readable, git-diffable text files. Your game is a software project | Text scenes | Binary .uassets |
| Distribution | A URL. Static web, PWA, desktop, mobile, XR — no multi-gigabyte installer | Exported binaries | Multi-GB installers |
| AI-native | First-class. An Agent API is the engine's core loop, not a bolt-on | Emerging | Emerging |
| Rendering | WebGPU via Three.js — and honest about it | Vulkan / GLES3 | Nanite / Lumen (the ceiling) |
| License | GPL-3.0 | MIT | Source-available, royalties |
3JSE doesn't chase Unreal's rendering ceiling — not in its first years. It fights where the web can win decisively: speed of iteration, universality of distribution, and a codebase an AI agent can actually operate.
Every engine forces you to pick a way of working — and then maintains four parallel, drifting versions of your game. 3JSE is built on a single decision: one canonical, typed, serializable representation of what your game does — the 3JSE Gameplay IR. Four ways of working edit the same game, never four parallel ones:
| Frontend | Who | How |
|---|---|---|
| 🎨 Editor | Artists & level designers | Drag, place, inspect, sculpt — a desktop-class, dockable GUI |
| 💻 TypeScript | Programmers | The same components, systems, and APIs the editor itself uses |
| 🕸️ 3JSE Graph | Designers | Full visual scripting for gameplay — not a toy, not materials-only |
| 🤖 AI agents | Everyone, soon | Structured primitives via the Agent API — never simulated mouse clicks |
"AI-native" in 3JSE means something specific: an agent can read the game's state, plan a change, make it through the same command surface a human uses, run the game to verify it, and hand back a change that is legible to both the AI and the human.
Ten layers. Two of them ship in your game. The rest are tooling — and every one of them reads and writes the same Gameplay IR.
The design principles that hold it together:
- Three.js is a dependency, never a fork. Three.js stays a normal, upgradable npm package. Any project can drop to raw Three.js at any layer without losing the engine.
- One IR, many frontends. TypeScript, 3JSE Graph, and AI agents all compile to the same Gameplay IR. No subsystem is allowed to become a second, opaque execution engine.
- Everything the editor can do, code can do. Every editor mutation is a call in the runtime's command API — the editor is a GUI for that API, not a separate authority.
- Plugins are first-class. The engine itself is a curated set of official plugins on a small core. Third-party physics, terrain, or gameplay packages install exactly like official ones.
- Projects are software projects. Scenes, prefabs, and graphs are readable, deterministic text files under version control — never a proprietary binary blob.
| Package | What it does |
|---|---|
@3jse/runtime |
The core: World → Level → Entity/Component, archetype scheduler, tick order. Standalone — zero editor dependency |
@3jse/editor |
The editor app (browser or Tauri) — a GUI for the runtime's own command API |
@3jse/extras |
Assemble-first imports: three-mesh-bvh, troika-three-text, postprocessing, maath, three-stdlib — MIT ecosystem parts, adopted not rebuilt (license notebook: packages/vendor/licenses.json) |
@3jse/ir |
The Gameplay IR: interpreter, JS/TS emitters, source-mapped round-trip between graphs and code |
@3jse/animation |
Animation graphs, state machines, blend trees |
@3jse/character |
CharacterController, camera rig |
@3jse/physics-rapier |
Rapier physics integration |
@3jse/water-poseidon · @3jse/foliage-gaia · @3jse/flora-dryad · @3jse/terrain-demiurge |
Tier A wraps of the Owen pantheon, vendored at pinned commits (packages/vendor/upstream/) — pure cores re-exported, rendering halves next |
@3jse/save |
Save/load service and storage backends |
# requirements: Node.js 20+, pnpm 11 (corepack enable)
git clone https://github.com/xirtus/3JSE.git
cd 3JSE
pnpm install
pnpm dev # launch the editor
pnpm build # build all packages
pnpm test # run every test suite
pnpm typecheck # strict type-check the monorepoA desktop-class, dockable GUI — viewport, hierarchy, inspector, content browser, graph editor, profiler — editing a live runtime in-process: play, pause, inspect, modify, resume. No rebuild, ever. It ships three ways from one codebase: browser (share a project by URL), Tauri desktop (the primary target), and games built with it never depend on the editor at runtime.
| Panel | What it does |
|---|---|
| Viewport | Live WebGPU render, gizmos, camera navigation, stats overlay |
| Hierarchy | Entity tree with prefab instances visually distinguished |
| Inspector | Schema-generated component editors, multi-edit diffing |
| Content Browser | Assets — meshes, textures, audio, prefabs, graphs — tagged, searchable, thumbnailed |
| 3JSE Graph | Full-tab node canvas for gameplay logic |
| Material / Shader Graph | Node editor compiling to Three.js TSL |
| Code Editor | Embedded Monaco-class TypeScript editing with LSP |
| Animation Tools | Timeline, state machines, blend trees, skeleton view |
| Physics Editor | Collider gizmos, constraint authoring |
| UI / HUD Editor | Retained-mode layout canvas |
| Profiler | Frame timing by system, draw call, GPU pass |
| Console | Logs, warnings, errors — clickable to source, TS line or graph node |
| Debugger | Breakpoints, step, watch — across TypeScript and 3JSE Graph |
| AI Panel | The Agent API surface: observe → plan → act → verify |
Dependency-ordered, not calendar-ordered — each phase proves what the next one depends on.
| Phase | Goal |
|---|---|
| 0 — Technical experiments | De-risk the bets: IR round-trip, ECS-over-Object3D performance, editor shell |
| 1 — Editor MVP | Build a scene visually with zero hand-written code |
| 2 — Gameplay Engine | Components, prefabs, physics, input, saves, animation — a real game |
| 3 — 3JSE Graph | Visual scripting that compiles to the same IR as TypeScript |
| 4 — AI-native authoring | The Agent API loop — the engine an AI can operate |
| 5 — Professional tools | Terrain, cinematics, VFX graphs, navigation |
| 6 — Ecosystem | Templates, package sharing, multiplayer |
| 7 — Unreal-class workflow | The full studio-grade suite, on the web platform |
Full details in docs/ROADMAP.md.
Status: 3JSE is in active, early development (Phases 0–2). The architecture is designed and documented; the foundations are being poured. Expect breaking changes — this is the moment to watch, shape, and build with it.
| Area | Docs |
|---|---|
| 🧭 Core | Vision · Architecture · Runtime · Entity-Component Model · World System · Gameplay IR · Visual Scripting · Editor · Gameplay Framework |
| ⚙️ Systems | Physics · Animation · Audio · Rendering · Networking · Performance |
| 📦 Pipeline | Asset Pipeline · Project Format · Build & Deployment · Templates |
| 🤖 Platform | AI Agent API · Plugin Architecture · Vendor Integrations · Verse Compatibility |
| 🌐 Project | Website · Shop |
3jse.com is the official website of the 3JSE project — owned by the project, live now, and maintained as part of this repository (site/). It carries the promotional landing page and the full design manual, baked from docs/ so it can never drift from the engine itself. Keeping it current is part of the project: docs changes ship with a regenerated manual, positioning changes update the landing page in the same PR. See docs/WEBSITE.md and the deploy runbook in site/README-DEPLOY.md.
node site/build-manual.mjs # regenerate site/manual.html from docs/3JSE is open source and just getting started — stars, issues, ideas, and pull requests all move it forward. If you've hand-built a scene-hierarchy UI, an undo stack, and a component system for the third time across three projects: this is your engine now.
See docs/ARCHITECTURE.md for the design principles before contributing.
GPL-3.0 — free software, forever.
The web is the biggest platform on Earth. It deserves a first-class engine.
⭐ Star this repo and build the future with us.