腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器
  NVYU4IWbrM0W 2023年11月02日 77 0

前言

今天在找文档的时候又回到了久违的51CTO,看了下N年前自己在这里留下一字一句,真是感慨岁月是一把杀猪刀啊!!!

正好最近不知为何,组里的兄弟们开始玩起回忆杀,每周五晚上孩子睡觉后都会来一场CS1.6的对决,(真是男人至死是少年啊!!!),我也再次用51CTO这块宝地记录下这个有意思的事情。

大家第一次说起这个事的时候都决定使用已有的互联网平台来联机,大家的认知中肯定是浩方啦 (其实是中年人就只知道这个平台)。使用了一段时间浩方后发现很多问题:第一大家家里的宽带ISP不同。第二就是浩方仍然使用玩家自己建主机的方式,除了主机方不会有卡顿问题外,其他人的延迟和连通性是特别不稳定的。所以每周都会出现各种各样的问题,有进不去房间的,有延时1000毫秒多的,简直毫无游戏体验,这严重打击了中年老年人们的热情。。。大家都不是重度玩家,也没必要到Steam里去体验正版游戏。网上别人做好的服务器大家也不想去和别人混战。正好最近腾讯云年底活动,大家测试了到腾讯云北京的延迟和稳定性都特别好,所以本人从私房钱里拿出一笔巨款,斥资140元搭建了一个CS服务器在腾讯云北京,最后大家所有人的延时都控制在50毫秒以内,而且特别稳定,完美解决问题。下面记录下整个服务器搭建的过程。


私房钱已花,放图镇楼~~~其实是139元,有1元钱活动价买了个50GBCOS对象存储。2CPU+4GB RAM+6M带宽+100GB出栈流量的轻量应用服务器,CS服务器这个东西超级省资源,早知道买79元的主机了。。。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd


开始前先鸣谢这些文章的作者,受益匪浅。

​腾讯云轻量吃灰小鸡搭建CS1.6服务器-羊毛之家 (yangmao.info)​

​(7条消息) 2021年 在Linux系统(debian11)使用LinuxGSM搭建CS1.6服务器教程_Reven_L的博客-CSDN博客_cs1.6服务器搭建​

​cs1.6服务器搭建 2021-11-30 - 王冰冰 - 博客园 (cnblogs.com)​

再有,由于过程中需要去访问Steam和Github,我是用的北方联通,时不时的就无法访问,但是多尝试几次就都OK了。。如果大家有访问不了的或者不稳定,我相信你们会有办法的,哈哈。

开始前再啰嗦一句,由于服务器端和CS游戏客户端很多文件是通用的,所以请大家最好先下载一个windows能用的CS1.6游戏,后面会说加机器人BOT,所以最好下一个带机器人的版本,同样带的地图越多越好。


安装SteamCMD

开始啦~~~~


由于是腾讯云的主机,所以yum都是默认配置好的指向腾讯镜像,没啥说的直接无脑用就完了。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_02

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_03

安装需要的库,有一些默认已经装好了。

yum install glibc libstdc++
yum install glibc.i686 libstdc++.i686

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_04

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_05

Steamcmd是用作搭建CS服务器的平台,先来安装它。

创建一个独立的运行steamCMD的账号,以及存放steamCMD软件的目录。

useradd -m steam
sudo passwd steam
su – steam
mkdir ~/Steam && cd ~/Steam

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_06

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_07

下载steamcmd并解压到Steam目录

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxf

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_08

安装CS Server

运行steamcmd.sh打开steam命令模式,准备开始安装准备安装服务器,第一次运行需要花费一些时间下载steamcmd的更新内容。

./steamcmd.sh

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_09

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_10

在Steam的命令行下执行以下命令来下载和安装CS相关的内容,login命令其他文档里都是用匿名登录,但是我这边用匿名无法正常下载,最后我申请了steam账号并登录完美解决。

