Opensource rebuild of the XCOM Apocalypse Engine
C++ CMake Other
Latest commit 00e2f6b Jan 3, 2017 @JonnyH JonnyH Add a tool to deal with serialization archives
Allows packing/unpacking/merging/pretty printing/creating 'delta' states
Failed to load latest commit information.
.tx Update translations - pull all strings into one file Mar 22, 2016
cmake Try to add PCH using cotire to cmake Oct 23, 2016
data Remove unnecessary <sp>/<up> nodes in the serialised xml Jan 2, 2017
dependencies Disable time support in miniz Nov 29, 2016
forms Remove explicit UString->char* conversion in Logging Nov 10, 2016
framework Fix saving zip archives to PWD Jan 3, 2017
game Add a 'pretty' option to serializers Jan 3, 2017
library MSVC build fix Jan 2, 2017
temp PCK Compression Mode 1 fully supported Jul 15, 2014
tests Add stream output operators for Vec2/Vec3/Rect Nov 10, 2016
tools Add a tool to deal with serialization archives Jan 3, 2017
.clang-format Update clang-format config to 3.8.0 Mar 26, 2016
.clang-tidy Fix clang-format typo Aug 24, 2016
.gitattributes Disable line-ending normalization on xml files Apr 2, 2016
.gitignore Add *.TMP to gitignore Oct 20, 2016
.gitmodules Try out tinyformat instead of boost::format Nov 7, 2016
.travis.yml Remove xvfb from travis-ci Dec 12, 2016
CMakeLists.txt cmake: Make format-sources only format 'known' dirs Nov 3, 2016 Move code style to use clang-3.8 Sep 15, 2016
LICENSE Rename License to LICENSE Jul 23, 2014
OpenApoc.sln Rework form/font/alias loading Nov 2, 2016 Rework form/font/alias loading Nov 2, 2016 Obsolete Aug 24, 2016
Vagrantfile Vagrantfile: use a 2GiB box Dec 12, 2016
apocicon.ico Start of PCK code Jul 11, 2014
apocicon.rc Fix window icon. Oct 24, 2015
appveyor-dev.yml Disable appveyor debug builds Oct 9, 2016
appveyor.yml Appveyor windows build: Put debug info (pdb) in separate package Dec 29, 2016
clang_format_win.bat Correct day formatting in date_facet. Aug 15, 2016
gen_version_win.bat Add gen_version_win.bat for windows builds Sep 10, 2015 Add version.h generated from git describe Sep 10, 2015


The OpenApocalypse project aims to build a open-source clone of the original X-COM: Apocalypse strategy game.


OpenApoc is in early development - it is not yet 'playable' as a game. All help is appreciated, but there's little point trying to 'play' is as yes

See the BIG TODO LIST for more info

Current build status:

Linux: Linux Build Status Windows: Windows Build Status

Contact us

If you're interested, please visit us at We have forums at - please pop by and introduce yourself! We also have an IRC channel on - #openapoc


OpenApocalypse is built leveraging a number of libraries - to provide needed functionality (and save us the time of implementing it ourselves badly)

  • SDL2
  • GLM
  • Libunwind - debug backtracing on linux
  • Boost - specifially the 'locale' library, used for localisation


  • This assumes that you have the file 'cd.iso' - a copy of the original X-Com Apocalypse CD (This can be got from steam for a pittance - this is required to run)

Building on Windows: (Tested with Visual Studio 2015 community edition - Visual Studio 2013 is known to fail to build)

  • Checkout OpenApoc from github All the required dependencies (SDL2, physfs, ICU) are packaged as submodules. These submodules are fetched automatically if using the github for windows app, so if you are please skip the next step
  • From a Git command line, run the following to fetch the dependency packages
git submodule init
git submodule update
  • Open openapoc.sln in Visual Studio
  • Build (Release/Debug x86/x64 should all work)
  • Before running, copy the 'cd.iso' file into the 'data' directory in the root of the git project. -- When running from the Visual Studio UI, the working directory is set to the root of the project, so the data folder should already be in the right place. If you want to run outside of Visual Studio, you need to copy the whole 'data' folder (including the cd.iso file) into the folder openapoc.exe resides in

Building on Linux (tested on ubuntu 14.04.3 - other distributions will probably need different packages to install - see the dependency list above)

  • Install the following packages: libsdl2-dev glm cmake build-essential git libboost-locale-dev libboost-filesystem-dev libboost-system-dev
sudo apt-get install libsdl2-dev cmake build-essential git libunwind8-dev libboost-locale-dev libboost-filesystem-dev libboost-system-dev
  • Checkout OpenApoc from github
  • Fetch the dependencies from git with the following terminal command (run from the just-created OpenApoc folder)
git submodule init
git submodule update
  • Build our patched Physfs -- You can do this by typing the following command in a terminal from the dependencies/physfs directory:
cd /path/to/OpenApoc/dependencies/physfs
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .

-- Install the patched physfs with the following command in the terminal (also in the physfs directory - providing your password if prompted). By default this will install physfs system wide under /usr/local.

sudo make install
  • Configure and install the dependencies version of GLM (libglm-dev in ubuntu 14.04 is old and doesn't seem to work)
cd /path/to/OpenApoc/dependencies/glm
cmake .
sudo make install
  • Create a subdirectory ('build' in this example) in the OpenApoc checkout directory, and from that use cmake to configure OpenApoc:
cd /path/to/OpenApoc
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  • This cmake command will fail if we're missing a dependency, or your system is for some other reason unable to build - if you have any issues please contact us (see above for links)
  • Build the project with the following command
make -j4
  • This should create a directory 'bin' under the build directory, with the 'OpenApoc' executable file, and the 'data' directory already in place.
  • Copy the cd.iso file to the 'data' directory under build/bin (Note - despite dosbox having good linux support, the steam version of X-Com Apocalypse refuses to install in steam for linux - you may need to snatch the cd.iso file off a windows steam install)
cp /path/to/cd.iso data/
  • Change to the build/bin directory
cd bin
  • Run openapoc