# JA2 Stracciatella: a community port of Jagged Alliance 2 with a Rust core

> JA2 Stracciatella ports the 1999 tactical game Jagged Alliance 2 to modern platforms while improving stability and providing a mod development platform. It still needs the original game's data files, and its licensing is a mix of public domain contributions, unknown provenance and the original publisher's source code agreement.

**ja2-stracciatella/ja2-stracciatella** — The continuation of the venerable JA2-Stracciatella project.

- Repository: https://github.com/ja2-stracciatella/ja2-stracciatella
- Website: https://ja2-stracciatella.github.io/
- Stars: 545 · Forks: 114
- Language: C++
- License: not declared
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/ja2-stracciatella-ja2-stracciatella

## What the project is, and what it is not

JA2 Stracciatella ports the classic 1999 PC tactical game Jagged Alliance 2 to a wider range of platforms while improving stability, fixing bugs and providing a mod development platform.

The description is precise about the two halves of that sentence, and they matter. The porting is the part that lets a twenty-five year old DOS-era game run on a current machine, and the mod development platform is the part that makes the port interesting to contribute to rather than merely convenient to play.

The project describes itself as community-driven open source, welcoming all, with a few maintainers keeping the big picture in mind and a long list of contributors. It is hosted on GitHub where it can be forked, customized, extended and collaboratively developed, and there is a Discord server for the community.

The repository layout shows the two technology stacks. There is a rust/ directory, a min-rust-version file, and an android/ directory, which is consistent with the topic tags naming rust, sdl2 and c-plus-plus. The C++ is the original game code, and the Rust is the modernised layer around it.

The project is not archived, the last push was on 2026-10-17, and the release history is v0.22.1 from 2025-10-05, v0.22.0 from 2025-09-28 and v0.21.0 from 2023-11-06. So the current line is a 0.22 series, and the gap between 0.21 and 0.22 is where the recent work sits.

## You still need the original game

The How to start the game section is the part that surprises people, and it is worth following exactly because the data files are not in this repository.

Step one is to install Jagged Alliance 2 on your computer, and the data files from the original game will be used by JA2 Stracciatella. Step two is to download JA2-Stracciatella from the project site, or manually compile it from the cloned git repository using COMPILATION.md.

Then there are two paths for pointing the game at that data. With the optional launcher, you start the launcher and use it to configure the game, it automatically creates the configuration file for you, and you set the JA2 Data Directory to point at the directory where the original game was installed. You can type the directory in or use the button to browse.

Without the launcher, you start the game the first time, it creates the configuration file at %USERPROFILE%\Documents\JA2\ja2.json on Windows or ~/.ja2/ja2.json on Unix-like systems, and you edit the game_dir parameter to point at the original installation, for example D:\games\ja2\ on Windows or /home/user/games/ja2-installed on Linux.

The launcher is the friendlier route and the manual route is the one that works on a system where the launcher will not run. Both end up editing the same thing.

The build side is CMake, with a CMakeLists.txt, a cmake/ directory, an appveyor.yml for Windows CI, a .ci/ directory, and GitHub Actions badges for the main CI plus AppVeyor and a Coverity scan badge. The mixed CI set is what you would expect from a project that has to build on several platforms and that has been running static analysis for years.

## Localisations are a configuration decision, not a build decision

The localisation handling is the detail that trips up people who installed a localised copy of the original game, and it is handled in two ways depending on whether you use the launcher.

With the launcher, if you have not installed the English version of the original game, you have to select the correct Game Version, that is, the localisation. Without the launcher, you have to start ja2.exe with a parameter telling it which version of the game you are using, for example ja2.exe -resversion FRENCH. The list of supported localisations is DUTCH, ENGLISH, FRENCH, GERMAN, ITALIAN, POLISH, RUSSIAN and RUSSIAN_GOLD, with RUSSIAN for the BUKA Agonia Vlasty release and RUSSIAN_GOLD for the Gold release.

That the two Russian releases need different codes is a small historical detail with a practical consequence. The original game shipped in more than one Russian edition, and they are not the same data, so picking the wrong one produces a game that looks broken in a way that is hard to diagnose.

There is also the note that if you downloaded a precompiled version, the archive may contain a set of bat files for all supported localizations, and the advice to run ja2.exe -help for a list of available options.

The split between the launcher and the manual path is consistent throughout the documentation. The launcher exists to remove the fiddly parts, and every fiddly part it removes is still documented so that you can do it by hand.

## A project with two licence layers and one unknown

The License section is the most careful writing in the README, and it has three layers.

The first is the project's own contribution policy. Unless specified explicitly in the commit message, all changes since commit 8287b98 are released to the public domain. That is the cleanest possible grant for a community project, and the commit reference gives a precise point at which the policy applies.

