Sandbox
Real-time crowd simulation

Build crowd scenes
in seconds

Genji lets you compose, configure, and simulate hundreds of historically costumed NPCs directly in the browser.

Try without account
60 fps
even at thousands of NPCs
10,000
characters in one scene
8
character classes
GLB
export + live API

Crowds shouldn't take a crowd of people to build

The problem

Populating a scene with a believable crowd is one of the slowest parts of building historical or period environments. Hand-placing hundreds of characters is tedious, every clone looks identical unless someone manually varies costumes and colors one by one, and rendering that many detailed meshes usually tanks performance long before you hit a scene that actually feels full.

The solution

Genji composes, costumes, and simulates a crowd entirely in the browser. Pick a layout, dial in the character mix, and hundreds of NPCs spawn instantly — each with randomized height, garment color, and walking pace so nothing repeats. GPU instancing keeps it running at 60 fps from a handful of characters up to 10,000, with every setting live-tunable and nothing to install.

Character system

One skeleton, hundreds of costumes

Every character shares one 72-joint skeleton — mix and match body, face, and hair independently, no per-outfit rigging.

365

Unique costume combinations

11 body types × 10 faces × 9 hair/headwear styles, all bound to the same shared skeleton. One GLB download contains every part.

8

Historically distinct classes

Laborers, merchants, soldiers, court officials, the emperor, Shaolin monks, Daoist sages, and wandering swordsmen — each with authentic costume variation.

9

Animation clips, pre-retargeted

8 idle variants plus a walk cycle, already retargeted to the shared skeleton. No animation rigging work on your end.

🎨

Per-character coloring

Garment color (HSL), skin tone, and hair color are set independently per character — no two NPCs in a crowd look identical.

📏

Scale & pose variation

Uniform scale jitter and animation phase offset per character keep a crowd from reading as cloned or lockstepped.

📉

Automatic LOD

A lower-poly GLB variant ships alongside the full-detail skeleton — swap it in for distant characters with zero extra pipeline work.

Layout & composition

Compose a scene, not just a headcount

Five boundary shapes, procedural terrain, and deterministic seeding — the same recipe always produces the same crowd.

5 boundary shapes

Circle for plazas, square for courtyards and markets, donut for coliseum and procession crowds with a clear center, road for a continuous linear flow, and spline for a custom path.

Procedural terrain

Fractal, smooth, or ridge noise generates rolling hills or dramatic peaks — every character automatically follows the ground height beneath them.

Random or grid distribution

Scatter characters naturally within a zone, or lock them to a grid for a parade-ground look — switchable per recipe.

Deterministic, seeded generation

Every crowd is generated from a seed. The same seed always reproduces the exact same characters, positions, and colors — reproducible builds, easy QA, version-controllable scenes.

Crowd behavior

A live simulation, not a static prop dump

Every recipe carries real steering parameters, not just spawn points — the crowd actually behaves like one.

ParameterWhat it controls
collisionRadiusNPC body size for avoidance — how close two characters can get before steering apart.
personalSpaceCentering and path-following strength — how tightly characters stick to their intended route.
anticipationHow early a character starts steering around an obstacle, from reacting on contact to planning ahead.
obstacles[]Static avoidance discs — drop props or terrain features the crowd routes around automatically.
paceFraction of the crowd walking vs. standing idle, tunable from all-static to all-moving.
walkSpeedMin / walkSpeedMaxPer-character speed range, so walkers don't move in lockstep.

Performance & rendering

Two rendering paths, pick your scale

A simple path for a few hundred characters, and a GPU-instanced path that keeps scaling past a thousand.

Per-character cloning

Standard SkeletonUtils.clone() + one AnimationMixer per character. Simple to integrate, fine up to a few hundred characters on screen.

GPU-instanced rendering

A single baked bone-matrix texture drives the whole crowd through one InstancedMesh per body/face/hair part — ≤36 draw calls total, regardless of crowd size. Ships with a reference SDK and a live demo.

Compose, configure, spawn

1

Compose

Pick a boundary shape and size, then dial in the character mix — laborers, soldiers, monks, court officials, and more — as a percentage of the crowd.

2

Configure

Tune movement speed, collision and avoidance, and appearance variation live, watching the crowd update in real time as you drag each slider.

3

Spawn & export

Hit Simulate to watch it walk, save it to your account, or pull the same crowd into Unity, Three.js, or any GLB-compatible engine via the API.

Built for
🎮

Game studios

Background NPCs for open worlds and set pieces.

🧑‍💻

Indie devs

A crowd system without building one from scratch.

🎬

Virtual production

Background talent for previs and virtual sets.

🏛

Historical & education

Populate recreated cities, markets, and courts.

Historically costumed, out of the box

Eight character classes, each with authentic period costume variation — no other crowd tool starts here.

Laborers

Workers & commoners

Merchants

Traders & shopkeepers

Soldiers

Infantry & guards

Court Officials

Bureaucrats & scholars

Emperor

Imperial dragon robes

Shaolin Monks

Martial & monastic

Daoist Sages

Robed philosophers

Swordsmen

Wandering warriors

Every layout, in motion

Real clips from the live editor — not mockups.

Boundary shape

Circle

Circular crowd area — NPCs move freely within a round boundary. Set the boundary radius to size the space, and the spawn radius controls how tightly grouped they start out, so the same shape works for a small huddle or a sprawling plaza crowd. It's the default for a reason: fast to set up and reads naturally in almost any scene.

