This repository contains the gamelogic of the game Unvanquished.
You need to download the game's assets in addition to that to make it run. See below for build and launch instructions.
To fetch and build Unvanquished, you'll need:
python = 2,
and a C++11 compiler.
The following are actively supported:
gcc ≥ 4.8,
clang ≥ 3.5,
Visual Studio/MSVC (at least Visual Studio 2017).
libjpeg ≥ 8,
libwebp ≥ 0.2.0,
MSYS2 is an easy way to get MingW compiler and build dependencies, the standalone MingW on Windows also works.
Unvanquished requires several sub-repositories to be fetched before compilation. If you have not yet cloned this repository:
git clone --recurse-submodules https://github.com/Unvanquished/Unvanquished.git
If you have already cloned:
cd Unvanquished/ git submodule update --init --recursive
If cmake complains about the
daemon/ folder being empty then you have skipped this step.
-j4 you can use
N is your number of CPU cores to distribute compilation on them. Linux systems usually provide an handy
nproc tool that tells the number of CPU core so you can just do
-j$(nproc) to use all available cores.
Enter the directory before anything else:
- Run CMake.
- Choose your compiler.
Produced files will be stored in a new directory named
cmake -H. -Bbuild cmake --build build -- -j4
cmake -H. -Bbuild -G "MSYS Makefiles" cmake --build build -- -j4
Linux cross-compile to Windows
For a 32-bit build use the
cross-toolchain-mingw32.cmake toolchain file instead.
cmake -H. -Bbuild -DCMAKE_TOOLCHAIN_FILE=cmake/cross-toolchain-mingw64.cmake cmake --build build -- -j4
Linux, macOS, MSYS2
If Unvanquished's assets are already installed somewhere on your system
cd build # <PATH> is the path to the “pkg/” directory that contains the game's assets. ./daemon -pakpath <PATH>
If you don't have the assets, you can download them first
The package downloader script can use
aria2c is recommended.
You can do
./download-paks --help for more options.
cd build ./daemon
Loading base asset package from sources
As a developer, you will want to load assets from repository. To do that:
cd build ./daemon -pakpath ../pkg -set vm.sgame.type 3 -set vm.cgame.type 3
Note that only the basic
unvanquished_src.dpkdir asset package is provided that way, and running Unvanquished only with that package will bring you some warnings about other missing packages and you will miss soundtrack and stuff like that. You also need to load your own game code (using vm type switches) at this point.
This should be enough to start the game and reach the main menu and from there, join a server. If the server supports autodownload mechanism, Unvanquished will fetch all the missing packages from it.
If you are looking for the sources of the whole assets, have a look at the UnvanquishedAssets repository. Beware that unlike the
unvanquished_src.dpkdir package most of them can't be loaded correctly by the engine without being built first.
Loading your own assets
As a developer, you will want to load your own assets in addition to those shipped with the game. To do that:
cd build mkdir -p pkg && cd pkg mkdir assets_src.dpkdir
You can now put loose assets into
assets_src.dpkdir or you can put additional dpkdir directories or dpk containers inside
pkg and add their names (the format is
<NAME>_<VERSION>.dpk[dir]) as lines to the
DEPS file (the format is
<NAME> <VERSION>). Version is required in package filename but optional in
DEPS file. In order to launch Unvanquished, use one of the following commands:
# Runs the game and loads the “assets” package and its dependencies from “pkg/” directory: ./daemon -set fs_extrapaks assets # Runs the game and loads the “assets” package and its dependencies from <PATH> # when <PATH> is not one of the default Unvanquished paths: ./daemon -pakpath <PATH> -set fs_extrapaks assets # In addition, load a shared-object gamelogic you compiled and allow it to be debugged, # then launch the map “Platform 23” with cheats enabled after startup: ./daemon -pakpath <PATH> -set fs_extrapaks assets \ -set vm.sgame.type 3 -set vm.cgame.type 3 \ +devmap plat23
If Unvanquished's assets are installed on your system
daemon.exe -pakpath <PATH>, where
<PATH> is the path to the
pkg/ directory that contains the game's assets.