Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/twhl-community/halflife-unified-sdk/llms.txt

Use this file to discover all available pages before exploring further.

The Half-Life Unified SDK is spread across several repositories, each with a distinct responsibility. Understanding which repository holds which type of content will save you time when you need to find, modify, or contribute assets, source code, or tooling. The main repository contains C++ source code for the mod itself; companion repositories hold game assets and the C# automation tools that drive the development workflow.

The Three Main Repositories

SDK Source Code

C++ source code for the mod, original SDK tools, delta.lst, and liblist.gam.in. Mod installation archives are published on the Releases page of this repository.

Asset Source Files

Source files for all game assets: models, configuration files, scripts, and FGDs. Anything that is not mod source code lives here.

C# Tools Source Code

Source code for the .NET automation tools used to copy assets, package mod releases, and install game content from the original Half-Life titles.

Source Code Layout

The C++ source tree lives under the src/ directory and is divided into four sub-directories:
DirectoryContents
src/common/Shared headers used by both the engine and game code
src/engine/Engine interface headers
src/game/The game code itself, split into client/, server/, and shared/
src/public/Public SDK headers

Server Library Name

Historically the server library for a Half-Life mod defaults to the name hl. The Unified SDK renames it to server to keep things simple and consistent. The compiled output is therefore server.dll on Windows, server.so on Linux, and server.dylib on macOS.

Dependency Management with vcpkg

The Unified SDK uses vcpkg in manifest mode to acquire almost all third-party dependencies. The only exceptions are libraries that ship with the game itself — vgui1 and SDL2. Always use vcpkg to add new dependencies. If a package is not in the main vcpkg registry you can add it to the local filesystem registry defined in vcpkg-configuration.json.
GitHub Actions performs a shallow clone of the vcpkg repository. When updating vcpkg, make sure all dependencies are pinned to a version that the shallow clone can resolve, or GitHub Actions builds will fail to locate the package information.
If you need a dependency that is not in the main vcpkg registry, or if you need to pin an older version of a dependency, you can copy the package definition from the vcpkg registry into the local filesystem registry. When doing this, pay close attention to transitive dependencies — for example, spdlog references fmtlib, which this project also references directly. Using the local registry for one without aligning the other can produce conflicting versions of the same package. Consult the vcpkg documentation before making changes.
The OpenAL library used by the SDK is a custom build that renames the dynamic library to avoid conflicting with the engine’s own use of OpenAL on Linux. If you update OpenAL you must also update the associated rename patch.

Networking Configuration (delta.lst)

The delta.lst file, included in the main SDK repository, controls networking delta-compression settings for the mod. Adjusting this file lets you tune how entity and event data is serialised over the network. The following community repositories apply the same style of updates to other Valve titles and may be useful reference material when working with the Unified SDK:

Half-Life Updated

Bug fixes and compile improvements for the base Half-Life SDK.

Opposing Force Updated

Bug fixes and compile improvements for the Opposing Force SDK.

Blue Shift Updated

Bug fixes and compile improvements for the Blue Shift SDK.

Next Steps

Mod Setup

Configure your mod name, set up Steam launch, and learn the day-to-day development workflow.

.NET Tools

Install the .NET 6 SDK and learn how to run the Unified SDK’s automation tools.

Build docs developers (and LLMs) love