2026 年 CS 1.6 死斗服务器开服指南(Linux)
背景:笔者想搞一个无聊时可以和小伙伴之间激情对枪的轻量级射击游戏,要求“轻量,画面现代也能接受,手感不错,土豆机也能流畅运行,可离线部署,自托管”。简单看了一圈下来 CS 1.6 似乎是最好的选择,尽管画面落后,但即便以如今视角来看也不算很难受,并且依然有丰富的社区资源支撑。但在 CS1.6 经历半条命 25 周年大更新以及各路第三方修复与扩展的充实下,在 2026 年要正确开启一个 CS 1.6 服务器远远不是简单的下载 Dedicated Server 并启动那么简单,以往的教程也略显过时。本文旨在给出 CS 1.6 的服务器架设指南,目标是架设一个现代的、轻量的带 Bot 的 CS 1.6 死斗服务器,以允许闲时和小伙伴激情对战或者快速练习。
CS 起源其实也很好,但是如今 CS 起源的社区支持不佳,甚至远不及 CS 1.6,很多插件年久失修,没有人维护。而即便要自己做扩展开发,起源引擎的游戏做扩展开发也非常痛苦:作为同时具备过时技术与 DEAD GAME 双重 debuff 的游戏,如今在 CS 起源上进行开发的投入产出比极低,评估下来我认为没有理由过多去投入精力折腾。或许等 AI 继续发展下去,能够帮助实现绝大部分功能后才有去折腾的理由。
此外,对于有相似需求的读者,竞技场 FPS,例如 Warsow(Warfork)也是一个很值得考虑的选择。
1. 技术信息简介
- 客户端:原版最新版 CS 1.6,不作任何更改
- 服务端:基于 legacy 版本的服务端,配合 ReHLDS + ReGameDLL_CS + Metamod-R & AMX Mod X 完成基架搭建,使用 ReDeathmatch 实现死斗模式,使用 YaPB 实现 Bot 功能。
本教程假定读者有一定的 Linux 基础与动手能力,且有关电脑基础操作的部分将被省略不作赘述。
2. 服务器基架搭建
2.1. 安装 Steamcmd
略,请直接参考 Valve 提供的官方教程:https://developer.valvesoftware.com/wiki/SteamCMD
如果想使用容器方案,可以考虑使用
cm2network/steamcmd镜像
2.2. 获取 CS 1.6 服务端文件
执行以下命令并等待下载完成即可:
steamcmd \+force_install_dir "$(pwd)/counter-strike" \+login anonymous \+app_set_config 90 mod cstrike \+app_update 90 -beta steam_legacy validate \+quit
完成后 CS 1.6 的服务端文件会放置到当前目录下的 counter-strike 目录中。此后如何特殊说明,均假设工作目录(Working Directory)为 counter-strike 目录。
注意到这里用了
-beta steam_legacy要求下载旧版服务端文件,这是因为之后需要使用的 ReHLDS 仅和 25 周年更新前的最新版服务端兼容。不必担心客户端的兼容问题,25 周年后的新版 CS 1.6 客户端依然可以进入此服务器。
2.3. 安装 ReHLDS
在 ReHLDS 的 GitHub 仓库下载二进制构建文件:https://github.com/rehlds/ReHLDS/releases/
接下来,将下载的构建文件解压,并用 bin/linux32/ 目录中的所有文件覆盖所有原版 CS 1.6 服务端中的同名文件。以当前最新的 rehlds-bin-3.14.0.857.zip 为例,bin/linux32 的覆盖结构如下:
├── core.so
├── demoplayer.so
├── engine_i486.so
├── filesystem_stdio.so
├── hlds_linux
├── hltv
├── proxy.so
└── valve└── dlls└── director.so
重要:清除服务端根目录下 engine_i486.so 文件的可执行堆栈标记:
execstack -c ./engine_i486.so
如果不清除掉该文件的可执行堆栈标记,在现代 Linux 的安全策略下启动服务器时会导致执行出错。示例报错为:Error: engine_i486.so: cannot enable executable stack as shared object requires: Invalid argument。这一问题会影响容器化部署。
要使用 execstack 命令,Debian 系需要安装 execstack,RH 系需要安装 prelink。
2.4. 安装 ReGameDLL_CS
在 ReGameDLL_CS 的 GitHub 仓库下载二进制构建文件:https://github.com/rehlds/ReGameDLL_CS/releases/
接下来,将下载的构建文件解压,并用 bin/linux32/ 目录中的所有文件覆盖所有原版 CS 1.6 服务端中的同名文件。以当前最新的 regamedll-bin-5.28.0.756.zip 为例,bin/linux32 的覆盖结构如下:
└── cstrike├── delta.lst├── dlls│ └── cs.so├── game.cfg└── game_init.cfg
2.5. 安装 Metamod-R
在 Metamod-R 的 GitHub 仓库下载二进制构建文件:https://github.com/rehlds/Metamod-R/releases/
接下来,将下载的构建文件解压,将其中的 addons 目录整个放置于服务端根目录下的 cstrike 目录中。
└── cstrike├── addons
然后,编辑 ./cstrike/liblist.gmm 文件,找到 gamedll_linux 开头的行,并修改为以下值以启用 Metamod-R:
gamedll_linux "addons/metamod/metamod_i386.so"
2.6. 安装 AMX Mod X
在 AMX Mod X 的 GitHub 仓库下载二进制构建文件:https://github.com/alliedmodders/amxmodx/releases/。这里需要下载两个文件:base 与 cstrike,例如
amxmodx-1.9.0-git5303-base-linux.tar.gzamxmodx-1.9.0-git5303-cstrike-linux.tar.gz
解压两者,并先将 amxmodx-base 中的 addons 目录放置到服务端根目录下的 cstrike 目录中, 然后将 amxmodx-cstrike 中的 addons 目录按同样的位置放置并覆盖掉同名文件。
接下来,编辑 ./cstrike/addons/metamod/plugins.ini(没有则新建),写入以下内容:
linux addons/amxmodx/dlls/amxmodx_mm_i386.so
重要:与 ReHLDS 的情况相似,还需要清除 amxmodx 的核心二进制文件的可执行堆栈标记,否则可能会导致容器环境下 AMX Mod X 加载失败:
execstack -c ./cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so
2.7. 安装 ReAPI
在 ReAPI 的 GitHub 仓库下载二进制构建文件:https://github.com/rehlds/ReAPI/releases/
解压,并将目录下的 addons 复制到 ./cstrike 。
2.8. 验证安装
在服务器根目录下执行如下命令快速启动服务器:
./hlds_run \-game cstrike \-insecure \-nomaster \-ip 0.0.0.0 \+maxplayers 10 \+map de_dust2
如果 ReHLDS、ReGameDLL、Metamod-R、AMX Mod X 均安装成功,应当能在控制台输出信息中看到相关字样,例如:
Metamod-r v1.3.0.149, API (5:13)ReGameDLL version: 5.28.0.756-devExecuting AMX Mod X Configuration File
在启动的服务端的控制台中执行以下命令验证插件基础设施是否安装成功:
meta list
期望输出示例:
description stat pend file vers src load unload[ 1] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5303 ini Start ANY[ 2] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5303 pl1 ANY ANY[ 3] CSX RUN - csx_amxx_i386.so v1.9.0.5303 pl1 ANY ANY
继续执行以下命令验证 AMX Mod X 与相关的插件是否安装成功:
amxx list
期望输出示例:
Currently loaded plugins:name version author file status[ 1] Admin Base 1.9.0.5303 AMXX Dev Team admin.amxx running[ 2] Admin Commands 1.9.0.5303 AMXX Dev Team admincmd.amxx running[ 3] Admin Help 1.9.0.5303 AMXX Dev Team adminhelp.amxx running[ 4] Slots Reservation 1.9.0.5303 AMXX Dev Team adminslots.amxx running[ 5] Multi-Lingual System 1.9.0.5303 AMXX Dev Team multilingual.am running[ 6] Menus Front-End 1.9.0.5303 AMXX Dev Team menufront.amxx running[ 7] Commands Menu 1.9.0.5303 AMXX Dev Team cmdmenu.amxx running[ 8] Players Menu 1.9.0.5303 AMXX Dev Team plmenu.amxx running[ 9] Maps Menu 1.9.0.5303 AMXX Dev Team mapsmenu.amxx running[ 10] Plugin Menu 1.9.0.5303 AMXX Dev Team pluginmenu.amxx running[ 11] Admin Chat 1.9.0.5303 AMXX Dev Team adminchat.amxx running[ 12] Anti Flood 1.9.0.5303 AMXX Dev Team antiflood.amxx running[ 13] Scrolling Message 1.9.0.5303 AMXX Dev Team scrollmsg.amxx running[ 14] Info. Messages 1.9.0.5303 AMXX Dev Team imessage.amxx running[ 15] Admin Votes 1.9.0.5303 AMXX Dev Team adminvote.amxx running[ 16] NextMap 1.9.0.5303 AMXX Dev Team nextmap.amxx running[ 17] Nextmap Chooser 1.9.0.5303 AMXX Dev Team mapchooser.amxx running[ 18] TimeLeft 1.9.0.5303 AMXX Dev Team timeleft.amxx running[ 19] Pause Plugins 1.9.0.5303 AMXX Dev Team pausecfg.amxx running[ 20] Stats Configuration 1.9.0.5303 AMXX Dev Team statscfg.amxx running[ 21] StatsX 1.9.0.5303 AMXX Dev Team statsx.amxx running
21 plugins, 21 running
3. 添加死斗插件与 YaPB 人机
继续这一步之前,请确认上一步的服务器基架搭建已经正确完成。
3.1. 添加 ReDeathmatch 插件
在 ReDeathmatch 的 GitHub 仓库下载二进制构建文件:https://github.com/ReDeathmatch/ReDeathmatch_AMXX/
解压,并将目录下的 cstrike 复制到服务端根目录。
是的,无需编辑 AMX Mod X 的 plugins.ini,ReDeathmatch 自带的 plugins-redm.ini 本身就会被 AMX Mod X 读取。
非必要,但推荐:编辑 ./cstrike/addons/amxmodx/configs/plugins-redm.ini,注释掉插件的 debug 标记,如下:
; Main plugin
ReDeathmatch.amxx ;debug; Addons
redm_spawns.amxx ;debug
如果需要对死斗规则进行调整,可修改其配置文件 cstrike/addons/amxmodx/configs/redm/gamemode_deathmatch.json
3.2. 添加 YaPB 人机
在 YaPB 的 GitHub 仓库下载二进制构建文件:https://github.com/yapb/yapb/releases/
解压,并将目录下的 addons 目录复制到服务端根目录下的 cstrike 目录中。
打开 ./cstrike/addons/metamod/plugins.ini,添加 YaPB 启用配置。结合先前的配置,当前的 metamod 的 plugins.ini 长这样:
linux addons/yapb/bin/yapb.so
linux addons/amxmodx/dlls/amxmodx_mm_i386.so
打开 ./cstrike/addons/yapb/conf/yapb.cfg,做一下简单配置,如下:
yb_quota "10" // 服务器里保持10个Bot
yb_autovacate "1" // 真人进服时,自动踢掉一个Bot腾位置
yb_join_after_player "1" // 真人进服后Bot才加入 (省服务器资源)yb_ignore_objectives "1" // 强制Bot无视C4和人质任务,纯粹杀人
yb_camping_allowed "0" // 禁止Bot老六蹲坑,强制它们全图游走对枪
yb_walking_allowed "0" // 禁止Bot静步走,死斗就是要求跑起来打yb_difficulty "3" // 难度等级
yb_shoots_thru_walls "2" // 允许Bot穿墙射击
YaPB 提供了大量参数控制人机行为,并且对每个参数都做了注释说明,可根据自身需求进行调整。
4. 运行服务器
使用以下命令启动服务器:
./hlds_run \-game cstrike \-insecure \-nomaster \-ip 0.0.0.0 \+maxplayers 10 \+map de_dust2
如果倾向于使用容器化部署,建议基于 cm2network/steamcmd:
podman run --rm -it --network host --userns keep-id --workdir /app \-v ./counter-strike:/app \cm2network/steamcmd \/app/hlds_run \-game cstrike \-insecure \-nomaster \-ip 0.0.0.0 \+maxplayers 10 \+map de_dust2
5. 其他
5.1. CSCZ 兼容性
上述改造流程基本完美适配 CSCZ,只是 cstrike 目录变为 czero,服务端下载的 steamcmd 命令有变化:
app_set_config 90 mod czero
6. 参考资料
- Gemini 3.1 Pro
- https://rehlds.dev/
- https://github.com/rehlds/ReHLDS
- https://github.com/rehlds/ReGameDLL_CS
- https://github.com/rehlds/metamod-r
- https://github.com/rehlds/ReAPI
- https://github.com/alliedmodders/amxmodx
- https://github.com/ReDeathmatch/ReDeathmatch_AMXX
- https://github.com/yapb/yapb
- https://www.amxmodx.org/downloads.php
- https://redeathmatch.github.io/en/Getting-started/installation/
- https://yapb.readthedocs.io/en/latest/
- https://blog.timxs.com/docs/cs1.6/plugins