force_install_dir ./cs16/
login <your_steam_Account>
app_set_config 90 mod cstrike
app_update 90 validate

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_11

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_12

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_13


看到上面的Success! App '90' fully installed. quit退出Steam命令行。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_14

上面的过程中我这边会出现下载失败的情况,反正多试几次就好了。中间也发生了提示下载完成后缺少文件的,卸载现有的,然后重新下载。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_15

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_16

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_17

设置服务器配置

vi /home/steam/Steam/cs16/cstrike/server.cfg

主要的就是设置sv_password(链接服务器的密码)和rcon_password(OP密码,也就是管理员密码), 如果想给服务器改个名字也可以。这个配置文件还有许多可以配置的东西,大家可以去网上搜索下,或者说从下载好的cs游戏客户端里也可以直接复制一份。​​https://cs1-6cfg.blogspot.com/p/cs-16-client-and-console-commands.html​

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_18

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_19

然后就是创建两个空文件,这两个文件是用作存放黑名单的。

touch /home/steam/Steam/cs16/cstrike/listip.cfg && chmod 775 /home/steam/Steam/cs16/cstrike/listip.cfg
touch /home/steam/Steam/cs16/cstrike/banned.cfg && chmod 775 /home/steam/Steam/cs16/cstrike/banned.cfg

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_20

到此为止其实一旦启用服务就已经可以用正版CS游戏客户端来连接了,但是书接上文我们就是网上随便下载个绿色版然后随便玩玩,所以我们需要绕过检查,下面会用到metamod来管理插件rehlds+reunion。所以这里就先不启用服务了,接着往下说。


安装metamod插件管理

由于我没有使用Putty+WinSCP这类的SSH工具,所以以下就都是基于腾讯云的WebShell来做的。由于WebShell传文件默认是放到登录账号的家目录,以及后续要测试启用服务,所以为了方便就直接用steam这个账号登录了。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_21

先创建以下目录。

mkdir -p /home/steam/Steam/cs16/cstrike/addons/metamod/dlls

然后去下载metamod的压缩包 ​​https://github.com/theAsmodai/metamod-r​​ ,我这边为了方便直观就直接下载到了我的Windows11机器上。解压后找到addons\metanod\metamod_i386.so这个文件。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_22

然后上传到steam账号的家目录。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_23

拷贝到刚才创建好的目录里。

cp ~/metamod_i386.so ~/Steam/cs16/cstrike/addons/metamod/dlls/

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_24

编辑liblist.gam这个配置文件,先把原始的备份以下。

cp /home/steam/Steam/cs16/cstrike/liblist.gam /home/steam/Steam/cs16/cstrike/liblist.gam.bak
vi /home/steam/Steam/cs16/cstrike/liblist.gam

设置以下三行配置:

gamedll_linux "addons/metamod/dlls/metamod_i386.so"
gamedll_chain "dlls/cs.so"
gamedll_osx "dlls/cs.dylib"

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_25


安装rehlds插件

先下载rehlds的压缩包 ​https://github.com/dreamstalker/rehlds,​​然后解压得到bin\linux32\engine_i486.so这个文件。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_26

上传到steam账号的家目录,备份原始的engine_i486.so文件后用刚刚下载的engine_i486.so来替换。

cp /home/steam/Steam/cs16/engine_i486.so /home/steam/Steam/cs16/engine_i486.so.bak
rm /home/steam/Steam/cs16/engine_i486.so && cp ~/engine_i486.so /home/steam/Steam/cs16/engine_i486.so
echo "linux addons/reunion/reunion_mm_i386.so" >>/home/steam/Steam/cs16/cstrike/addons/metamod/plugins.ini

安装reunion插件

我这边找到这个资源是在这个国外的论坛里 ​​https://cs.rin.ru/forum​​ ,论坛注册的时候会有一个防止机器人的确认问题,我这边遇到的是拖拽哪个游戏公司都有哪些游戏,耐心一点一边百度一边拖拽就行。注册成功后很人性化,直接就能下载。

