_______________________ /\ \ \_| Arx | | Libertatis | | __________________|__ \_/____________________/ Cross-platform port of Arx Fatalis, a first-person role-playing game Arx Libertatis is based on the publicly released [Arx Fatalis source code](https://web.archive.org/web/20180105233341/https://www.arkane-studios.com/uk/arx_downloads.php). The source code is available under the GPLv3+ license with some additional terms - see the COPYING and LICENSE files for details. ## Contact Website: [arx-libertatis.org](https://arx-libertatis.org/) Bug Tracker: [bugs.arx-libertatis.org](https://bugs.arx-libertatis.org/) IRC: \#arx on libera.chat Wiki: [wiki.arx-libertatis.org](https://wiki.arx-libertatis.org/) Reddit: [/r/ArxFatalis/](https://old.reddit.com/r/ArxFatalis/) ## Dependencies * A **C++ 17** compiler (GCC 7+, Clang 5+, MSVC 19.15+ aka Visual Studio 2017 15.8+) * **[CMake](https://cmake.org/) 3.12**+ (compile-time only) * **[zlib](https://zlib.net/)** * **[Boost](https://www.boost.org/) 1.58**+ (headers only¹) * **[GLM](https://glm.g-truc.net/) 0.9.9.7**+ * **[FreeType](https://freetype.org/) 2.3.0**+ * **OpenAL 1.1**+ ([OpenAL Soft](https://openal-soft.org/) strongly recommended!) * **iconutil** (from Xcode) or **[icnsutil](https://github.com/pornel/libicns)** (macOS only) 1. Systems without Win32 or POSIX filesystem support will also need the `filesystem` and `system` libraries from Boost. ### Renderer There is currently a single rendering backend for OpenGL: * **[SDL](https://libsdl.org/)** **1.2.10**+ *or* **2.0.0**+ * **OpenGL 1.5**+ (OpenGL 2.1 or newer is recommended) *or* **OpenGL ES-CM 1.x**¹ * **[libepoxy](https://github.com/anholt/libepoxy) 1.2**+ (recommended) *or* **[GLEW](http://glew.sourceforge.net/) 1.5.2**+ 1. OpenGL ES support requires libepoxy ### Crash Reporter Arx Libertatis comes with an optional gui crash reporter which has additional dependencies: * **[Qt](https://www.qt.io/) 4.7**+, **5** or **6** (`QtCore`, `QtConcurrent`¹, `QtGui` and `QtWidgets`¹ libraries) * **[libcurl](https://curl.haxx.se/libcurl/) 7.20.0**+ (not required on Windows) * **GDB** (Linux-only, optional, run-time only) * **DbgHelp** (Windows-only) 1. Qt 5 only While the crash reporter can be run without GDB, it's main usefulness comes from generating and submitting detailed back-traces in the event of a crash. On non-Windows systems we use GDB, the GNU Debugger, to accomplish that. If you want to help out the arx project, please install GDB before running arx. GDB is however purely a run-time dependency and is not needed when building the crash reporter. ### Tests Building and running tests has additional dependencies: * **[CppUnit](https://freedesktop.org/wiki/Software/cppunit/)** ### Git Build Dependencies Building checkouts from git on their own requires additional dependencies: * **[Inkscape](https://inkscape.org/)** * **[ImageMagick](https://imagemagick.org/)** * **[OptiPNG](http://optipng.sourceforge.net/)** These are needed to render and scale the SVG icons, which currently only render correctly in Inkscape. Release and development snapshot source tarballs include pre-built icon files and do not need these dependencies to build. To avoid the Inkscape (as well as ImageMagick and OptiPNG) dependency for git builds, pre-built icons can be downloaded from https://arx-libertatis.org/files/data/ or the [ArxLibertatisData](https://github.com/arx/ArxLibertatisData/) repository. The required data version is listed in the VERSION file. Place `arx-libertatis-data-$version` directory into the build directory or tell the build system about it's location using the `DATA_FILES` CMake variable (`-DDATA_FILES=…` on the command-line). Alternatively, icons can be disabled by setting the `ICON_TYPE` CMake variable to `none`. See **OPTIONS.md** for other supported icon type values. ## Compile and install For Linux run: $ mkdir build && cd build $ cmake .. $ make The default build settings are tuned for users - if you plan to make changes to Arx Libertatis you should append the `-DDEVELOPER=1` option to the `cmake` command to enable tests, debug checks and fast incremental builds. To install the binaries system-wide, run as root: # make install Alternatively you can run the game by specifying the full path to the `arx` binary in the `build` directory. The wiki has more detailed instructions on [compiling under Linux](https://wiki.arx-libertatis.org/Downloading_and_Compiling_under_Linux). Getting all the dependencies set up for Windows is more tricky. Pre-built dependencies are available in the [ArxWindows repository](https://github.com/arx/ArxWindows) and [instructions on how to use them](https://wiki.arx-libertatis.org/Downloading_and_Compiling_under_Windows) are available on the wiki. ### Build options: * `BUILD_TOOLS` (default: `ON`): Build tools * `BUILD_TOOLS_MERGED` (default: `ON`): Merge tools into a single binary * `BUILD_IO_LIBRARY` (default: `ON`): Build helper library for the Blender plugin * `BUILD_CRASHHANDLER` (default: `ON`): Enable the built-in crash handler (default OFF for macOS) * `BUILD_CRASHREPORTER` (default: `ON`): Build the Qt crash reporter gui - requires `BUILD_CRASHHANDLER` (default OFF for macOS) * `BUILD_PROFILER` (default: `OFF`¹): Build the profiler GUI * `BUILD_TESTS` (default: `OFF`²): Build tests that can be run using `make check` * `BUILD_ALL` (default: `OFF`): Enable all the BUILD_* options above by default - they can still be disabled individually * `UNITY_BUILD` (default: `ON`): Unity build (faster build, better optimizations but no incremental build) * `CMAKE_BUILD_TYPE` (default: `Release`): Set to `Debug` for debug binaries * `DEBUG` (default: `OFF`³): Enable debug output and runtime checks * `DEBUG_GL` (default: `OFF`⁴): Enable OpenGL debug output by default * `DEBUG_EXTRA` (default: `OFF`): Expensive debug options * `RUN_TESTS` (default: `OFF`⁵): Automatically run tests * `RUN_TARGET` (default: (none): Wrapper to run binaries produced in the build process * `DEVELOPER` (default: `OFF`): Enable build options suitable for developers⁶ * `BUILD_PROFILER_INSTRUMENT` (default: `OFF`): Add profiling instructions to the main arx binary 1. Enabled automatically if `BUILD_ALL` or `BUILD_PROFILER_INSTRUMENT` is enabled 2. Enabled automatically if `BUILD_ALL` or `DEVELOPER` is enabled 3. Enabled automatically if `CMAKE_BUILD_TYPE` is set to `Debug` or if `DEVELOPER` is enabled. 4. Enabled automatically if `DEBUG` is enabled. If disabled, OpenGL debug output can be enabled at run-time using the `--debug-gl` command-line option. 5. Enabled automatically if `DEVELOPER` is enabled unless cross-compiling without `RUN_TARGET` set 6. Currently this disables `UNITY_BUILD` and enables `DEBUG`, `BUILD_TESTS`, `RUN_TESTS` and `FASTLINK` for faster incremental builds and improved debug checks, unless those options have been explicitly specified by the user. Install options: * `CMAKE_INSTALL_PREFIX` (default: `/usr/local` on UNIX and `C:/Program Files` on Windows): Where to install Arx Libertatis Set options by passing `-D