A 3D game engine
for the web.

Mayhem is our real-time 3D engine for the open web, built for large worlds and big crowds in any genre. It renders, animates, collides, destroys and streams a 128-player battle today, and it loads from a link with nothing to install.

Production numbers

These are shipped numbers, not lab benchmarks. Every figure below is running in production today in our reference title.

128
Players in one match
Infantry, drivers and pilots together
43
Arenas shipped
Duel maps to 128-player battlefields
50+
Weapons
Ballistic, energy, beam, flame, power
26
Vehicle types
Ground, hover and air, crewed seats
10 ms
Frame budget
100 fps desktop target, judged on p99
60 fps
Phone target at 128
Same build, device-tiered
0
Installs
A link opens a match
150K
Lines of client engine
First-party JavaScript

Frame-rate figures are engineering targets that every change is measured against; achieved frame rate varies with hardware. Internal figures as of 1 Nov 2026.

Open standards underneath.
Everything above them is ours.

Mayhem sits on the web's open graphics stack (three.js on WebGL 2, KTX2/Basis textures, Draco and Meshopt geometry, WebAssembly decoders, worker threads). The systems on top, and the shared simulation that the client and server both run, are written in-house.

GAME LAYER Your game, rules, modes, UI, progression, content built in the Mayhem Editor MAYHEM ENGINE SYSTEMS RendererGPU skinning, instancingAO, post, device tiers AnimationMocap locomotionProcedural gait, ragdoll DestructionGibs, limb debrisSkinned + projected decals AudioProcedural Web AudioSpatial mix, announcer StreamingHashed arena packsKTX2, Draco, Meshopt SHARED SIMULATION, RUNS ON CLIENT AND SERVER Mesh collision, movement, weapons + ballistics, vehicle hulls, springs, contacts, nav graphs, bot brains One implementation, so the server's verdict and the client's prediction agree OPEN WEB PLATFORM three.js, WebGL 2, WebAssembly, Web Workers, Web Audio, Gamepad, Pointer Lock, WebTransport

Rendering 128 players at full detail

Big lobbies follow a visual-parity rule: a 128-player match must look like a 32-player one. Mayhem gets there by moving work onto the GPU instead of cutting quality.

  • GPU skinning and instancing draw every body in a full lobby without per-character draw-call cost
  • Compressed GPU textures (KTX2/Basis) stay compressed in video memory, not just on the wire
  • Screen-space ambient occlusion, tone mapping and post effects tuned per device tier
  • Device-tiered quality ladder: one codebase scales from gaming desktops to integrated GPUs and phones

Character animation

Characters blend motion-captured locomotion with procedural layers, so a player's intent is readable from across a map and their body reacts physically when hit.

  • Motion-capture locomotion clips drive the base gait, packed in a compact binary format
  • Procedural strafe gait and hand posing keep feet planted and weapons gripped in any direction
  • First- and third-person rigs derived from one skeleton, so what you see matches what others see
  • Real ragdoll physics for the body parts that were not blown off

One collision system shared by everything

Movement, projectiles, vehicles and bots all query the same triangle-accurate collision mesh. A bullet, a tank tread and a bot's path all agree on where the wall is, on the client and on the server.

Mesh-accurate collision

True triangle-mesh collision for large Blender-built levels, alongside fast box colliders for simple geometry.

Vehicle dynamics

Dedicated hull, spring, ground and contact solvers for wheeled, tracked, hover and air vehicles.

Ballistics

Hitscan and simulated projectiles with travel time, gravity and splash, judged with lag compensation by Turbine.

Destruction and gore

Physical destruction is part of the game's identity, and it is never cut for performance. The engine budgets for it instead.

  • Dismemberment with physical gibs and limb debris
  • Blood atlas and decals that wrap onto skinned, moving characters
  • Surface-projected decals on world geometry, with correct layer ordering
  • Vehicle wrecks and persistent battlefield damage across a match
Inferno weapon key art in Undersnow

Ground, hover and air vehicles

26 vehicle types across 10 classes: ground, hover and air, with crewed seats for drivers, gunners and passengers. Drop pods insert squads straight into the fight.

Rhino
Goblin
Whirly Bird
Transport
Drop pod
Road Hog on snow
Quad bike
Flyer

Bots that drive, fly and take objectives.

Server-side AI fills lobbies at every size, from a 1v1 warm-up to a 128-seat Conquest, and plays the same rules as humans.

  • Navigation graphs built on worker threads and baked into the server image, so a match starts warm
  • Squad tactics that act on what teammates have seen, not on hidden information
  • Drivers, gunners and pilots, including transport and convoy behaviour
  • Difficulty tiers and lobby backfill so a match is always full

World and asset pipeline

Arenas are authored in Blender against a strict export contract, compressed, content-hashed and streamed on demand. Only the arena you are playing is ever loaded.

Author

Blender contract

Separate collision and visual layers, named and validated on export. Hundreds of pipeline scripts automate the bake.

Compress

GLB + KTX2

Draco and Meshopt geometry, Basis-compressed textures and lightmaps, decoded by WebAssembly.

Ship

Hashed packs

Content-hashed arena packs are cached forever, and static files are Brotli-compressed once at build, not per player.

Play

Lazy load

One arena per match is loaded and released, keeping memory flat on phones in long sessions.

An in-game map editor, already shipping.

Forge lets players build maps inside the game using the same world builder the engine uses for official arenas. It is the seed of the Mayhem Editor.

Gold Mud arena Lancefall arena Elderwild arena Permafrost arena Blaster City arena Relic Crossing arena

Performance measured on the slowest frames

Averages hide stutter. Every performance change in Mayhem is judged against a 10 ms frame on p99 and 1% lows, on real hardware tiers, with automated rails that fail the build when a change regresses.

AreaHow Mayhem handles it
Frame budget10 ms target on desktop (100 fps), 60 fps on phones in 128-player lobbies; judged on p99 and 1% lows
MemoryOne arena resident per match; previous arenas released on exit; GPU textures kept compressed
LoadContent-hashed packs cached across visits; Brotli precompressed at build; nav baked ahead of time
ThreadsDecoders and heavy builds run in workers and WebAssembly, off the main thread
ScalingDevice-tiered quality ladder chooses settings per GPU class; one codebase for desktop and mobile
Regression control1,400+ automated verification rails covering netcode, maps, performance and security

Next: Turbine, the netcode

Rendering 128 players is one problem. Keeping all 128 of them in sync, and fair, is the other.