SteamCMD是一款个人网友开发的Steam局域网架设工具,让你能够利用本地局域网假设一个Steam服务器,然后可以邀请好友进入你的服务器游玩,CSGO,求生之路等都可以用这个工具来进行联机。
【原理说明】
所谓steamcmd,即steam的一个命令行版本,带有steam基础api,包括账户登陆,邮箱验证,游戏下载等功能。安装他的时候也会在磁盘上写入和桌面版steam相关的链接库,用来被游戏调用。也就是说通过steamcmd下载的游戏是可以正常运行的。然而steamcmd平时并不作为游戏下载工具,因为游戏必定有图形界面,那么既然有图形界面一定会使用更方便的桌面版steam。steamcmd的正确用法是用来下载游戏服务端(虽然有些游戏服务端就是游戏本体),然后在服务器上运行游戏服务端作为游戏服务器使用。
【使用说明】
使用命令设置SteamCMD
64位centos下使用以下命令进行安装
首先安装所需的32位依赖
yum install glibc.i686 libstdc++.i686
之后创建一个新账户,命名为steam,之所以需要创建一个新账户,是为了安全性而要求的。若使用root账户运行steamcmd会看到安全提醒。
useradd -m steam
之后切换到这个账户,注意这里的命令是 su空格-空格steam,这样做的话,切换后立即转到steam账户的~目录:su - steam
之后创建一个文件夹命名为steamcmd并进入:
mkdir ~/steamcmd
cd ~/steamcmd
使用wget下载steamcmd压缩包:
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
解压缩:
tar -xvzf steamcmd_linux.tar.gz
运行它:
cd ~/steamcmd
./steamcmd.sh
第一次启动steamcmd将会自动下载steamcmd全部文件,耐心等待即可。下一次启动时不需要再次下载。steamcmd启动后,会进入程序内的命令行界面。此处可以输入命令。以安装一个游戏为例,我们来介绍一下steamcmd的基础命令。
首先,和桌面版steam一样,我们首先需要登陆,比如我们用匿名账号登陆(匿名账号不需要密码):
login anonymous
登陆成功后我们指定游戏服务端安装目录,例如自定为上一层目录中的 cs_go 文件夹,注意,linux下的steamcmd只要制定了目录,就会立刻创建该目录,windows版steamcmd不会立刻创建,因此在linux下可以以此确认该命令是否正确按照预想设定。
force_install_dir ../cs_go/
之后我们要开始安装游戏服务端,以上面那个csgo为例,我们首先需要确认这个程序的app id,我们访问以下网址:
https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
该列表会显示所有steamcmd支持下载的服务端,ID这个column下就是我们需要的app id,例如我们找到csgo的id为740,使用以下命令:
app_update 740
进行安装,这里有几个参数说明,常用的其实只有validate参数。validate意味着校验,和桌面版steam上那个校验本地文件是一模一样的功能,注意,在任何app相关的命令使用前都需要先指定目录,否则视为当前目录。第一次安装程序,有没有validate效果是一样的。从原理上来说,更新服务端时如果不加validate应该会全部覆盖一次,但是我发现并没有,依然会首先校验本地文件和云端文件然后增量下载。换句话说,我发现有没有validate都是一样的,可能是我观测失误,推荐任何app_update命令全部加上validate参数。即以下命令 app_update 740 validate
按下回车后会不断提示下载进度,到达百分百后会回到steamcmd命令行,输入quit来退出steamcmd。
之后我们 cd ../cs_go 即可进入csgo服务端所在文件夹,然后根据具体服务端的启动方式来运行服务端。