前言
今天在找文档的时候又回到了久违的51CTO,看了下N年前自己在这里留下一字一句,真是感慨岁月是一把杀猪刀啊!!!
正好最近不知为何,组里的兄弟们开始玩起回忆杀,每周五晚上孩子睡觉后都会来一场CS1.6的对决,(真是男人至死是少年啊!!!),我也再次用51CTO这块宝地记录下这个有意思的事情。
大家第一次说起这个事的时候都决定使用已有的互联网平台来联机,大家的认知中肯定是浩方啦 (其实是中年人就只知道这个平台)。使用了一段时间浩方后发现很多问题:第一大家家里的宽带ISP不同。第二就是浩方仍然使用玩家自己建主机的方式,除了主机方不会有卡顿问题外,其他人的延迟和连通性是特别不稳定的。所以每周都会出现各种各样的问题,有进不去房间的,有延时1000毫秒多的,简直毫无游戏体验,这严重打击了中年老年人们的热情。。。大家都不是重度玩家,也没必要到Steam里去体验正版游戏。网上别人做好的服务器大家也不想去和别人混战。正好最近腾讯云年底活动,大家测试了到腾讯云北京的延迟和稳定性都特别好,所以本人从私房钱里拿出一笔巨款,斥资140元搭建了一个CS服务器在腾讯云北京,最后大家所有人的延时都控制在50毫秒以内,而且特别稳定,完美解决问题。下面记录下整个服务器搭建的过程。
私房钱已花,放图镇楼~~~其实是139元,有1元钱活动价买了个50GBCOS对象存储。2CPU+4GB RAM+6M带宽+100GB出栈流量的轻量应用服务器,CS服务器这个东西超级省资源,早知道买79元的主机了。。。
开始前先鸣谢这些文章的作者,受益匪浅。
腾讯云轻量吃灰小鸡搭建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都是默认配置好的指向腾讯镜像,没啥说的直接无脑用就完了。
安装需要的库,有一些默认已经装好了。
Steamcmd是用作搭建CS服务器的平台,先来安装它。
创建一个独立的运行steamCMD的账号,以及存放steamCMD软件的目录。
下载steamcmd并解压到Steam目录
安装CS Server
运行steamcmd.sh打开steam命令模式,准备开始安装准备安装服务器,第一次运行需要花费一些时间下载steamcmd的更新内容。
在Steam的命令行下执行以下命令来下载和安装CS相关的内容,login命令其他文档里都是用匿名登录,但是我这边用匿名无法正常下载,最后我申请了steam账号并登录完美解决。
看到上面的Success! App '90' fully installed. quit退出Steam命令行。
上面的过程中我这边会出现下载失败的情况,反正多试几次就好了。中间也发生了提示下载完成后缺少文件的,卸载现有的,然后重新下载。
设置服务器配置
主要的就是设置sv_password(链接服务器的密码)和rcon_password(OP密码,也就是管理员密码), 如果想给服务器改个名字也可以。这个配置文件还有许多可以配置的东西,大家可以去网上搜索下,或者说从下载好的cs游戏客户端里也可以直接复制一份。https://cs1-6cfg.blogspot.com/p/cs-16-client-and-console-commands.html
然后就是创建两个空文件,这两个文件是用作存放黑名单的。
到此为止其实一旦启用服务就已经可以用正版CS游戏客户端来连接了,但是书接上文我们就是网上随便下载个绿色版然后随便玩玩,所以我们需要绕过检查,下面会用到metamod来管理插件rehlds+reunion。所以这里就先不启用服务了,接着往下说。
安装metamod插件管理
由于我没有使用Putty+WinSCP这类的SSH工具,所以以下就都是基于腾讯云的WebShell来做的。由于WebShell传文件默认是放到登录账号的家目录,以及后续要测试启用服务,所以为了方便就直接用steam这个账号登录了。
先创建以下目录。
然后去下载metamod的压缩包 https://github.com/theAsmodai/metamod-r ,我这边为了方便直观就直接下载到了我的Windows11机器上。解压后找到addons\metanod\metamod_i386.so这个文件。
然后上传到steam账号的家目录。
拷贝到刚才创建好的目录里。
编辑liblist.gam这个配置文件,先把原始的备份以下。
设置以下三行配置:
安装rehlds插件
先下载rehlds的压缩包 https://github.com/dreamstalker/rehlds,然后解压得到bin\linux32\engine_i486.so这个文件。
上传到steam账号的家目录,备份原始的engine_i486.so文件后用刚刚下载的engine_i486.so来替换。
安装reunion插件
我这边找到这个资源是在这个国外的论坛里 https://cs.rin.ru/forum ,论坛注册的时候会有一个防止机器人的确认问题,我这边遇到的是拖拽哪个游戏公司都有哪些游戏,耐心一点一边百度一边拖拽就行。注册成功后很人性化,直接就能下载。
下载完压缩包,同样解压缩到本地。找到reunion.cfg和bin\Linuxreunion_mm_i386.so这两个文件。
上传这两个文件到steam的家目录后,创建目录并拷贝到新创建的目录。
添加一条配置到metamod的插件管理配置文件中。
到这里只要启动CS服务器,我们的老伙伴们其实就可以愉快的一起玩耍啦。
启动CS服务器
我们先用命令来前台运行CS服务器,方便查看Error信息。忽略截图中的地图名(是服务器都创建好后截的图,这个图是我们这些老家伙的最爱),到这里只有官方默认带的地图,fy_iceworld是我自己后加的,后面我会写怎么加地图。
具体的参数意义大家可以去网上找下,我也只是照搬过来的~~~~启动中会有无法读取steamclient.so的报错,我确认安装steamCMD的时候没有问题,不管怎么说这个报错并没有影响服务器的正常运行,我就暂且先忽略它了。
确保UDP:27015端口已经被监听。
开放防火墙,由于我是腾讯云主机,所以默认iptables和firewalld都没有启用,只需要修改腾讯云自带的防火墙即可。
如果是本地防火墙,以iptables为例添加下面的规则。
激动的时刻来了,我们要开始进入到游戏中了,你的敌人还有1分钟到达战场。
进入游戏后在主屏幕界面,按键盘左上角ESC下面/数字1左面的 “~” 按键,然后会出现CS控制台。在控制台中以此输入下面两个命令。
如果顺利进入游戏,恭喜你,你已经可以开始体验畅快的游戏了。。。如果不能进入,对不起,我还没遇见这个问题,哈哈哈!!!
设置systemctl守护
我们肯定不希望每次开机都是手动启用CS服务器,同时还是运行在前台,设置systemctl守护是最简单直接的方法。
切换到root账号,并添加csserver.service文件。
内容如下:
保存后启用csserver并设置开机自动启动。
[非必要]安装机器人BOT插件
考虑到有的时候只有2到3人临时起意一起玩一会儿,为了避免无趣,急需大批机器人到达战场。我使用的是CSBotEnabler插件,到这里 https://github.com/Arkshine/CSBotEnabler 可以下载到。
解压后找到addons\csbot_enabler\csbot_enabler_mm_i386.so和addons\csbot_enabler\config.cfg这两个文件。
上传这两个文件到steam账号的家目录下。然后创建插件目录,并把文件拷贝到新创建的目录中。
增加一条配置到metamod的插件配置文件中。
到这里插件安装完成,但是并无法添加机器人,因为这个插件是需要机器人的定义文件以及对应的声音文件的。按照作者的描述我们还需要声音文件sound\radio\bot\*.wav, BotChatter.db和BotProfile.db的机器人定义文件。所以问题来了,去哪里找这些资源呢?我去网上找了下,确实有一些大神发布,但是总是不完整或者无法下载。
最后我发现这些文件我们直接可以在我本地下载好的支持机器人的CS游戏客户端中找到。直接找到这些文件,并上传拷贝到对应目录即可。
由于WebShell没有办法传输文件夹,所以我只能给声音文件打个zip包了。如果用WinSCP啥的,直接拷贝过去就行了。
然后重启csserver。
再次进入游戏房间后需要先取得OP权限,然后即可添加删除机器人。游戏房间中打开控制台输入OP密码后才有权限执行操作。
在游戏中机器人BOT相关的命令可以在github的说明中找到,由于我的游戏客户端直接就有快捷界面,所以我也没研究。
[非必要]添加地图
上面我说到了默认没有fy_iceworld的地图,同样大家比较喜欢的cs_bloodstrike cs_assault awp_map这类地图也是没有的。下面说的会以我们这些老同志的最爱fy_iceworld为例。
网上会有大神们制作的地图包 (Index of /cs16/maps/ (fsho.st)),但是我比较懒直接在本地的游戏客户端中就找到啦。有的地图是两个文件,有的是一个,有的是三个。。。不管怎么说,有几个就拿走几个,简单粗暴!!!
上传到steam的家目录后拷贝到对应的地图目录中。
只是简单的上传完地图文件会导致服务端报错无法启动(说找不到de_vegas.wad文件),搜索了一下,有人说到wad的文件也需要。我没仔细研究,所以就一股脑的把客户端里有但是服务端没有的wad文件就都放到服务器端的目录中了,问题直接解决。至于怎么比较文件,大家一定有办法,但是我不能告诉你们我是用眼睛看的,哈哈哈!
https://gaming.stackexchange.com/questions/34838/load-more-maps-for-counter-strike-1-6
游戏房间里取得OP权限后可以在控制台中切换地图。
或者在启动cs服务器的命令中指定默认地图即可。
写在最后
一波回忆杀,一群中年人打老掉牙的游戏,娱乐至上,但我们这批IT人又有几个不是从年少时的游戏中开始启蒙的呢?又一波回忆杀,51CTO曾经记录过我年少轻狂的地方,十余年之后我又熬夜记录下了一个时刻!!!