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

01

Web browser

Input · canvas · IndexedDB

02

ioquake3 / WASM

Game engine · OpenGL 2

03

WebSocket gateway

Browser traffic → UDP

04

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.

  1. 01

    Prepare the files

    Q3JS reads the server's asset manifests and restores matching files from persistent browser storage.

  2. 02

    Start the engine

    The WebAssembly runtime mounts its virtual filesystem, configures the renderer, and launches ioquake3.

  3. 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.