MOBA — 5v5 Summoner's Rift Broadcast (Round 11 3D upgrade)
Real 3D Summoner's Rift. 10 heroes. Towers fall. Dragon slain. Nexus down.
What this is
A full 3D MOBA broadcast in a single HTML file — Round 10 was a 2D mini-MOBA, Round 11 is the rebuild at Halo CE multiplayer broadcast quality. Real 3D Summoner's Rift with 3 lanes, river, jungle, dragon/baron pits, foliage. 5v5 humanoid heroes drafted from a 24-hero roster. 18 lane towers + 4 nexus turrets + 6 inhibitors + 2 nexuses. Match flow: INTRO → LANING → MIDGAME → LATEGAME → REPLAY → MVP → auto-rematch. Forever.
Why this is mind-blowing
Director cameras switch every 5-8 seconds based on event priority — LeaderCam locks on the leader, TeamfightCam fires when 6+ heroes converge, ObjectiveCam swings to dragon/baron pits, TowerFallCam zooms on a falling structure. The killfeed scrolls, the scoreboard updates, the announcer fires "FIRST BLOOD" then "DOUBLE KILL" then "DRAGON SLAIN" then "NEXUS UNDER ATTACK." 230-second match cycle observed across LANING → MIDGAME → LATEGAME → MVP, then auto-rematch starts fresh at 250s with a new draft from the 24-hero roster. This is the broadcast. The 2D version was the rehearsal.
An autonomous 3D MOBA broadcast at Halo CE multiplayer quality. Real
3D Summoner's Rift map (3 lanes, river, jungle, dragon/baron pits,
bushes for vision, foliage). 5v5 humanoid heroes drafted from a 24-
hero roster, each with per-role Q/W/E/R abilities. Instanced minions
spawn every 30s and march toward enemy nexus. 18 lane towers + 4
nexus turrets + 6 inhibitors + 2 nexuses. Junglers slay dragon and
baron during the match. Match flow: INTRO → LANING → MIDGAME →
LATEGAME → REPLAY → MVP → auto-rematch. Director camera with shot
picker switching every 5-8s. Full broadcast HUD: scoreboard with
game time, killfeed with hero names, announcer banners (FIRST
BLOOD / DOUBLE KILL / TRIPLE / QUADRA / PENTA / DRAGON SLAIN /
TOWER FALLEN / NEXUS UNDER ATTACK / VICTORY), dual team rosters
with HP/MP/KDA/ult, floating HP bars, minimap. Auto-rematch
forever.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- InstancedMesh per minion type is the only way you fit 60+ creeps × 10 heroes × 28 towers × dragons + foliage into a single 3D scene at 60fps. One per-creep mesh would crater the framerate.
- Director cameras (LeaderCam / TeamfightCam / ObjectiveCam / TowerFallCam) with priority-based shot picking are what makes a MOBA broadcast watchable — without them you just see one clump of heroes and miss everything else.
- A buggy `dist2(ax,az,bx,bz)` callable that took 4 numbers but received 2 Vector3s caused every distance check in the game to return NaN. Heroes never engaged. One signature mismatch = entire engine non-functional. Always validate distance helpers.