The second is the third party code inside the tree. All libraries in dependencies/lib-* have their own licenses, and the repository layout confirms there is a dependencies/ directory with the bundled libraries.

The third is the historical uncertainty. It is not known under which license Tron released his changes. All that is known is that the source codes were publicly available in his svn repository. The original project was started by Tron in 2006, and the work he did was cleaning up the JA2 sources and making them portable, with over 7000 commits in the original svn repository.

And the fourth is the original game. The original Jagged Alliance source code was released by Strategy First Inc. in 2004 under the Source Code License Agreement, and the licence text is in the repository as SFI Source Code license agreement.txt.

So the honest summary is that the modern contributions are public domain, the original publisher's code is under the SFI agreement, the bundled libraries have their own terms, and the port's own historical layer is of unknown status. The repository records the licence file, and the README states the position plainly rather than implying a single clean answer.

## The project predates GitHub and the history is in the Wayback Machine

The History of the Project section is short and it explains why a repository like this has a slightly unusual shape.

The project continues the JA2 Stracciatella project started by Tron in 2006. The original project homepage is no longer available, and the README points to two places where some history survives: the JA2-Stracciatella Q and A thread on The Bear's Pit forums, and the Wayback Machine. More history is available on the Stracciatella project homepage.

That a project from 2006 has a two decade long commit history spanning an svn repository, a GitHub repository and several CI systems is worth noting for a practical reason. The build system, the file layout and the configuration file format have all changed, and the documentation still reflects the current state, so a guide written for the svn era will not match the source tree.

The repository layout shows the current shape. There is a src/ directory for the game, a rust/ directory for the Rust components, an android/ directory, a dependencies/ directory for the bundled libraries, a docs/ directory, an assets/ directory, a cmake/ directory, a changes.md file that serves as the changelog, a contributors.txt file, and a version file. There is also a .agents/ directory, which is the newer convention for instructions aimed at coding assistants, alongside CONTRIBUTING.md and the .github/ workflows.

The project also takes part in Hacktoberfest, which the topic tags confirm, and the README invites contributions with a link to CONTRIBUTING.md.

## Conclusion

Adopt JA2 Stracciatella if you own Jagged Alliance 2 and want the 1999 tactical game running on a current system, with fixes and a modding platform on top. Do not expect it to remove the original game's data requirement, because the port reads the installed game's data rather than shipping its own. Before you build from source, read COMPILATION.md and the licensing section, since the port's own code is largely public domain but the original source was released under the Source Code License Agreement and the bundled libraries keep their own licences.

## FAQ

### What is JA2 Stracciatella and what does it need to run?

It is a community port of the 1999 tactical game Jagged Alliance 2 to a wider range of platforms, improving stability, fixing bugs and providing a mod development platform. It still needs the original game installed, because the data files from the original game will be used by JA2 Stracciatella.

### How do I point JA2 Stracciatella at my Jagged Alliance 2 installation?

With the optional launcher, you set the JA2 Data Directory to the original game's folder and the launcher writes the configuration file. Without it, the game creates the configuration on first run at %USERPROFILE%\Documents\JA2\ja2.json on Windows or ~/.ja2/ja2.json on Unix-like systems, and you set the game_dir parameter to the original installation directory.

### How do I run a localised version of Jagged Alliance 2 with JA2 Stracciatella?

You select the correct Game Version in the launcher, or start the game with a resversion parameter such as ja2.exe -resversion FRENCH. The supported localisations are DUTCH, ENGLISH, FRENCH, GERMAN, ITALIAN, POLISH, RUSSIAN and RUSSIAN_GOLD, with RUSSIAN for the BUKA Agonia Vlasty release and RUSSIAN_GOLD for the Gold release.

### What licence applies to JA2 Stracciatella?

Unless a commit message says otherwise, all changes since commit 8287b98 are released to the public domain, and the libraries in dependencies/lib-* keep their own licences. The original Jagged Alliance source was released by Strategy First Inc. in 2004 under the Source Code License Agreement, and the licence text is in the repository. The licence under which the earlier project changes were released is not known.

## Sources

- [Issues](https://github.com/ja2-stracciatella/ja2-stracciatella/issues)
- [ja2-stracciatella/ja2-stracciatella on GitHub](https://github.com/ja2-stracciatella/ja2-stracciatella)
- [Project website](https://ja2-stracciatella.github.io/)
- [README](https://github.com/ja2-stracciatella/ja2-stracciatella/blob/master/README.md)
- [Releases](https://github.com/ja2-stracciatella/ja2-stracciatella/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ja2-stracciatella-ja2-stracciatella
