Virtastic Show - [Jedi Academy Overview]

Jedi Academy

Star Wars Jedi Knight, in your browser

Released

Play Star Wars Jedi Knight: Jedi Academy in your browser. By Virtastic. Play now at jka.virtastic.app

A WebAssembly port of Raven Software’s original 2003 GPL source release, compiled with Emscripten. It runs entirely on your machine: the engine is WebAssembly, the game data is read from your own disk or from the free demo, and nothing is uploaded or streamed. Ghoul2 skeletal characters, the saber, and Force powers all work; the campaign runs end to end.

The port is deliberately conservative — games/jka/ is Raven’s pristine drop, and every browser adaptation is a separate reviewable commit on top, so git diff <import> -- games/jka is the port. No code is copied from OpenJK or iortcw. The engineering log, including theories that turned out to be wrong, is in docs/WASM_ADAPTATIONS.md.

Playing

Open https://jka.virtastic.app in desktop Chrome, Chromium, Edge or Brave, then pick a route:

  • Play the demo — the official free demo mission. Nothing to own, nothing to install.
  • Bring your own copy — point the picker at the GameData/base folder of a legal install and select the assets*.pk3 files (assets0, assets1, assets2, assets3). They are read straight from your disk; nothing is uploaded.

Saves and settings persist in the browser (IDBFS), independent of which data you loaded.

Windows tip: copy GameData somewhere outside Program Files first — browsers refuse to grant folder access inside protected system paths, and that is where Steam installs by default.

Single-player only. The multiplayer sources are part of the drop but are not built.

Quick start (Docker)

From a clean clone, with nothing but Docker installed:

docker build -t jka-web .          # compiles the engine from source
docker run --rm -p 8080:80 jka-web # http://localhost:8080

or simply:

docker compose up                  # http://localhost:8080

The first build pulls the Emscripten toolchain image and compiles for a few minutes; after that it is layer-cached. See SELF_HOSTING.md for serving it on a real server, and for how to add the free demo pak so the demo route works on your own instance.

What’s in this repo

This repo is code only. No game data of any kind is committed.

PathWhat it is
games/jka/Raven’s pristine GPL drop + the __EMSCRIPTEN__-guarded port commits
shared/wasm-build/env.sh (the toolchain pin), the Emscripten platform layer, build scripts, CDP test harnesses
shared/web/server.py — the COOP/COEP dev server, with HTTP-Range for pk3 streaming
play/jka/index.html (the game page) and launcher.html. Built .js/.wasm are gitignored
cloud/Optional Cloud Locker backend — OAuth sign-in plus S3 storage. Not required to play
infra/nginx.conf (the serving contract) and the Terraform DNS reference
ci/A reference Jenkins pipeline

Not included (kept local)

Retail .pk3 archives, the demo pak, build-jka/, the generated jka.js/.wasm/qagame.wasm, and node_modules/. The .gitignore and .dockerignore are written so game data cannot be committed or baked into an image by accident.

Building

Emscripten 6.0.1, pinned in shared/wasm-build/env.sh — source it rather than hardcoding flags. No -flto (it miscompiles the boot path). Single-threaded. Pure C++: no Rust, no -pthread, so the toolchain is just emscripten/emsdk:6.0.1 with nothing added.

Browser support

Desktop Chrome / Chromium / Edge / Brave. The folder picker uses the File System Access API, which Firefox and Safari do not implement; mobile is out of scope.

License

jka-web is licensed under the GNU General Public License, version 2 — see LICENSE and NOTICE.md.

GPLv2, not GPLv3. Raven’s drop grants version 2 and does not include the customary “or (at your option) any later version” clause for Raven’s own code, so the combined work cannot be relicensed forward.

  • Engine code under games/jka/ — Copyright (C) 2003 Activision / Raven Software, released by the copyright holder under GPLv2.
  • The port — the Emscripten platform layer, build scripts, the browser shell under play/, the test harnesses, and the optional cloud backend — is likewise GPLv2.
  • Bundled third-party components keep their own licenses; see THIRD-PARTY-LICENSES.md, which also records which of them are actually compiled into the WebAssembly binary.

Game data and trademarks

STAR WARS and JEDI KNIGHT are trademarks of Lucasfilm Ltd. and/or its affiliates. Activision and Raven Software are trademarks of their respective owners. This project is not affiliated with, endorsed by, or sponsored by any of them; the names are used only to identify the software this is derived from.

No retail game data is included in, or distributed by, this repository. The retail archives are commercial content and are not redistributable — you must supply your own legally-obtained copy, or use the official free demo mission.

Community

Security issues: please follow SECURITY.md rather than opening a public issue.

Credits

Raven Software and Activision, for releasing the engine sources under the GPL in the first place.

WASM port © 2025–2026 Virtastic. Built with the Claude Agent SDK.

Screenshots

Jedi Academy running in the browser, screenshot 1Jedi Academy running in the browser, screenshot 2Jedi Academy running in the browser, screenshot 3

What it took

Raven Software's original 2003 GPL source, compiled from C++ to WebAssembly with Emscripten. Jedi Academy runs in your browser, on your own machine, starting with the free demo mission: no copy of the game needed.

  • First visit downloads about 190 MB; after that your browser keeps it.
  • The free demo mission: nothing to own, nothing to install
  • Or your own copy of the game, read from your disk
  • Saves and settings stay in your browser

Status and how to help

Released. Raven's 2003 GPL source, single-player: the whole campaign with Ghoul2 characters, saber and Force powers, or the free demo mission.

Known issues

Every known bug is in the open issues on GitHub, so nothing is hidden.

Help us test

Try it in Chrome, Edge or Brave on a computer. If something breaks, report a bug with what you did, your browser, and what you saw.

GPL 2.0 · Source · Contributing guide · Code of conduct · Get involved

Get started

▶ Play Manual

Latest releases

Source on GitHub

Slide 1 Virtastic