OpenXcom requires a vanilla version of the original UFO: Enemy Unknown / X-COM: UFO Defense (any edition) with the latest patch. It is not compatible with other games in the X-COM series. If you don’t own a copy, you can buy it from one of these retailers.
Do not use modded versions of X-COM, as they may be incompatible with OpenXcom.
Check the Installation documentation for more details.
These builds are automatically generated from the codebase, so they have the latest fixes and updates as well as the latest bugs. Use these to try the latest features or check if a bug is obsolete. Do not install these on top of 1.0!
Maintained by SupSuper
The EXE version has an installer while the ZIP version is standalone. For more details see the FAQ. Latest version is at the top and includes all previous versions:
Ulrich Spörlein, Tue Nov 10 18:38:36 2020
Install the man page automatically.
CMake however does not compress the manpage, as would usually be the
case. Package maintainers will have to take care of that themselves.
Ulrich Spörlein, Tue Nov 10 18:10:16 2020
Rewrite manpage using mdoc macros, add -master flag and a bit of
This uses semantic markup instead of the nonsense that xmlto produces.
It passes `mandoc -Tlint`, except for the "legacy" date format.
If I would've had googled before, I might've found
https://openxcom.org/forum/index.php?topic=396.0 which has a perfectly
fine mdoc manpage already (though with a bit less detail).
This will give all *nix systems access to a manpage w/o the need to
install xmlto (and potentially all of LaTeX etc).
Ulrich Spörlein, Tue Nov 10 17:18:58 2020
Dump the xmlto'ed version of the manpage in here.
The result is quite ... underwhelming.
Ulrich Spörlein, Tue Nov 10 16:40:44 2020
Rename the manpage file, before editing it.
The edit would break git's rename detection, so I'm doing this in 2
steps to have `git log` be able to follow the trail of this file around.
Ulrich Spörlein, Tue Nov 10 16:23:58 2020
Switch instructions to do an out-of-tree build, as is generally
recommended these days.
Ulrich Spörlein, Tue Nov 10 16:02:33 2020
Update list of build systems
This was dropped when the README merger was dropped from pull request #1280
Meridian, Sat Nov 14 11:34:51 2020
Fix sprite size
Yankes, Tue Nov 10 22:45:15 2020
Fix missed case
SupSuper, Thu Nov 12 02:29:08 2020
Add Doxygen setting
SupSuper, Thu Nov 12 02:28:44 2020
Fix sound format options missing fallback
SupSuper, Tue Nov 10 05:26:21 2020
SupSuper, Tue Nov 10 05:20:34 2020
Ulrich Spörlein, Fri Nov 6 10:39:44 2020
Add the windows Travis build
- also add notes cross-referencing both CI systems
- skip the warning summary of the windows compiler
- the MSBuild is a multi-build system that knows about Release vs.
Debug, so we need to explicitly ask for the Release build when
_building_, not just when _cmaking_ the build files.
Ulrich Spörlein, Fri Nov 6 10:35:14 2020
Skip the MacOS/gcc combo on Travis CI as we do for Github Actions
gcc is a wrapper for clang on MacOS and going the extra mile to install
a proper gcc is not worth it, as the linux build checks both.
While here, remove the obsolete ccache workaround, now that we've bumped
the base build image (and ccache package version)
Ulrich Spörlein, Sat Oct 24 22:20:31 2020
Inline the brewfile and cmake script and apt install yaml-cpp instead of
building our own copy on Linux (like MacOS does). This requires using a
newer base system (Ubuntu's Focal Fossa).
Use the ENABLE_WARNING flag from our CMakeLists file instead of yet
another place where compiler warnings are being set.
The brewfile change basically reverts
39c0929ea17b3242365ea56ca98225c71eb5bc94 which was obsoleted with
c13d540678301a9ee43a5ae70d6b7dcf57c9aec3 as we now have to brew update
anyway, and no longer need custom flags.
While here, turn on the arm64 builds, just because we can.
Ulrich Spörlein, Sat Oct 24 11:19:49 2020
Remove no longer needed warning flag suppressions
Also switch the compiler flags to use add_compile_options() instead of
And provide a note for how to use clang+libc++ on GNU/Linux systems, as
it's not immediately obvious.
Ulrich Spörlein, Sat Oct 24 11:09:08 2020
Compile without the GNU C++ 11 extensions (we don't need them)
This makes more sense for being cross-platform (*nix, MacOS, Win)
Ulrich Spörlein, Sat Oct 24 11:07:14 2020
Remove overriding of redundant flags that CMake already sets
We should just have 1 place to define warning flags or the C++ standard
Ulrich Spörlein, Sat Oct 24 21:08:20 2020
Delete pre-compiled header support
It's not being used by the CI workflow, so it seems to break often
(judging by the commit history of the Makefile).
ccache should alleviate build speed problems mostly, and C++20 modules
are the more proper fix long term.
Ulrich Spörlein, Mon Oct 12 12:55:57 2020
Remove autoconf support in favor of CMake
CMake is cross-platform and ubiquitous these days.
Debian, OpenSUSE and Gentoo use it, as do the CI scripts.
Ulrich Spörlein, Sun Oct 25 14:11:53 2020
Stop the charade
The windows build is using MSVC and under macOS the `gcc` binary is a
symlink to clang, so effectively we were compiling it with the same
The TravisCI build suffers from the same problem, btw.
We're also not using the matrix expansions, as we list all of our
potential builds under include explicitly. So just use that going
forward. To not duplicate the list of required packages, the apt
packages have been moved into a single list during install phase.
Switch to only uploading the bin/ directory, now that debugging build
breakages has finished. Do something special for macOS.
Ulrich Spörlein, Sun Oct 25 14:08:13 2020
Stop using in-tree builds and use the ENABLE_WARNING setting instead of
rolling our own custom flags.
Ulrich Spörlein, Sun Oct 25 13:23:11 2020
Move CI to ubuntu 20.04 and use the yaml-cpp package
Also upload artifacts (everything for now, to analyze the build) and
run a verbose build.
Oh, ignore the macOS homebrew update failures that seem to plague the
Github CI instances. We don't need super up-to-date packages anyway.
Malibu-Stacey, Mon Oct 26 21:52:10 2020
silence OpenGL deprecation warnings on MacOS 10.14+
Yankes, Sun Oct 25 02:51:00 2020
Final fix to 25y bug with throw
SupSuper, Wed Oct 14 13:15:26 2020
Make shuffle deterministic
SupSuper, Sat Oct 10 06:06:08 2020
Add missing Croatian characters
Meridian, Wed Oct 7 09:52:34 2020
Prevent AI frozen in place
I received a report of AI freeze, which looks like this:
1. AI runs setupEscape() and decides it should escape to the same tile
as it currently occupies (for whatever reason); _escapeTUs is set to 1
2. AI evaluation sets _AIMode to 3 (=escape)
3. at the end of the think() cycle, _escapeTUs is not reset
(because there is no need to move)
Starting from this point setupEscape() is not executed anymore,
because _escapeTUs != 0. And as long as the enemy sees (or knows about)
xcom, it will not re-evaluate. Thus every turn it will just stay where
it is without doing anything (only thing it can do are reaction shots).
The freeze breaks only after turn 20 (or other forced re-evaluate).
Or after save and reload... because _escapeTUs is not saved
and will get reset back to 0 after reload.
Ulrich Spörlein, Sat Sep 12 20:39:42 2020
Fix build with clang 10.0.1 on FreeBSD
This is needed in addition to "CXXFLAGS=-O2 -g -std=c++11" and disabling
-Werror (due to unused functions, clang seems to be rather strict here).
Also, the setFocus method wasn't actually overridden, but hidden, which
makes clang warn and given the default of -Werror also error out.
This can probably be done in a smarter way ...
Mac OS X
Maintained by Various
Check here for app builds.
Maintained by Krzysztof “Knapsu” Knapik
Download AppImage file, make it executable, and run. No need to install.
You can read more about the AppImage format here: http://appimage.org/