The editor · live, in your browser

A 3D scene editor, right here.

This is the real editor — not a video. It runs entirely in your browser: place spawns, sculpt terrain, scatter foliage, drop in your own .glb models, and export the scene. Nothing uploads; everything stays local to you.

Open fullscreen ↗or use it right below
jgengine editor — runs entirely in your browser
fullscreen ↗

Tip: 📂 Open scene loads an editor.scene.json, 🧊 Add assets pulls in your own models, and Export / Ctrl+S saves the scene back to your machine.

What's in it

A full authoring toolset, not a toy

🧭

Gizmos & selection

Click to select — markers, volumes, paths, notes. Move / rotate / scale with snapping, multi-select drags, an outliner, and a full inspector.

⛰️

Terrain sculpt & paint

Raise, lower, smooth, flatten, ramp, and noise brushes on a live heightfield — then paint material layers with weighted blends. Every stroke is one undo step.

🌲

Foliage & scatter

Lasso a region and get deterministic, GPU-instanced foliage with density, species palettes, slope/height masks, and clearance zones that keep gameplay clear.

🧱

Prefabs & collections

Extract a selection into a reusable prefab, stamp fresh instances anywhere, and bookmark named selection sets with lock/color/visibility groups.

🎬

Edit · walk · play

Freeze the sim and inspect, roam in the game's own camera, or drop into the real game — the F2+E chord, session preserved across every mode switch.

🤖

Headless agent RPC

Every verb the UI has is scriptable. Agents author scenes, assert content, and screenshot — no user-launched server, no WebGL required for document edits.

Standalone

Now outside the repo — for your own projects

You don't have to be building a JGengine game to use the editor. Run it on any folder: it opens that folder's editor.scene.json, treats every .glb/.gltf under it as a placeable asset, and Ctrl+S writes the scene back. There's a desktop build too.

CLI · any folder

terminal
# opens the 3D editor in your browser on ./
npx jgengine editor
# or point it somewhere, with a models folder
npx jgengine editor ./world --assets ./models

Embed · your own app

Editor.tsx
import { StandaloneEditor } from "@jgengine/editor";
// The same editor games ship, mounted over a blank world —
// open a scene file, drop in a folder of .glb/.gltf models.
<StandaloneEditor sceneId="my-scene" />;

Author once, render generically

The scene is data — not code you hand-write

Coordinates live in one document, editable in 3D like a scene in Unreal. The render and the gameplay both read it, so there are no waypoint arrays pasted into game code and no per-segment path meshes to maintain.

  1. 01

    Author

    Place and shape everything in the editor viewport.

  2. 02

    Save

    Ctrl+S writes editor.scene.json — plain, importable JSON.

  3. 03

    Render

    <AuthoredScene> drapes paths, instances foliage, and drives collision.

  4. 04

    Reuse

    Gameplay reads the same document — one source of truth.

Scene.tsx
import { AuthoredScene } from "@jgengine/shell/scene";
// Everything you placed in the editor — paths draped on terrain,
// foliage instanced, gameplay spots — renders from one document.
<AuthoredScene document={sceneDoc} field={ctx.world.ground} />;
terminal
# headless: drive the live editor from an agent, no clicks
bun run drive the-robots --mode editor \
--rpc '{"method":"set_transform","id":"boss","x":-90,"z":-650}' \
--rpc '{"method":"export_document"}'

Open the editor on anything.

No install, no game required. One command and you're placing objects in 3D.

$npx jgengine editor

See what you'd build it into on the capabilities page.