一、SteamCMD是干嘛的?
SteamCMD 是 Steam 客户端的命令行版本。方便开发者管理Steam游戏服务器和下载游戏文件、更新游戏内容等。如果是你想要在Steam自建服务器,进行二次开发,SteamCMD是必需工具。今天飞飞将和你分享不同系统下载和安装SteamCMD的方法,希望可以帮助到你~
二、SteamCMD下载
VALVE I Developer Community开发者社区
1、Windows 操作系统
1)先为SteamCMD创建文件夹,例如:E:\SteamCMD
2)下载Windows版SteamCMD,下载好后解压到SteamCMD文件夹中
3)双击steamcmd.exe进行安装。
2、Linux操作系统
1)创建一个名为steam的用户以安全地运行SteamCMD,若是以root用户运行steamcmd会出现安全提醒,不可行。
sudo useradd -m steam
sudo passwd steam
进入其主文件夹
sudo -u steam -s
cd /home/steam
安装存储库的包
注:如果可用,建议从发行版提供的存储库中安装SteamCMD包
Ubuntu
要安装SteamCMD,必须启用multiverse repository和×86软件包
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
Debian
要安装SteamCMD,必须启用non-free repository和×86软件包
sudo apt update; sudo apt install software-properties-common; sudo apt-add-repository non-free; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
企业版Linux
注:没有rpm软件包可用于任何基于Red Hot的发行版。参考手动安装
Arch Linux
git clone https://aur.archlinux.org/steamcmd.git
cd steamcmd
makepkg -si
注:你需要安装base-devel软件包才能执行makepkg
sudo pacman -Syy base-devel
Gentoo Linux
emerge --ask games-server/steamcmd
Docker
如果你的服务器正在运行Docker,你可以简单地使用
docker run -it --name=steamcmd cm2network/steamcmd bash
steamcmd.sh位于/home/steam/steamcmd
手动安装
在开始之前,必须首先安装运行SteamCMD所需的依赖项
Ubuntu/Debian (x86-64)
sudo apt-get install lib32gcc-s1
Enterprise Linux (x86-64)
yum install glibc.i686 libstdc++.i686
作为root用户,升级到steam用户
su - steam
如果您不是以root用户身份登录,而是使用sudo执行管理,请按如下方式升级到steam用户
sudo -iu steam
为SteamCMD创建一个目录并切换到该目录
mkdir ~/Steam && cd ~/Steam
下载并解压
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
macOS
打开Terminal.app并为SteamCMD创建一个目录
mkdir ~/Steam && cd ~/Steam
下载并解压适用于macOS的steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -
三、运行steamcmd
在第一次运行时,SteamCMD将自动更新并进入Steam>提示。键入help以获取详细信息
Windows
打开命令提示符并启动SteamCMD
cd C:\steamcmd
steamcmd
Linux
打开终端并启动SteamCMD
如果你使用的是存储库中的包进行安装
steamcmd
如果你是手动安装
cd ~/Steam
./steamcmd.sh
macOS
打开终端并启动steamcmd
如果你使用的是存储库中的包进行安装
cd ~
steamcmd
如果你是手动安装
cd ~/Steam
./steamcmd.sh
四、SteamCMD登录
要下载大多数游戏服务器,您可以匿名登录
login anonymous
一些服务器要求使用steam账户登录
注:处于安全考虑,建议你为专用服务器创建一个新的steam账号。
用户在任何时候只能登录一次(包括grapical客户端和steamcmd登录)
login <username>
接下来输入你的密码
如果Steam Guard在用户帐户上被激活,可以检查电子邮件获取Steam Guards访问代码并输入。只在第一次登录时(以及删除SteamCMD存储登录信息的文件时)需要。
如果你看到一条信息,说明你已经成功使用账户登录。
五、下载应用程序
注:如果你不确定你想下载的服务器、工具或游戏的appid,你可以使用steadb.info来定位它
1、 启动SteamCMD,现在暂不登录
2、 设置应用程序安装目录。(注意:Linux/macOS使用正斜杠,Windows使用反斜杠。)
force_install_dir <path>
例如,当前目录中名为cs_go的目录
force_install_dir ./cs_go/
Windows
force_install_dir c:\cs_go\
警告:
如果你是从路径env运行SteamCMD或将其作为包安装,它将返回一个错误。作为目录,解决方法是使用当前目录的绝对路径
3、 使用Login命令登录
Valve建议你在登录之前设置安装目录
4、使用app_update命令(提供Steam应用程序ID)安装或更新应用程序。请在此处查看专用服务器列表。要同时验证应用程序,请将validate添加到命令中。要下载测试版分支,请使用-beta<betaname>选项
例如,HLDS测试版分支命名为beta,SrcDS测试版分行命名为prerelease。一些测试版分支受密码保护;为了能够从中下载,还添加了-betapassword<password>选项
app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]
HLDS是一种特殊情况:应用程序ID始终为90,必须首先选择一个mod。这是通过将应用程序配置选项mod设置为请求的值来完成的。
app_set_config <app_id> <option_name> <option_value>
示例:安装并验证反恐精英:全球攻势专用服务器
app_update 740 validate
示例:使用Team Fortress Classic安装和验证HLDS
app_set_config 90 mod tfc
app_update 90 validate
Bug:
HLDS(appid 90)当前需要多次运行app_update命令,才能成功安装所有所需的文件。只需多次运行app_update 90 validate,直到不再进行更新。
示例:安装并验证HLDS测试版(Half-Life)
app_update 90 -beta beta validate
示例:安装并验证Counter Strike的测试版:源代码专用服务器
app_update 232330 -beta prerelease validate
示例:安装并验证Natural Selection 2专用服务器的私人测试版(名称alpha,密码natel)
[beta name]是私有测试版分支的名称
[beta code]是私有测试版分支的密码
app_update 4940 -beta alpha -betapassword natsel validate
非测试版分支的测试版名称是“public”,因此app_update 90-beta public将使您退出HLDS的测试版分支
5、 完成后,键入quit以正确注销Steam服务器
quit
validate
validate
Validate是一个命令,它将检查所有服务器文件,以确保它们与SteamCMD文件匹配。如果你认为文件可能丢失或损坏,则此命令非常有用
注:验证将覆盖所有已更改的文件。这可能会导致自定义服务器出现问题。例如,如果自定义mapcycle.txt,则此文件将被覆盖为服务器默认值。任何不属于默认安装的文件都不会受到影响
建议仅在初次安装时以及服务器出现问题时使用此命令
支持的服务器
使用SteamCMD安装的已知服务器的列表可在“专用服务器列表”页面上找到。请注意,列出的任何额外命令都需要在app_update行之前执行
六、自动化steamcmd
有两种方法可以使SteamCMD自动化。(在Linux/macOS上,将steamcmd替换为./steamcmd.sh。)
命令行
注:在命令行中使用-beta选项时,必须以特殊方式引用它,例如+app_update“90-beta-beta”
如果这不起作用,请尝试将其设置为“+app_update 90-beta beta”
将命令附加到以加号为前缀的命令行,例如
steamcmd +force_install_dir ../cs1_ds +login anonymous +app_update 730 +quit
为HL1安装特定的游戏模式,如反恐精英:零点行动
steamcmd +force_install_dir ../czero +login anonymous +app_set_config 90 mod czero +app_update 90 +quit
对于需要登录的游戏,如《杀戮空间》
steamcmd +force_install_dir c:\KFServer\ +login <username> <password> +app_update 215350 +quit
创建脚本
1、将SteamCMD命令放在一个文本文件中。(可以添加以//开头的注释。)示例
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
force_install_dir ../csgo_ds
login <username> <password>
//for servers which don't need a login
//login anonymous
app_update 740 validate
quit
2、使用+runscript选项运行SteamCMD,参考之前创建的文件。实例
steamcmd +runscript update_csgo_ds.txt
注:如果出现错误:无法加载脚本文件“scriptname.txt”,请尝试提供一个绝对路径,如/mnt/storage/tf2server/updatetf2_script.txt
七、跨平台安装
可以选择SteamCMD下载文件的平台,即使它不是当前运行的平台。这是使用@sSteamCmdForcePlatformType变量完成的。(是的,变量名开头有两个“s”。)例如,要在Linux上下载Windows CSGO专用服务器,可以运行以下命令
./steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir ../csgo_ds +login anonymous +app_update 740 validate +quit
或者使用以下脚本
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
force_install_dir ../csgo_ds
login anonymous
app_update 740 validate
quit
支持Windows、macOS和Linux
八、Windows软件/脚本
condenser
condenser是安装、配置和启动Steam专用服务器应用程序的引导程序
SteamCMD自动更新程序
安装并自动更新任何游戏服务器
SteamCMD GUI
此工具允许用户在没有命令行和/或批处理文件的情况下在Windows上使用SteamCMD
SteamPS
SteamPS是一个PowerShell模块,可用于更新服务器和获取服务器信息。它还提供了更新游戏服务器的工作流程
PowerShellGSM
PowerShellGSM是一个模块化PowerShell工具,用于使用SteamCMD管理游戏服务器。
九、Linux脚本
LinuxGSM
LinuxGSM是用于快速、简单地部署和管理Linux专用游戏服务器的命令行工具
特点
1、 安装程序
2、 更新程序
3、 监控
4、 警报
5、 服务器详细信息
6、 备份
7、 控制台
支持的服务器
现在有100多个不同的游戏服务器得到支持并在不断增长。欲了解完整列表,可访问网站
docker-steam-wine
在Docker中运行Steam驱动的Windows游戏服务器
已知问题
1、ERROR! Failed to install app "xxxxxx" (No subscription) 错误!无法安装应用程序“xxxxxx”(无订阅)
如果您收到“No subscription”错误,表示你下载的游戏/服务器需要登录或购买游戏。因此,必须使用Steam用户名和密码登录。如果这没有帮助,你可能需要先在Steam上购买一份游戏副本。请参阅专用服务器列表
警告:
登录前请使用force_install_dir!例如
steamcmd +login <username> <password>
2、64位Linux系统上的32位库
由于SteamCMD是32位二进制文件,因此需要32位库,如果你的服务器系统是64位可能会发生以下错误
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决方法取决于发行版
基于Debian的发行版(Ubuntu、Mint等)
sudo apt-get install lib32stdc++6
注:安装SteamCMD不需要ia32库;lib32gcc1就足够了
使用Debian 7“Wheezy”,您可能会遇到此错误
The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable
E: Unable to correct problems, you have held broken packages.
要解决此问题,请执行以下操作
dpkg --add-architecture i386
apt-get update
apt-get install lib32gcc1
基于Red Hat的发行版(RHEL、Fedora、CentOS等)
yum install glibc.i686 libstdc++.i686
Arch Linux
别忘了首先启用multilib存储库
pacman -S lib32-gcc-libs
3、Login Failure: No Connection 登录失败,没有连接
在Linux服务器上,您可能会遇到“Login Failure: No Connection”错误。这与缺少iptables规则有关。您将需要以下内容:
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT
4、在Windows服务器上,您可能会遇到“SteamUpdater: Error: Download failed: http error 0" and "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again. SteamUpdater:错误:下载失败:http错误0”和“SteamUpdateer:错误:Steam需要联机才能更新。请确认您的网络连接,然后重试。”。这通常是通过修改IE(Internet Explorer)中的Internet选项菜单中的局域网设置检查“自动检测设置”来解决的。
1)打开Internet Explorer(IE)
2)单击“工具”→ Internet选项
3)单击“连接”选项卡
4)在底部,您可以看到局域网(LAN)设置
5)选中第一个框(自动检测设置)
6)单击“确定”,然后应用。请尝试再次运行SteamCMD;如果它仍然不起作用。请尝试将您的Internet安全级别区域降低到中等或更低。您可以在“Internet选项”的“安全”选项卡中找到
5、SteamCMD启动错误
Unable to Locate a Running Instance of Steam 无法找到正在运行的Steam实例
使用Linux启动服务器时,可能会出现以下错误
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
可以通过将steamclient.so链接到~/.steam/sdk32/steamclient.sho目录来解决此问题
ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
6、ulimit Linux启动错误
脚本启动时,某些用户可能会出现ulimit错误(no permission/cannot open file无权限/无法打开文件)。此错误是由于ulimit的-n参数(文件描述符的数量)设置过低引起的。SteamCMD在初始化shell脚本中使用标准命令来自动更改ulimit,但一些服务器可能会禁止在启动后增加ulimit值(或超过root设置的限制)
这可以通过更改文件描述符编号ulimit来解决
ulimit -n 2048
如果出现错误(no permission无权限),则必须以root用户身份登录才能更改参数。要检查当前设置,请键入ulimit-a;系统将回复许多行,你需要找到一行
open files (-n) 1024
在这种情况下,1024是当前值
root还可以修改/etc/security/limits.conf文件中的限制
在大多数情况下,你只会收到一条警告消息,但它不会阻止SteamCMD的运行
7、在Windows计算机上获取Linux 64位steamclient.so
WSL不能很好地处理32位文件。如果你需要steamclient.so 64位文件,只需运行以下命令
steamcmd.exe +@sSteamCmdForcePlatformType linux +login anonymous +app_update 1007 +quit
然后你会在这里找到文件
.\steamapps\common\Steamworks SDK Redist\linux64
8、仅下载HLDS引擎
当我们想下载像TFC这样的GoldSrc mod时,但它只下载HLDS的引擎文件,而不下载mod。这是由于appmanifest文件没有正确下载造成的。这在常规版本和测试版中都会发生。在下载完所有必需的文件之前,您可能需要多次尝试,一旦完成,下次文件应该会正确更新
或者,也可以将现有的appmanifest文件复制到steamapps目录中。从LinuxGSM github存储库下载appmanifest文件
只需删除appmanifest文件,而不从第三方下载替换文件,也可以!不过,一开始你会收到一个错误,提示出了问题,这是由于删除了文件
以上就是关于SteamCMD的分享,感谢您的阅读与关注,服务器大本营助您成为更专业的服务器管理员!