finds.dev← search

// the find

mrdoob/three-quake

★ 333 · JavaScript · GPL-2.0 · updated Aug 2026

A port of Quake to Three.js.

A full client-server port of Quake to the browser using Three.js for rendering, built by mrdoob (Three.js's creator). It ships with a Deno-based netcode server (WebTransport), the original shareware pak0.pak, and several community maps, so it's a working multiplayer Quake you can play at a URL, not just a renderer demo.

The client/server split is real, not decorative — server/ has its own netcode (net_webtransport_server.ts), lobby, room process manager, and mod server, meaning multiplayer actually works rather than being a single-player tech demo. There's an honest test suite (tests/) covering physics (sv_phys, pmove), entity/edict handling, and rendering edge cases like skins and subdivision, which is rare for a 'port a classic engine' side project. Shipping the shareware pak0.pak means it runs immediately with zero setup, and swapping in a full pak0.pak for the retail game is a documented one-line fix.

Code is GPL v2 (inherited from id Software's source), so anything reusing this codebase is bound by copyleft — fine for a game, a trap if someone tries to lift the renderer or netcode for something else. The README is minimal to the point of unhelpful: no architecture notes, no explanation of how the original C engine maps onto the src/ modules (gl_rmain.js, pr_exec.js, etc.), and the 'dev log' is a single tweet link, not docs. WebTransport is still a niche API with real gaps in Safari/older browsers, so the multiplayer path won't work everywhere despite the client running fine standalone. The README credits '@claude' alongside mrdoob for the port, which is worth knowing going in — worth spot-checking a few of the trickier files (pr_exec.js, sv_phys.js) rather than assuming hand-ported fidelity to the original.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →