Q3DM17FFA2D

Q3DM17FFA2D

That map floating in space — a fan homage to The Longest Yard.
No install, no login. Jump straight into an endless free-for-all in your browser.

ENTER THE ARENA

Desktop & mobile — you start as a spectator, then hit JOIN when ready.

Recent Changes full changelog →

2026-07-11Sound toggle & desktop options — mute with the new SOUND item or the M key (remembered between sessions), and press ESC mid-match for an options panel that toggles auto-combat and sound.
2026-07-11Real-device fix batch — the "vanishing sniper" on 120 Hz displays, phone weapon-bar taps, falling bodies hidden by deck walls, and weekly leaderboard history (◀ ▶ past weeks).
2026-07-10Mobile auto-mode — on a phone you just steer and jump; aiming, firing and weapon switching are automatic. Portrait uses the bottom half as the stick zone, spectators get audio and pinch zoom.
2026-07-10Fair bot vision (bots only see what you could see), stronger aim assist, grippier movement, height-colored deck outlines, rails on the top ledges, and a web leaderboard.
2026-07-10Per-character bot personalities (6 personas), weapon/character data modularized, jump-pad trajectory preview, binary snapshot codec (3× smaller), server-side accuracy tracking, and this landing page (game moved to /play).
2026-07-10Character overhaul — 6 archetype silhouettes with a full run/jump/land/pain/punch animation set, plus a gauntlet melee swing.
2026-07-10Mobile support — dual-thumb touch (floating stick + aim-to-fire), first-class portrait layout, fullscreen.
2026-07-10Aim assist — cursor magnetism, target hold, vertical auto-pitch, projectile landing ring: the key to making 3D combat work with a 2D cursor.

Play Guide

Endless FFA

A deathmatch that never stops rounding. Drop in and out anytime. When humans are few, bots fill the arena.

Falling = Death

The whole map floats in the void. Falling off — or getting knocked off — is all part of the skill.

Passkey Stats

Create a passkey from the menu to lock your name and track lifetime + weekly stats. Anonymous play is fine too.

Controls — Desktop

MoveWASD · SPACE jump (tap it on every landing to bunny hop — keep your speed)
Aim / FireAim with the mouse, left-click to fire. When the cursor is near an enemy, vertical aim is auto-corrected (crosshair red = locked, amber = auto-pitch tracking)
Weapons19 or wheel · Q last weapon
OtherTAB scoreboard · M mute · ESC menu (while spectating)

Controls — Mobile (auto-mode)

On touch devices the game runs in auto-mode: you steer, it shoots. The nearest enemy your weapon can reach (and see) is aimed and fired at automatically, and an empty weapon switches itself to the next loaded one.

MoveHold the bottom half of the screen in portrait, or the left half in landscape — a floating stick appears where your thumb lands
JumpTap the stick zone for one hop · in landscape, hold the JUMP button to auto-jump on every landing (bunny hop)
FireAutomatic — the red crosshair pins the current target. Holding a finger elsewhere force-fires, if you insist
Weapons / MenuAuto-switches when dry · tap the weapon bar to override · ☰ MENU top-right · pinch to zoom while spectating

Things that make you dangerous

Bots have personalities

Every player spawns as one of six characters (decided by their name), and bots behave the way they look — you can read their next move from their silhouette.

CharacterSilhouetteAs a bot
TROOPERBulky armor + dome helm + backpackBy-the-book soldier — grabs RL/SG, breaks off for health when hurt
RAIDERMohawk + goggles, lean buildJumpy rusher — never stops hopping, closes with the shotgun
SAURIANHunched lizard + tailCautious sniper — farms the railgun, holds the porch, keeps range
BONESSkeleton, ember eyesBerserker — never seeks health, fights point-blank to the death
CYBORGBoxy war-bot + antennaMethodical — no hopping, machinegun stream, stacks armor first
IMPHorns + barbed tailGoodie goblin — bolts for Mega/Quad the moment they spawn

Making Weapon & Character Data

Every weapon and character in this game is a single data-file module. There are no 3D models, no textures, no sound files — just a handful of numbers and primitive shapes — so adding a weapon means writing one file.

Weapon — shared/weapons/<key>.js

Combat stats (server-authoritative) and visual specs (barrel, projectile, muzzle) live in one file. The server combat code is generic over type (melee / hitscan / proj), so a new weapon needs no new code.

// shared/weapons/rl.js
export default {
  key: 'rl', name: 'Rocket Launcher', type: 'proj',
  damage: 100, splash: 100, radius: 120, speed: 900, refire: 800, life: 15000,
  ammo: { pickup: 10, box: 5 },
  gun:  { len: 24, r: 6.5, tip: 0xff8830 },          // the barrel you hold
  proj: { r: 9, color: 0xff8830, emissive: 2.0 },     // the flying projectile
  muzzle: { color: 0xff9540 },                        // muzzle flash
};

Register it with one import in shared/weapons/index.js — list order is the weapon-bar slot order.

Character — three files

shared/archetype.js         // append the key to ARCHS (name hash → identity, append-only)
client/src/chars/<key>.js   // look: rig skeleton params + build(ctx) primitive assembly
server/src/personas/<key>.js // bot personality: pref weapons, health/armor thresholds, hop rate, aggression…
// server/src/personas/raider.js — a bot's whole personality is this declarative
export default {
  key: 'raider', style: 'jumpy shotgun rusher',
  prefWeapons: ['sg'], healthSeekHp: 35,
  hop: 3, aggr: 1.15, idealScale: 0.7,
  missionBias: { porch: 0.5, mega: 0.8, quad: 1.8 },
};

The shared skeleton (two-segment legs, free arm, torso/head) and animation set (run, jump, landing squash, pain flinch, punch) are provided by the engine, so a character file only defines its silhouette and personality. The source is currently closed — send ideas or data contributions to [email protected].

About The Longest Yard

Quake III Arena in 1999 had no story. It had q3dm17 instead. I still remember the first time I dropped into that map — no floor, no sky, just a few platforms hanging over a starfield, and the realization that flying between them on jump pads was already a whole game. One railgun shot and you're falling into space; next round you're the one sitting on the porch.

The Longest Yard was the map that first taught me that level design is game design. No walls means nowhere to hide, and nowhere to hide means movement is everything. Two decades later I wondered whether that feeling could be rebuilt with nothing but a browser and web tech — this site is the answer. Not a single original file was opened; it's recreated from public screenshots and memory alone.

To the level designers at id Software, and to the friends who fell into space with me in those PC-room afternoons. — Woojin