1 _______________________ 2 /\ \ 3 \_| Arx | 4 | Libertatis | 5 | __________________|__ 6 \_/____________________/ 7 8 9Cross-platform port of Arx Fatalis 10 11Arx Libertatis is based on the publicly released [Arx Fatalis source code](http://www.arkane-studios.com/uk/arx_downloads.php). 12GPLv3 - read ARX_PUBLIC_LICENSE.txt 13 14## Contact 15 16Website: [http://arx-libertatis.org/](http://arx-libertatis.org/) 17 18Bug Tracker: [https://bugs.arx-libertatis.org/](https://bugs.arx-libertatis.org/) 19 20IRC: \#arxfatalis on irc.freenode.net 21 22Wiki: [http://wiki.arx-libertatis.org/](http://wiki.arx-libertatis.org/) 23 24Reddit: [http://www.reddit.com/r/ArxFatalis/](http://www.reddit.com/r/ArxFatalis/) 25 26## Dependencies 27 28* **[CMake](http://www.cmake.org/) 2.8**+ (compile-time only, 2.8.5+ under Windows) 29* **[zlib](http://zlib.net/)** 30* **[Boost](http://www.boost.org/) 1.39**+ (headers only) 31* **[Freetype](http://www.freetype.org/)** 32* **OpenAL 1.1**+ ([OpenAL Soft](http://kcat.strangesoft.net/openal.html) strongly recommended!) *and/or* **DirectSound 9** 33 34Systems without Win32 or POSIX filesystem support will also need **Boost 1.44** or newer including the `filesystem` and `system` libraries. 35 36### Renderer 37 38There are rendering backends for both OpenGL and Direct3D. You need either: 39 40* **[SDL](http://www.libsdl.org/) 1.2.10**+ 41* **OpenGL 1.5**+ (OpenGL 2.1 or newer is recommended) 42* **[GLEW](http://glew.sourceforge.net/) 1.5.2**+ 43 44*and/or* 45 46* **DirectInput 8** (included in the DirectX 9 SDK) 47* **Direct3D 9** 48 49Both OpenGL and Direct3D backends can be built at the same time. 50 51### Crash Reporter 52 53Arx Libertatis comes with an optional gui crash reporter which has additional dependencies: 54 55* **Qt 4** or **5** (`QtCore`, `QtGui`, `QtWidget`^1 and `QtNetwork` libraries) 56* **GDB** (Linux-only, optional, run-time only) 57* **DbgHelp** (Windows-only) 58 591. Qt 5 only 60 61While 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-window 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. 62 63## Compile and install 64 65For Linux run: 66 67 $ mkdir build && cd build && cmake .. 68 $ make 69 70To install the binaries system-wide, run as root: 71 72 # make install 73 74Alternatively you can run the game by specifying the full path to the `arx` binary in the `build` directory. 75 76The wiki has more detailed instructions on [compiling under Linux](http://wiki.arx-libertatis.org/Downloading_and_Compiling_under_Linux). 77 78Getting all the dependencies set up for Windows is more tricky. Pre-build dependencies are available in the [ArxWindows repository](https://github.com/arx/ArxWindows) and [instructions on how to use them](http://wiki.arx-libertatis.org/Downloading_and_Compiling_under_Windows) are available on the wiki. 79 80### Build options: 81 82* `BUILD_TOOLS` (default=ON): Build tools 83* `BUILD_CRASHREPORTER` (default=ON): Build the Qt crash reporter gui (default OFF for Mac) 84* `UNITY_BUILD` (default=OFF): Unity build (faster build, better optimizations but no incremental build) 85* `CMAKE_BUILD_TYPE` (default=Release): Set to `Debug` for debug binaries 86* `DEBUG` (default=OFF^1): Enable debug output and runtime checks 87* `DEBUG_EXTRA` (default=OFF): Expensive debug options 88* `USE_OPENAL` (default=ON): Build the OpenAL audio backend 89* `USE_OPENGL` (default=ON): Build the OpenGL renderer backend 90* `USE_SDL` (default=ON): Build the SDL windowing and input backends 91* `USE_NATIVE_FS` (default=ON): Use the native filesystem backend (POSIX / Win32) if available and not boost::filesystem. 92 931. Enabled automatically if `CMAKE_BUILD_TYPE` is set to `Debug`. 94 95Windows-only options (always `OFF` for non-windows platforms): 96 97* `USE_DSOUND` (default=ON): Build the DirectSound audio backend 98* `USE_D3D9` (default=ON): Build the Direct3D 9 renderer backend 99* `USE_DINPUT8` (default=ON): Build the DirectInput 8 input backend 100 101Install options: 102 103* `CMAKE_INSTALL_PREFIX` (default: `/usr/local` on UNIX and `C:/Program Files` on Windows): Where to install Arx Libertatis 104 105Set options by passing `-D<option>=<value>` to cmake. 106 107Backends that are not available are disabled by default. The `cmake` run should display a summary of the enabled backends at the end. 108 109Advanced options not listed here are documented in **OPTIONS.md**. 110 111## Data file, config and savegame locations 112 113You will need to [get either the full game or demo data of Arx Fatalis](http://wiki.arx-libertatis.org/Getting_the_game_data). To install the data files run 114 115 $ arx-install-data 116 117Where arx will look for data files and write config and save files depends on the operating system and environment - the wiki has a page detailing the [full data directory detection algorithm](http://wiki.arx-libertatis.org/Data_directories). 118 119The game will try to rename all used files in the user directory (but not the data directory) to lowercase on the first run. System-wide installations with case-sensitive filesystems always need to manually rename the files to lowercase - this is done automatically by the `arx-install-data` script. 120 121To print all directories searched by arx, run 122 123 $ arx --list-dirs 124 125By default, user, config and data files will be loaded from and saved to standard system locations depending on the OS: 126 127**Windows**: 128* user and config dir:<br> 129*XP*: `%USERPROFILE%\My Documents\My Games\Arx Libertatis`<br> 130*Vista* and up: `%USERPROFILE%\Saved Games\Arx Libertatis` 131* data dir: location stored in `HKCU\Software\ArxLibertatis\DataDir` or `HKLM\Software\ArxLibertatis\DataDir` registry keys 132 133**Mac OS X**: 134* user and config dir: `~/Library/Application Support/ArxLibertatis/` 135* data dir: `/Applications/ArxLibertatis/` 136 137**Linux** and others: 138* user dir: `~/.local/share/arx/` 139* config dir: `~/.config/arx/` 140* data dir: `/usr/share/games/arx/`, `/usr/local/share/games/arx/` and more 141 142Arx will also try to load data files from the directory containing the game executable. 143 144To use the current working directory for user, config and data files (e.g. for a portable install) run the game as 145 146 $ arx --no-data-dir --user-dir=. --config-dir=. 147 148## Run 149 150Provided the data files are installed at the correct location, you can simply play the game using the installed shortcut or by running 151 152 $ arx 153 154See the `arx --help` and `man arx` output for more details. 155 156## Tools 157 158* `arxunpak <pakfile> [<pakfile>...]` <br> 159 Extracts the .pak files containing the game assets. 160 161* `arxsavetool <command> <savefile> [<options>...]` - commands are: 162 * `extract <savefile>` <br> 163 Extract the contents of the given savefile to the current directory 164 * `add <savefile> [<files>...]` <br> 165 Add files to a savefile, create it if needed 166 * `fix <savefile>` <br> 167 Fix savegame issues created by previous builds of Arx Libertatis 168 * `view <savefile> [<ident>]` <br> 169 Print savegame information - leave out `<ident>` to list root files 170 171## Scripts 172 173The `arx-install-data` script can extract and install the game data under Linux and FreeBSD from the CD, demo, [GOG.com](http://www.gog.com/) installer or any Arx Fatalis install (such as on Steam) - simply run it and follow the GUI dialogs. Also see the [wiki page on installing the game data under Linux](http://wiki.arx-libertatis.org/Installing_the_game_data_under_Linux). 174 175Or, if you prefer a command-line interface, run it as 176 177 $ arx-install-data --cli 178 179More options and required tools (depending on the source file) are documented in the help output: 180 181 $ arx-install-data --help 182 183## Developer information 184 185To build developer documentation (doxygen), run this from the build directory: 186 187 $ make doc 188 189To check for coding style problems, run the following: (requires python) 190 191 $ make style 192