Opensource rebuild of the XCOM Apocalypse Engine
C++ CMake Other
Latest commit 07d1c95 Nov 23, 2017 @JonnyH JonnyH Merge pull request #238 from redv/agentassignment2
refactoring Agentassignment
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 Merge pull request #238 from redv/agentassignment2 Nov 23, 2017
dependencies Disable time support in miniz Nov 29, 2016
forms Merge pull request #238 from redv/agentassignment2 Nov 23, 2017
framework fix audio sample conversion issues in some systems Nov 2, 2017
game Merge pull request #238 from redv/agentassignment2 Nov 23, 2017
library recruit screen, fixes Oct 19, 2017
temp PCK Compression Mode 1 fully supported Jul 15, 2014
tests linux fix Oct 21, 2017
tools refactoring researchscreen Nov 2, 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 ignore vim swap files in .gitignore Oct 26, 2017
.gitmodules Try out tinyformat instead of boost::format Nov 7, 2016
.travis.yml Set CLANG_FORMAT correctly in travis' lint pass Sep 11, 2017
CMakeLists.txt Silence clang "Unused arguments: -I..." warnings with ccache Sep 11, 2017 Log* can take UString args directly May 22, 2017
LICENSE Test push with LICENSE mod :) Sep 12, 2017
OpenApoc - Extract.lnk non-ufo crash and recovery Oct 9, 2017
OpenApoc - Play.lnk non-ufo crash and recovery Oct 9, 2017
OpenApoc.sln agent equipment multiselect, options Oct 2, 2017 Add appveyor (windows) build badge Oct 30, 2017
README_HOTKEYS.txt training, portals and fixes Oct 26, 2017
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 cityview controls, building improv, city update Oct 12, 2017
appveyor.yml cityview controls, building improv, city update Oct 12, 2017
clang_format_win.bat progress on location screen #1 Sep 27, 2017
gen_version_win.bat Add gen_version_win.bat for windows builds Sep 10, 2015
portable.txt Add a "Portable" config mode Sep 8, 2017 Add version.h generated from git describe Sep 10, 2015


Linux: Linux Build Status Windows: Windows Build Status

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' it as of yet.

See our Trello TO-DO list for more info.


  • This assumes that you have the file 'cd.iso' - a copy of the original X-Com Apocalypse CD (This can be acquired from Steam - this is required to run)
    • If you have the real cd, you can copy all the included files to a directory called "cd.iso"


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

  • SDL2
  • Boost - specifially the 'locale' library, used for localisation, 'program-options' for settings management, and 'filesystem'.
  • Libunwind - debug backtracing on linux - not needed on windows.

The following libraries are also used, but are shipped as submodules in the repository and directly included in the build, so you don't need to install these dependencies to build or use openapoc.

  • GLM - Math library.
  • libsmacker - Decoder for .smk video files.
  • lodepng - Reading/writing PNG image files.
  • miniz - Zlib-comptible compression library.
  • physfs - Library for reading data from .iso files or directory trees (Note: We use a patched version, available on GitHub - required to read the .iso files we use).
  • pugixml - XML library used for reading/writing the game data files.
  • tinyformat - A c++ typesafe string formatting library.

Building on Windows

  • Checkout OpenApoc from GitHub.
  • If you are using the GitHub client for Windows, the submodules should already be setup at first checkout. If not using the github client, or if the submodules have been updated, run the following commands in the 'git shell' from the root of the OpenApoc repository. This should reset the submodule checkouts to the latest versions (NOTE: This will overwrite any changes to code in the dependencies/ directory).
git submodule init
git submodule update -f
  • All the other dependencies (Boost, SDL2) are provided automatically by nuget packages, and Visual Studio should automatically download and install these at the first build.
  • Copy the original XCom:Apocalypse .iso file into the "data/" directory. This could also be a directory containing all the extracted files from the CD, and it should be named the same (IE the directory should be data/cd.iso/). This is used during the build to extract some data tables.
  • Open openapoc.sln in Visual Studio.
  • Build (Release/Debug x86/x64 should all work).
  • 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 16.04)

  • Install the following packages:
sudo apt-get install libsdl2-dev cmake build-essential git libunwind8-dev libboost-locale-dev libboost-filesystem-dev libboost-system-dev libboost-program-options-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
  • Copy the cd.iso file to the 'data' directory under the repository root (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/
  • 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. OpenApoc by default expects the data folder to be in the current working directory, so running the executable from the root of the git checkout should work.

Contact us

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