Virtastic Show - [Jagged Alliance 2 Overview]

Jagged Alliance 2

Turn-based strategy, in your browser

Released

Play Jagged Alliance 2 in your browser. The JA2 Stracciatella engine, compiled to WebAssembly, by Virtastic. Play now at ja2.virtastic.app

ja2-web is a WebAssembly build of JA2 Stracciatella, the open-source engine for Jagged Alliance 2. It is cross-compiled with Emscripten so the whole engine - tactical combat, the strategic map, the laptop, sound - runs client-side in a desktop browser. There is no plugin and no streaming service. The engine runs locally and reads game data from your machine.

The engine tracks JA2 Stracciatella v0.22.1, plus local changes for the WASM target: threading and main-loop changes, an AudioWorklet sound backend, wasm-SIMD software blitters, browser-persistent saves, and a File System Access virtual filesystem, among others. WebAssembly adaptations is a writeup of how the native desktop engine was made to run in a browser tab.

Playing

Open ja2.virtastic.app in desktop Chrome (or Chromium / Edge / Brave), then:

  • Bring your own JA2. Point the browser at the Data folder of a legally-obtained Jagged Alliance 2 Gold install. Files are read straight from disk via the File System Access API and copied into the engine, so there is no upload to a server. The folder you pick is remembered for next time.
    • On Windows, first copy that Data folder somewhere outside a protected system location, such as your Documents or Desktop folder: browsers refuse to open folders inside Program Files, and Steam’s default library lives there.

Saves persist to disk in a ja2-web-saves folder inside the folder you picked (real files, via the File System Access API), so they survive clearing browser data and can be backed up like any other file. Config and the game log persist in the browser (IndexedDB) and survive reloads. A themed loading screen shows real mount progress on the way in.

The tactical (battle) screen renders at your full browser resolution - more of the sector is visible than the classic 640×480 - while the fixed-art screens (menu, laptop, A.I.M., strategic map) keep their original look. Add ?res=classic to force 640×480-everywhere.

Jagged Alliance 2 game data is not included or distributed here. You need your own legally-obtained copy to play. Vanilla JA2 (Gold) is what runs; expansions such as Wildfire are detected but load as vanilla and are not supported.

Browser support

Requires SharedArrayBuffer + WebAssembly threads (pthreads) and the File System Access API - desktop Chrome / Chromium / Edge / Brave. Firefox and Safari are not supported. Mobile and touch are out of scope (no on-screen controls).

Running your own instance

To run your own instance without building anything, grab a release and follow Self-hosting (nginx / Caddy / static-host examples). To build the engine yourself, see Building from source.

License

ja2-web is licensed under the GNU General Public License, version 3 or later. It is a derivative work of JA2 Stracciatella, which is GPLv3, so the combined work is GPLv3. The full text is in LICENSE.

  • Engine code (the source-ja2/ tree and the WASM build changes) is GPLv3, following upstream Stracciatella.
  • The front-end and tooling (play/, wasm-build/, fsroot/ config, scripts) is released under the same GPLv3.
  • Bundled dependencies keep their own licenses (SDL2, miniaudio, string_theory, and the rest) - see THIRD-PARTY-LICENSES.md.

Game data and trademarks

Jagged Alliance is a trademark of its respective owners. This project is not affiliated with, endorsed by, or associated with them. No Jagged Alliance 2 game data is included or distributed here; you must own and supply your own legally-obtained copy. The engine is an independent, open-source reimplementation (JA2 Stracciatella) and ships no copyrighted assets.

Community

Found a bug or want a feature? Open an Issue. Pull requests are welcome; see CONTRIBUTING.md.

Support the project

ja2-web is built and hosted by Virtastic. If you enjoy it, you can support us on Ko-fi or Patreon. It pays for the servers that keep ja2.virtastic.app free to play.

Credits

Screenshots

Jagged Alliance 2 running in the browser, screenshot 1Jagged Alliance 2 running in the browser, screenshot 2Jagged Alliance 2 running in the browser, screenshot 3

What it took

The JA2 Stracciatella engine, compiled from its C++ and Rust source to WebAssembly. The full campaign runs in your browser, on your own machine, reading your own copy of the game data.

  • Your browser needs access to a folder on your computer: Chrome or Edge on a computer.
  • The full engine, UI and campaign
  • Point it at your own legal copy of JA2 (Gold)
  • Keeps running in a background tab

Read how we did it, with the measurements and the mistakes.

Status and how to help

Released. Stracciatella engine, full campaign, tactical combat, Web Audio and UI, plays off original game data.

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 3.0 · Source · Contributing guide · Code of conduct · Get involved

Get started

▶ Play Manual

Slide 1 Virtastic