| Target | Graphics | Artifact | CI |
|---|---|---|---|
| macOS arm64 | Metal | .app in a DMG |
Yes |
| macOS x86_64 | Metal | .app in a DMG |
No |
| Windows x86_64 | D3D12 and Vulkan | ZIP | Yes |
| Linux x86_64 | Vulkan | tar.xz | Yes |
- Output directory:
build/artifacts. - Runtime libraries: SDL3, zstd and FFmpeg; libjuice is linked statically.
- curl: bundled on Windows, system-provided on macOS and Linux.
- FFmpeg formats: Smacker, Ogg/Vorbis and WAV.
- Debug: ImGui overlay enabled; macOS includes
OpenXvT.dSYM. - Release: ImGui overlay disabled.
- Package builds disable ASAN and UBSan.
- Original game data is not included.
Requirements: Xcode command-line tools, CMake, Ninja and pkg-config. Run on the target architecture. Build variants sequentially; they share caches.
XVT_VERSION=0.0.0-dev ./packaging/macos/build-package.sh
XVT_BUILD_TYPE=Debug ./packaging/macos/build-package.sh| Environment variable | Default |
|---|---|
XVT_VERSION |
0.0.0-dev |
XVT_BUILD_TYPE |
Release |
XVT_MACOS_ARCHITECTURE |
Host architecture |
XVT_MACOS_DEPLOYMENT_TARGET |
13.0 |
XVT_MACOS_BUILD_ROOT |
build/cache/macos-<arch> |
XVT_MACOS_ARTIFACT_DIR |
build/artifacts |
XVT_MACOS_SHADERCROSS_EXECUTABLE |
Build the pinned shader compiler |
XVT_MACOS_BUILD_VERSION |
1 |
XVT_MACOS_BUNDLE_IDENTIFIER |
org.openxvt.openxvt |
XVT_MACOS_SIGN_IDENTITY |
- (ad hoc) |
Compiler parallelism: sysctl -n hw.logicalcpu.
Bundled dylibs are relocated into Contents/Frameworks.
Set XVT_MACOS_SIGN_IDENTITY to a Developer ID identity and
XVT_MACOS_NOTARY_PROFILE to a notarytool keychain profile.
Alternatively, supply all three direct-credential variables:
XVT_MACOS_NOTARY_APPLE_ID, XVT_MACOS_NOTARY_TEAM_ID and
XVT_MACOS_NOTARY_PASSWORD.
./packaging/macos/sign-package.sh input.dmg output.dmgXVT_MACOS_RELEASE_TAG optionally replaces the signed DMG on a GitHub release.
Requirements: Docker Buildx with linux/amd64 support. Run from the repository
root. ARM64 Docker hosts require amd64 emulation.
docker buildx build --platform linux/amd64 -f packaging/linux/Dockerfile \
--build-arg XVT_BUILD_TYPE=Release \
--target artifact --output type=local,dest=build/artifacts .
docker buildx build --platform linux/amd64 -f packaging/windows/Dockerfile \
--build-arg XVT_BUILD_TYPE=Release \
--target artifact --output type=local,dest=build/artifacts .Use --build-arg XVT_BUILD_TYPE=Debug to build Debug packages.
| Build argument | Default |
|---|---|
XVT_VERSION |
0.0.0-dev |
XVT_BUILD_TYPE |
Release |
- Build environment: Debian Bookworm; Windows uses MinGW-w64.
- CMake parallelism: build-tool default; FFmpeg:
make -j"$(nproc)". - BuildKit may run dependency stages concurrently.
- Linux: libraries in
lib/, executable RPATH$ORIGIN/lib, library RPATH$ORIGIN. - Linux host requirements: glibc 2.35+, GCC 12-compatible runtimes, libcurl and graphics/audio drivers.
- Windows: runtime DLLs beside the executable; Debug includes WinPixEventRuntime.
- Release: Windows and Linux debug symbols ship separately in
…-release-symbolsarchives. - A plain non-macOS
cmake --install --component Runtimestages application files; Docker packaging adds runtime dependencies and their licenses.
Logs, crash stacks and Windows crash dumps are written to the diagnostics folder in the
user directory (%APPDATA%\TotallyOpen\OpenXvT on Windows,
~/.local/share/TotallyOpen/OpenXvT on Linux).
AERON_TEST_CRASH=access|abort|stack forces a crash at startup.
Resolve frames from the log with the matching symbols archive. On Windows, add the
OpenXvT.exe+<offset> offset to 0x140000000; on Linux, use the OpenXvT(+<offset>)
offset as is:
llvm-symbolizer --obj=OpenXvT.exe 0x1402d9dbbgit submodule update --init --recursive
docker buildx build --platform linux/amd64 -f packaging/linux/Dockerfile \
--target netprobe-artifact --output type=local,dest=build/artifacts/netprobe .
docker buildx build --platform linux/amd64 -f packaging/windows/Dockerfile \
--target netprobe-artifact --output type=local,dest=build/artifacts/netprobe .Configuration and usage: probe instructions.
| Workflow | Trigger | Configurations | Output |
|---|---|---|---|
ci.yml |
Main push | Release and Debug | Workflow artifacts |
ci.yml |
Pull request or manual | Release | Workflow artifacts |
release.yml |
v* tag |
Release and Debug | Draft GitHub release |
Package checks cover game configuration, selected shaders, required FFmpeg codecs, Linux runtime resolution and ABI versions, Windows executable subsystem and Debug symbols, and macOS plist syntax, dylib paths, signatures and dSYM UUIDs. CI does not run gameplay tests or notarization.