ReHLDS and ReGameDLL: what modern CS 1.6 servers run
The rebuilt engine and game library behind modern CS 1.6 servers: what each piece replaces, what breaks when you switch, and how to test it first.
ReHLDS version: followed by a build number is what the version command prints on a modern Counter-Strike 1.6 server, where Valve's own server prints Exe build:. During startup the same console also shows ReGameDLL version:. Together they name the stack: ReHLDS in place of Valve's engine, ReGameDLL_CS in place of the game library, and Metamod-r, AMX Mod X and the ReAPI module on top.
None of it changes what players install. The client is still Valve's Counter-Strike, and buying, installing and joining works the same on either kind of server. The differences are all on the server side.
Why the server was rebuilt
Valve's dedicated server, HLDS, is closed source. When it had a bug, the fix had to come from Valve or from a plugin patching memory at runtime. ReHLDS is the engine rebuilt from HLDS build 6152/6153, using the DWARF debug information left in the Linux binary, engine_i486.so, with defects fixed along the way. ReGameDLL_CS did the same for the game library, working from the Linux cs.so of build 6153beta. Both projects state the same goal: a more stable server with an extended API for mods and plugins. Both moved from the GPLv3 to the MIT licence in July 2025.
The HLDS they match is not the newest one. Half-Life's 25th anniversary update in November 2023 changed the engine. Valve archived the previous build on a public beta branch called steam_legacy, described as the "Pre-25th Anniversary Build", and updated the dedicated server, app 90, on 22 November. ReHLDS is documented as compatible with the pre-anniversary edition, engine version 8684 or lower, installed through SteamCMD like this:
app_set_config 90 mod cstrike
app_update 90 -beta steam_legacy validate
The old 5xxx builds that the pre-SteamCMD hldsupdatetool installed will not work.
What each piece replaces
- ReHLDS replaces
swds.dllon Windows orengine_i486.soon Linux, and needs a CPU with SSE, SSE2 and SSE3. Beyond the fixes it adds settings Valve's server never had:sv_rehlds_maxclients_from_single_iplimits simultaneous connections from one address (5 by default), and thesv_rehlds_movecmdrate_*andsv_rehlds_stringcmdrate_*cvars kick or ban clients that flood commands. There is alsorcon_adduser, which restricts RCON to listed addresses or ranges. - ReGameDLL_CS replaces
dlls/mp.dllordlls/cs.soand reads its extra settings fromgame.cfgandgame_init.cfg. Many of them used to need a plugin:mp_freeforallfor free-for-all,mp_buy_anywhere,mp_item_staytimefor how many seconds dropped items stay (300 by default),bot_quota_modewithfillormatch, andmp_round_infinite, whose letter flags switch off individual round-end checks. It can also run zBot, the bots from Condition Zero, once the project's bot profile files are in place andbot_enable 1is ingame_init.cfg. Typinggame versionconfirms it loaded. - Metamod-r replaces Metamod.
liblist.gampointsgamedllataddons\metamod\metamod.dllandgamedll_linuxataddons/metamod/metamod_i386.so, and the project's current install guide lists ReHLDS as a requirement. - AMX Mod X does not change. It loads as a Metamod plugin as before, and how it compares with SourceMod and Oxide is a separate story.
- ReAPI is an AMX Mod X module,
reapi_amxx.dllorreapi_amxx_i386.soinaddons/amxmodx/modules. It gives plugins hook chains that run before or after engine and game functions, and access to internal fields by name instead of by hand-computed offset. Engine hooks need ReHLDS; game hooks also need ReGameDLL_CS.
Why owners switch
The fixes and flood limits deal with problems Valve's server leaves to the owner, and ReGameDLL's settings replace plugins that used to patch the same behaviour from outside. The other pull is plugins. A plugin written with #include <reapi> declares ReAPI as a required library, so it will not load on a server running Valve's binaries at all.
What breaks when you switch
Both projects warn that they are not binary compatible with Valve's files, because they are built with different compilers. Plugins that find functions by scanning for byte signatures, or patch memory at fixed offsets, may fail or crash the server; Orpheu-based plugins are the example the documentation gives. Standard AMX Mod X and Metamod plugins that stick to the documented interfaces are generally unaffected. For a plugin of the first kind, the fix is a version written against ReAPI's hooks, if one exists.
delta.lst ships with each ReGameDLL_CS release and should stay in step with the binary. The game.cfg in the release is not all defaults either: the current copy sets mp_buytime to 0.25, fifteen seconds, where the documented default is 1.5 minutes, and mp_timelimit to 20 where the default is 0. The project's update notes say to compare your configs with each new copy and merge the new cvars in, rather than overwrite.
A plugin that needs ReAPI on a server where ReHLDS is missing shows as bad load in amxx plugins, with Module/Library "reapi" required for plugin. Check modules.ini. in the list underneath. When something misbehaves without an error at all, finding the plugin conflict is the method.
Test the switch on a copy first
- Install a second HLDS from the
steam_legacybranch in its own directory, give it another port with+port 27016, and copy acrosscstrike/addons, your configs and the maps you run. - Drop in the ReHLDS and ReGameDLL_CS binaries, then Metamod-r and ReAPI, following each project's install page.
- Start it and read the console.
versionshould showReHLDS version:, andgame versionshould answer; if the command is unknown, the new game library did not load.meta listshould show every Metamod plugin asRUN, notbadforfail. Inamxx pluginsevery plugin should berunningwith noLoad fails:lines underneath, andamxx modulesshould list ReAPI. - Play the modes you actually run, with bots or friends: buy, plant, defuse, change map, and whatever your plugins do on spawn, death and round end. Keep an eye on
addons/amxmodx/logswhile you do. - Keep Valve's original files beside the new ones, so rolling back on the live server is a file copy, and make the swap in the quietest hour you have.
The copy does not have to be permanent. A staging server that lives for one afternoon is enough for this, and the routine is the same one that applies to any update that could break the server. The ReHLDS source and releases are on the project's GitHub page, and the install and update notes for the game library are in the ReGameDLL_CS documentation.
Published · 5 min read