下载完压缩包,同样解压缩到本地。找到reunion.cfg和bin\Linuxreunion_mm_i386.so这两个文件。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_27

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_28

上传这两个文件到steam的家目录后,创建目录并拷贝到新创建的目录。

mkdir -p /home/steam/Steam/cs16/cstrike/addons/reunion
cp /home/steam/reunion_mm_i386.so /home/steam/Steam/cs16/cstrike/addons/reunion/reunion_mm_i386.so
cp /home/steam/reunion.cfg /home/steam/Steam/cs16/reunion.cfg

添加一条配置到metamod的插件管理配置文件中。

echo "linux addons/reunion/reunion_mm_i386.so" >>/home/steam/Steam/cs16/cstrike/addons/metamod/plugins.ini

到这里只要启动CS服务器,我们的老伙伴们其实就可以愉快的一起玩耍啦。


启动CS服务器

我们先用命令来前台运行CS服务器,方便查看Error信息。忽略截图中的地图名(是服务器都创建好后截的图,这个图是我们这些老家伙的最爱),到这里只有官方默认带的地图,fy_iceworld是我自己后加的,后面我会写怎么加地图。

具体的参数意义大家可以去网上找下,我也只是照搬过来的~~~~启动中会有无法读取steamclient.so的报错,我确认安装steamCMD的时候没有问题,不管怎么说这个报错并没有影响服务器的正常运行,我就暂且先忽略它了。

cd /home/steam/Steam/cs16/
./hlds_run -game cstrike +port 27015 +map de_dust2 +maxplayers 16

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_29

确保UDP:27015端口已经被监听。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_30

开放防火墙,由于我是腾讯云主机,所以默认iptables和firewalld都没有启用,只需要修改腾讯云自带的防火墙即可。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_31

如果是本地防火墙,以iptables为例添加下面的规则。

iptables -I INPUT -p udp --dport 27015 -j ACCEPT
iptables-save

激动的时刻来了,我们要开始进入到游戏中了,你的敌人还有1分钟到达战场。

进入游戏后在主屏幕界面,按键盘左上角ESC下面/数字1左面的 “~” 按键,然后会出现CS控制台。在控制台中以此输入下面两个命令。

password <server.cfg配置文件中的sv_password>
connect <你的服务器公网IP地址:27015>

如果顺利进入游戏,恭喜你,你已经可以开始体验畅快的游戏了。。。如果不能进入,对不起,我还没遇见这个问题,哈哈哈!!!


设置systemctl守护

我们肯定不希望每次开机都是手动启用CS服务器,同时还是运行在前台,设置systemctl守护是最简单直接的方法。

切换到root账号,并添加csserver.service文件。

su -
vi /lib/systemd/system/csserver.service

内容如下:

[Unit]
Descriptinotallow=cs1.6 server

