Native arena, web delivery
Quake 3 Powered by WebAssembly
Q3JS brings the ioquake3 runtime to the browser instead of imitating it. WebAssembly executes the engine, the canvas renders the arena, and a gateway connects web networking to a dedicated server.
Live runtime path
Web browser
Input · canvas · IndexedDB
ioquake3 / WASM
Game engine · OpenGL 2
WebSocket gateway
Browser traffic → UDP
Dedicated server
Maps · players · game state
- Engine
- ioquake3
- Runtime
- WebAssembly
- Renderer
- OpenGL 2
A complete browser runtime
Running the engine is only one part of the job. Q3JS also adapts files, graphics, networking, and input for the web.
Engine
Compiled with Emscripten
The ioquake3 codebase is built as JavaScript and WebAssembly so modern browsers can execute the game runtime.
Rendering
OpenGL 2 on canvas
The engine's OpenGL 2 renderer draws through the browser canvas while preserving the familiar Quake III presentation.
Networking
WebSockets meet UDP
Browser-safe WebSocket traffic passes through a gateway to the UDP protocol used by the dedicated server.
Storage
Persistent local files
Compatible browsers keep game assets and runtime state in IndexedDB, avoiding unnecessary repeat downloads.
What happens when you join
The website hands the selected server and its assets to a framework-independent browser client.
- 01
Prepare the files
Q3JS reads the server's asset manifests and restores matching files from persistent browser storage.
- 02
Start the engine
The WebAssembly runtime mounts its virtual filesystem, configures the renderer, and launches ioquake3.
- 03
Connect to the arena
The client opens a WebSocket to the server gateway, which bridges the browser session to the game server.
Questions
Is Q3JS a recreation of Quake 3?
No. Q3JS compiles the ioquake3 engine for the web with Emscripten and WebAssembly, then connects it to browser-specific storage, input, and networking.
How does a browser connect to a Quake 3 server?
The browser client uses a WebSocket connection. A Q3JS gateway translates that traffic for the UDP-based dedicated game server.
Does Q3JS include proprietary Quake 3 game data?
No. Q3JS does not include or download proprietary Quake III Arena data. Operators must provide game data they are legally entitled to use.
See it running
Choose a live server and launch the WebAssembly client directly in your browser.