理论
一些基本理论
服务端大部分时候都是吃单核性能的。
服务端在三大平台都可以完美运行(Windows,Linux,Mac os)。
服务器领域Linux是最理想的。
看需求,配配置
讲到底,一个好的服务器,是离不开好的配置。但是配置用在不正确的地方,那么既浪费钱,又浪费时间,开了又没意思。
不过说来说去,对于CSGO的服务器,无非就是两种方向:
- 竞技,原汁原味
- 娱乐,可玩性高
第一个方向,追求的就是:超低Sv、超低Var、超低的延迟。
- CPU的需求
在这个需求下,CPU往往是最重要的。根据上面的理论,就可以知道:想要无限接近完美,就需要一颗高频的CPU。
按照现在CPU的形式,使用英特尔的CPU是比较好的选择,因为内存延迟算比较低,这样Var也会相应降低一点。
- 网络需求
在大部分游戏里,CSGO算是很节约带宽了。
经过我的测试,一个客户端在 128Ticks 下,服务器汇报其他全部客户端需要的带宽是 65-80KB/s,也就是十个人需要 800KB/s,四舍五入就是 10 兆带宽。
按照每个玩家分布的地区,选择最近的读取就可以
- 内存需求
没什么需求,只要够2G,就可以开一个服务器。
第二个方向,追求的是:人头数,不卡顿。
人头数,也就是最多64个人。
这个方向无非就是带宽要够大,CPU要保证服务器不卡死,内存可以容纳就好了,按照第一个方向计算就可以了。
网络延迟基本上控制在70以下,体验一般都不会太差。
实战(以 Ubuntu 16.04 LTS 为例子)
安装CSGO服务端
方向有两个
- 从Ubuntu仓库下载SteamCMD
- 手动安装SteamCMD
先从仓库下载讲起
因为有些大陆的镜像仓库不会完全Mirror的,而有些云服务器供应商默认会设置为自己的镜像仓库,所以若使用云服务的话,要不将仓库更换为Ubuntu/Debian,要不直接跳过这篇,直接看 手动安装 就可以了,原因在第二个方法会讲。
1、如果你是刚 部署/安装 强烈建议先刷新 apt 的软件包索引:
ubuntu@ubuntu-virtual-machine:~$ sudo apt-get update
如果提示以下信息,请输入你当前用户的密码
[sudo] password for ubuntu:
输入时是隐藏的,请按照你的密码按键顺序打进去就行了
等待重新显示以下信息,即可进行下一步操作
ubuntu@ubuntu-virtual-machine:~$
其实就是显示等待输入指令就可以了。
2、从软件仓库安装SteamCMD
ubuntu@ubuntu-virtual-machine:~$ sudo apt-get install steamcmd
过程中会显示一个 TUI(控制台UI),他的意思是问你是否同意Valve的协议,按一下方向键(→),(ENTER)OK,(↓)选中“I AGREE”就可以继续安装。
安装完成后继续下一步。
3、启动SteamCMD,安装CSGO服务器
ubuntu@ubuntu-virtual-machine:~$ steamcmd
接下来就会更新SteamCMD客户端,等待一段时间直到显示以下内容,就可以继续了。
Steam>
注意:进入SteamCMD之后,(↑)(↓)(←)(→)是无法切换上一条指令和移动光标的,请务必一个一个按钮按下才确认回车。
输入以下指令指定安装目录
Steam>force_install_dir /home/ubuntu/csgods/
安装目录请自己思考,这个路径知识例子。
以匿名方式登入Steam服务器。
Steam>login anonymous
开始安装服务端
Steam>app_update 740 vailable
等待安装完毕后,输入以下指令即可退出SteamCMD
Steam>quit
4、启动CSGO服务端(匿名离线模式)
切换到CSGO服务端目录
ubuntu@ubuntu-virtual-machine:~/csgods$ cd csgods
开始启动服务端
ubuntu@ubuntu-virtual-machine:~/csgods$ ./srcds_run +map de_dust2 +sv_lan 1
到这时,你就可以回到CSGO客户端,开始尝试连接你的服务器了。
connect 你的IP地址:端口
不过在那之前,先将客户端切换为本地模式
sv_lan 1
到此大功告成!如果想在互联网开放服务器,请看下一章节。
手动安装
即使大陆的镜像仓库没有SteamCMD,但肯定还是会镜像些通用的依赖。
1、从仓库安装依赖
ubuntu@ubuntu-virtual-machine:~$ sudo apt-get install lib32gcc1
注意:不同的Linux发行版需要的依赖都不一样,请参照 Valve官方文档 查询需要安装的依赖
2、获取SteamCMD并解压
ubuntu@ubuntu-virtual-machine:~$ mkdir steamcmd
ubuntu@ubuntu-virtual-machine:~$ cd steamcmd
ubuntu@ubuntu-virtual-machine:~$ wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz"
ubuntu@ubuntu-virtual-machine:~$ cd tar -xzvf steamcmd_linux.tar.gz
此时,SteamCMD就算安装好了。
3、运行SteamCMD
ubuntu@ubuntu-virtual-machine:~$ cd steamcmd
ubuntu@ubuntu-virtual-machine:~/steamcmd$ ./steamcmd.sh
接下来的操作就可以从上面的(3)小节继续了。
让CSGO服务器运行在互联网
Valve官方限制了CSGO服务端,使得互联网的客户端无法顺利连接没有令牌的CSGO服务器。
申请令牌的条件也很简单。首先,你需要满足以下条件:
- 您的 Steam 帐户目前不能处于社区封禁或锁定状态。
- 您的 Steam 帐户不能受限。
- 您的 Steam 帐户必须拥有一个合格的注册手机。
- 您的 Steam 帐户必须拥有所创建游戏服务器对应的游戏。
- 您的 Steam 帐户可以创建 1000 个游戏服务器帐户。
摘自 Steam游戏服务器管理页面(点击跳转,需要科学上网)
如果您满足以上条件,那么直接在上面的网页登入Steam即可。
在网页的最下方,会要求你填写游戏的App ID,在输入框内填写“740”。
备忘录按照自己的需求填写即可。
最后点击“创建”。
网页刷新以后,将会显示您刚创建的服务器令牌。
回到服务端那,切换到 /csgo/cfg/ 目录
ubuntu@ubuntu-virtual-machine:~/csgods$ cd csgo/cfg
使用任意编辑器新建并编辑 “server.cfg”,我的习惯是VIM
ubuntu@ubuntu-virtual-machine:~/csgods$ vim server.cfg
输入以下内容
sv_setsteamaccount <你刚创建的令牌>
保存并退出,启动服务器之后就可以从互联网连接了。
记得在去除启动参数“+sv_lan 1”
恭喜,您现在已经知道如何开CSGO社区服了。
一些常用的知识
常用的启动参数
参数前面是“-”号的是启动服务端之前会执行的,一般是服务端加载时用来初始化的参数。
参数前面是“+”号的是服务端完成启动后会执行的,一般是游戏参数,也就是平时我们打的控制台指令
常用的启动前参数( - )
-tickrate <20-128> :服务器的Tick数,俗称的 128ticks 64ticks 都会使用这条参数初始化
-nomaster :不和 Master服务器 通讯,可以理解为加了之后不会在社区服务器列表暴露服务器给不怀好意的人,泛指喜欢DDOS、炸服的人。
-insecure :不启用VAC安全模块,即是否开启反作弊。
常用的启动后参数 ( + )
+game_mode <数值> :游戏模式,需要配合game_type
+game_type <数值> :游戏类型,需要配合game_mode
两个参数的组合如下表所示:
game_type |
game_mode |
||||
---|---|---|---|---|---|
0 | 1 | 2 | 3 | ||
经典模式 | 0 | ![]() |
![]() |
![]() |
武器专家 |
武器游戏 | 1 | ![]() |
![]() |
![]() |
|
训练 | 2 | ![]() |
|||
自定义 | 3 | 自定义 | |||
合作模式 | 4 | ![]() |
|||
冲突模式 | 5 | ![]() |
|||
自由模式 | 6 | ![]() |
摘自 CSGO官方游戏模式文章(点击跳转)并翻译
+map <地图名称> :加载地图
+sv_lan <1/0> :启用/禁用 本地服务器模式
常用指令(写进server.cfg可以自动执行)
//游戏类
mp_restartgame <秒数> :多少秒重启游戏
mp_warmup_pausetimer <1/0> :开启/关闭 停止热身计时器功能
mp_warmup_end :跳过热身阶段
sv_minupdaterate
sv_mincmdrate
//回放类
tv_enable <1/0> :启用/关闭 GOTV
tv_record <文件名> :手动录制demo
tv_autorecord <1/0> :开启/关闭 自动录制demo
tv_snapshotrate <帧数> :demo录制的帧数
//准备类
changelevel <地图名>:切换地图
disconnect :断开与所有玩家的连接
quit :关闭服务器
其他的指令就自己摸索吧。
祝贺你可以顺利开启你的CSGO服务器之旅。
用 Cookie 保存: 别名、Email