[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/Steam/cs16
ExecStart=/usr/bin/bash hlds_run -game cstrike +port 27015 +map fy_iceworld +maxplayers 16
Restart=always

[Install]
WantedBy=multi-user.target

保存后启用csserver并设置开机自动启动。

systemctl start csserver
systemctl enable csserver

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_32


[非必要]安装机器人BOT插件

考虑到有的时候只有2到3人临时起意一起玩一会儿,为了避免无趣,急需大批机器人到达战场。我使用的是CSBotEnabler插件,到这里 ​​​​https://github.com/Arkshine/CSBotEnabler​​ 可以下载到。

解压后找到addons\csbot_enabler\csbot_enabler_mm_i386.so和addons\csbot_enabler\config.cfg这两个文件。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_33

上传这两个文件到steam账号的家目录下。然后创建插件目录,并把文件拷贝到新创建的目录中。

mkdir -p /home/steam/Steam/cs16/cstrike/addons/csbot_enabler
cp ~/csbot_enabler_mm_i386.so /home/steam/Steam/cs16/cstrike/addons/csbot_enabler/csbot_enabler_mm_i386.so
cp ~/config.cfg /home/steam/Steam/cs16/cstrike/addons/csbot_enabler/config.cfg

增加一条配置到metamod的插件配置文件中。

echo "linux addons/csbot_enabler/csbot_enabler_mm_i386.so" >>/home/steam/Steam/cs16/cstrike/addons/metamod/plugins.ini

到这里插件安装完成,但是并无法添加机器人,因为这个插件是需要机器人的定义文件以及对应的声音文件的。按照作者的描述我们还需要声音文件sound\radio\bot\*.wav, BotChatter.db和BotProfile.db的机器人定义文件。所以问题来了,去哪里找这些资源呢?我去网上找了下,确实有一些大神发布,但是总是不完整或者无法下载。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_腾讯云_34

最后我发现这些文件我们直接可以在我本地下载好的支持机器人的CS游戏客户端中找到。直接找到这些文件,并上传拷贝到对应目录即可。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_35

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_reunion_36

由于WebShell没有办法传输文件夹,所以我只能给声音文件打个zip包了。如果用WinSCP啥的,直接拷贝过去就行了。

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_37

cp /home/steam/Bot*.db /home/steam/Steam/cs16/cstrike/
unzip ~/Bot.zip -d /home/steam/Steam/cs16/cstrike/sound/radio/

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_CS1.6_38

然后重启csserver。

systemctl stop csserver
systemctl start csserver

再次进入游戏房间后需要先取得OP权限,然后即可添加删除机器人。游戏房间中打开控制台输入OP密码后才有权限执行操作。

#输入OP密码
rcon_password <server.cfg配置文件中的rcon_password>
#指定机器人数量
rcon bot_quota <机器人数量>
#添加反恐精英
rcon bot_add_ct
#添加恐怖分子
rcon bot_add_t
#踢出所有BOT (二选一即可)
rcon bot_quota 0
rcon bot_kick

在游戏中机器人BOT相关的命令可以在github的说明中找到,由于我的游戏客户端直接就有快捷界面,所以我也没研究。


[非必要]添加地图

上面我说到了默认没有fy_iceworld的地图,同样大家比较喜欢的cs_bloodstrike cs_assault awp_map这类地图也是没有的。下面说的会以我们这些老同志的最爱fy_iceworld为例。

网上会有大神们制作的地图包 (​​Index of /cs16/maps/ (fsho.st)​​),但是我比较懒直接在本地的游戏客户端中就找到啦。有的地图是两个文件,有的是一个,有的是三个。。。不管怎么说,有几个就拿走几个,简单粗暴!!!

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_39

上传到steam的家目录后拷贝到对应的地图目录中。

cp ~/fy_iceworld.* ~/Steam/cs16/cstrike/maps/

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_40

只是简单的上传完地图文件会导致服务端报错无法启动(说找不到de_vegas.wad文件),搜索了一下,有人说到wad的文件也需要。我没仔细研究,所以就一股脑的把客户端里有但是服务端没有的wad文件就都放到服务器端的目录中了,问题直接解决。至于怎么比较文件,大家一定有办法,但是我不能告诉你们我是用眼睛看的,哈哈哈!

​https://gaming.stackexchange.com/questions/34838/load-more-maps-for-counter-strike-1-6​

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_steamcmd_41

腾讯云CentOS 7.6轻量应用服务器搭建CS 1.6服务器_rehlds_42

游戏房间里取得OP权限后可以在控制台中切换地图。

rcon changelevel <地图名字>

或者在启动cs服务器的命令中指定默认地图即可。


写在最后

一波回忆杀,一群中年人打老掉牙的游戏,娱乐至上,但我们这批IT人又有几个不是从年少时的游戏中开始启蒙的呢?又一波回忆杀,51CTO曾经记录过我年少轻狂的地方,十余年之后我又熬夜记录下了一个时刻!!!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
NVYU4IWbrM0W