Boundary shape

Square

Square crowd area — NPCs move freely within a rectangular boundary. Ideal for courtyards, market squares, and any layout where you need hard edges instead of a rounded footprint. Combine it with grid distribution for a parade-ground look, or random for a busy open-air market.

Boundary shape

Donut

Ring formation — NPCs orbit in a circular track between an inner and outer radius, leaving the center of the scene clear. Great for coliseum crowds, processions around a monument, or any composition where the focal point needs to stay open while people move around it.

Boundary shape

Road

Linear road — NPCs walk along a corridor end to end and wrap around, so the flow never runs dry. Pair it with Single point distribution and the crowd-rate control to stream a continuous line of pedestrians through a street, hallway, or bridge at whatever pace the scene calls for.

Distribution

Random distribution

Spawn NPCs at random positions within the zone for a natural, scattered look — instead of a uniform grid. This is what sells a crowd as real rather than staged: no two clusters line up the same way twice, and reshuffling the seed instantly gives you a fresh arrangement to compare.

Surface

Terrain

Procedural terrain with hills and valleys — NPCs automatically follow the height of the ground beneath them, no manual placement required. Choose fractal noise for organic rolling terrain, smooth for gentle slopes, or ridge for dramatic peaks, all tunable live without leaving the browser.

For developers

It's an editor. It's also a crowd engine.

Every crowd is addressable by ID. Fetch it as JSON — per-character mesh IDs, positions, colors, animation state, and GLB URLs — and drop it straight into your own renderer.

One shared skeleton, 36 modular parts, deterministic seeded generation, and GPU-instanced rendering for crowds of 1000+. No rigging, no per-character animation work, no lock-in to the browser editor.

🧩 Unity / Tuanjie 🌐 Three.js 📦 Any GLB engine 🤖 MCP (Claude, Cursor) 🇨🇳 English + Chinese docs
// One crowd, fetched by ID
const res = await fetch('https://your-host/v1/crowd/cr_sample01', {
  headers: { Authorization: 'Bearer YOUR_KEY' }
});
const { characters, assets } = await res.json();

// characters[] — body/face/hair IDs, position, rotation,
// garment color, animation clip — every character distinct
// assets.bone_tex_bin — GPU-instanced path for 1000+ crowds
console.log(characters.length, 'NPCs ready to render');
What the API gives you
🧬

One skeleton, 365 combos

11 bodies × 10 faces × 9 hair styles, all on a single shared rig. No per-outfit rigging.

🎲

Deterministic seeds

Same seed, same crowd, every time — reproducible builds and easy QA.

GPU-instanced at scale

≤36 draw calls for the whole crowd, regardless of size. Reference SDK included.

🚶

Real crowd behavior

Collision avoidance, personal space, early steering, tunable walk-vs-idle pace.

🎨

Every NPC is distinct

Individual position, scale, garment color, skin tone, and animation phase — no clones.

🗺️

5 layouts + terrain

Circle, square, donut, road, spline — plus procedural terrain height-following.

📉

Automatic LOD

A lower-poly GLB ships alongside every crowd — swap it in for distant characters.

📖

Self-documenting

OpenAPI 3.0 spec, bilingual docs, and a working sample key baked into every response.

🤖

AI-native

MCP server built in — Claude and Cursor can fetch and drive crowds mid-conversation.

Simple, transparent pricing

Start free. Upgrade when your project grows.

Free
¥0 / mo
  • 500 crowd operations / mo
  • 1 API key
  • All layouts and terrain
  • Save and share crowds
  • Watermarked / limited assets
Most popular
Creator
¥99 / mo
  • 50,000 crowd operations / mo
  • Unlimited crowd size
  • Full API access, clean assets
  • Usage insights dashboard
  • No watermark
Coming soon
Studio
Coming soon
  • Larger monthly operation quota
  • Unlimited crowd size
  • Multiple API keys
  • Production licensing
  • Priority support
Enterprise
Custom
  • Unlimited characters
  • No watermark
  • Unlimited API keys
  • SLA + dedicated support
  • Custom integration help
Contact us

Prices in RMB. Alipay and WeChat Pay accepted. Billed monthly, cancel anytime.

Frequently asked questions

Can I use crowds I build commercially?

Yes. Anything you compose and export is yours to use, including on paid plans that remove the watermark. Crowd size is unlimited on every plan — pricing is based on monthly API operations, not how many characters are in a crowd.

What engines does Genji work with?

The editor runs entirely in the browser. Exported crowds come back as GLB assets with per-character transforms, so they drop into Unity, Three.js, or any engine that can load a GLB — no proprietary format.

What do I get on the free plan?

Every layout, terrain, and character type, with saved and shareable crowds, plus 1 API key and a monthly allowance of crowd operations to try the API. Assets are watermarked / limited on Free. Upgrade to Creator for clean assets and a much larger monthly quota.

Can I drive Genji from an AI tool?

Yes — Genji ships an MCP server, so tools like Claude and Cursor can list, fetch, and save your crowds directly as part of a conversation, no separate script required.

Do I need to install anything?

No. Compose and simulate crowds directly in the browser at any time — nothing to download for the editor itself. The API and MCP server are for pulling a crowd into your own project.

See all FAQs →

Start building crowds in seconds

Free to try, no install, no credit card.

Try without account