Client: cs16-client + ReGameDLL_CS + YaPB
CSRetro uses a vendored, CSRetro-modified fork of cs16-client as its client and server code base (client/). The full source tree is committed in-tree (no submodules).
Vendored tree revision in this build: see VENDOR.md and Vendor table (VENDOR.md).
Upstream project (cs16-client)
cs16-client was originally aimed at mobile platforms; CSRetro ships a desktop x64 fork with CMake, csr_* binary names, and bundled ReGameDLL / YaPB / Metamod / NodeMod.
In this documentation: launch patterns, client CVars, and crosshair/HUD tables are listed under Players and in this page — you do not need the upstream README to run or configure CSRetro. The upstream repository remains the source for file history and non-CSRetro ports.
Launch and command-line (Xash3D / CSRetro)
CSRetro is started through ./tools.sh run:game (or run:debug), which launches the engine binary under game-test/ with -game cstrike. The same style of arguments applies if you invoke xash3d (Linux) or the platform launcher directly.
| Argument / pattern | Purpose |
|---|---|
-game cstrike |
Load Counter-Strike mod (required for CS 1.6 data). |
-dev |
Developer mode (extra messages; often paired with console). |
+map <mapname> |
Load a map on start (e.g. dedicated server or quick test). |
+exec <cfg> |
Run a config file after startup. |
-condebug |
Log console to qconsole.log in the game directory (debugging). |
Dedicated server: see Developers (./tools.sh run:server) and engine docs for listen/dedicated networking. Upstream cs16-client may document additional mobile- or platform-specific switches; for CSRetro, prefer tools.sh and Building.
What is cs16-client?
cs16-client is a reverse-engineered Counter-Strike 1.6 client for Xash3D FWGS, originally designed for mobile platforms. It provides:
cl_dlls/csr_client_amd64.so— client-side game logic (HUD, weapons, prediction)cl_dlls/csr_menu_amd64.so— in-game and main menudlls/csr_cstrike_amd64.so— server-side game logic (via ReGameDLL_CS, see below)dlls/csr_yapb_amd64.so— YaPB bot plugin (see below)
CSRetro-specific client CVars
| CVar | Default | Description |
|---|---|---|
hud_color |
255 160 0 |
HUD color (RGB) |
cl_quakeguns |
0 |
Draw centered weapons |
cl_weaponlag |
0.0 |
Weapon lag/sway |
xhair_enable |
0 |
Enable enhanced crosshair |
xhair_color |
0 255 0 255 |
Crosshair color (RGBA) |
xhair_dot |
0 |
Crosshair center dot |
xhair_dynamic_move |
1 |
Dynamic crosshair affected by movement |
xhair_gap |
0 |
Space between crosshair lines |
xhair_size |
4 |
Crosshair size |
xhair_t |
0 |
T-shaped crosshair |
xhair_thick |
0 |
Crosshair thickness |
See Players and Client CVARs for the client cvar reference; Server administrators and Server CVARs for dedicated-server rules.
ReGameDLL_CS (server game logic)
The server DLL (dlls/csr_cstrike_amd64.so) is built from ReGameDLL_CS, a reimplementation of the original cs.dll from Counter-Strike 1.6, vendored under client/3rdparty/ReGameDLL_CS/.
ReGameDLL_CS includes a built-in bot system derived from the Counter-Strike: Condition Zero (CZ) bot code. These bots are controlled via server-side commands and CVars such as bot_quota, bot_difficulty, bot_join_team, etc.
Note: The ReGameDLL internal bot is completely separate from YaPB (see below). They are two independent systems and must not be confused.
YaPB — Yet another Podbot
YaPB (created by jeefo) is an independent Metamod plugin that provides its own AI bot system. It is vendored under client/3rdparty/yapb/ and installed as dlls/csr_yapb_amd64.so.
YaPB loads via Metamod as a separate plugin — it is NOT part of ReGameDLL or csr_cstrike_amd64.so. It has its own configuration system (addons/yapb/conf/) and bot navigation mesh. See YaPB for paths, the full yb_* list, and troubleshooting.
| ReGameDLL Bot | YaPB | |
|---|---|---|
| Loaded as | Part of csr_cstrike_amd64.so |
Metamod plugin csr_yapb_amd64.so |
| Config | bot_quota, bot_difficulty etc. |
addons/yapb/conf/ |
| Navigation | .nav files |
.pwf waypoint files |
| Origin | CZ bot code (Valve/Ritual) | Independent (jeefo) |
Building
In CSRetro the full client stack is built by CMake through the top-level CMakeLists.txt:
./tools.sh build:release # Build client + server + menu DLLs
./tools.sh build:full # Full pipeline (engine + client + addons)