Skip to content
Garrett Guillotte edited this page Mar 30, 2024 · 19 revisions

Table of Contents

A Note About Version Numbers

In order to communicate with each other, the server and all clients need to share the same version number. Servers and clients whose version numbers are 0 bypass this check. In any case, they might not function properly with each other if built from different codebases.

If you intend to play using the official builds, for example, ensure that you're on the same codebase by checking out the release tag. You can view these tags in the GitHub repository or by running git tag --sort -v:refname. You also should override the version numbering in the build scripts, as by default the current compile date (not the tag/release/etc.) is used to generate the version number.

For example, to create builds which share the same codebase with the October 28, 2022, official builds, check out the corresponding release tag, being in the SeriousProton and EmptyEpsilon directories:

cd SeriousProton
git checkout EE-2022.10.28
cd ../EmptyEpsilon
git checkout EE-2022.10.28

To define the version number for CMake in the build process and override the automatic version number:

Using a CMAKE_PROJECT include file

The preferred method of setting a version number is to define the version in a CMake-syntax file and include it using the -DCMAKE_PROJECT_EmptyEpsilon_INCLUDE flag.

This file should contain CMake set statements for each version variable, and should be located somewhere in the project. For our October 28, 2022, example, the file's contents would be

set(PROJECT_VERSION 2022.10.28)
set(PROJECT_VERSION_MAJOR 2022)
set(PROJECT_VERSION_MINOR 10)
set(PROJECT_VERSION_PATCH 28)

When running cmake, the path to the file is relative to the project (repository) root. Assuming you saved the file as version.cmake and it's located in ~/git/daid/EmptyEpsilon/, and you're running cmake from ~/git/daid/EmptyEpsilon/_build, the cmake command you run from your build directory might resemble:

cmake .. -G Ninja -DSERIOUS_PROTON_DIR=../../SeriousProton -DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=./version.cmake

To change the version number, update the contents of the version.cmake file, then re-run cmake. (Building with ninja re-runs cmake automatically.)

Using CPACK version numbers

A deprecated, but still working, method of setting the version number is to add the following defines to the end of the relevant CMake command, after a space:

-DCPACK_PACKAGE_VERSION_MAJOR=2022 -DCPACK_PACKAGE_VERSION_MINOR=10 -DCPACK_PACKAGE_VERSION_PATCH=28

For an older discussion of options to set the version number, see issue #221.

Debug builds

To enable debug features in a build, add a build type define to the relevant CMake line:

-DCMAKE_BUILD_TYPE="Debug"

For details, see Build ‐ Debug.

An alternative to debug that could help find problems, but won't abruptly stop the server on certain conditions:

-DCMAKE_BUILD_TYPE=RelWithDebInfo

"Release with debug info" creates a release but has enough stack trace information that if an error occurs, it is a bit easier to track down. It's not quite as rigorous as plain Debug.

Windows

Build from source for a Windows target:

If builds fail with "Fatal error: Windows.h: No such file or directory", see discord/gamesdk-and-dispatch issue #100 for workarounds.

Linux

Build from source for a Linux target:

Android

Build ‐ Android

macOS/OS X

macOS builds are possible but not fully supported.

Build ‐ macOS

Clone this wiki locally