一、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自动更新程序

安装并自动更新任何游戏服务器

GitHub Repo

SteamCMD GUI

此工具允许用户在没有命令行和/或批处理文件的情况下在Windows上使用SteamCMD

GitHub Repo

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的分享,感谢您的阅读与关注,服务器大本营助您成为更专业的服务器管理员!