服务器大本营

 找回密码
 我要入营

微信扫码 , 快速开始

QQ登录

只需一步,快速开始

查看: 936|回复: 0

Steam自建服务器教程之SteamCMD的下载和安装

[复制链接]

4万

敬重

700

主题

207

精华

管理员

积分
7969

启航之章进阶之印里程之碑突破之证飞跃之星蜕变之勋卓越之路龙年行大运

QQ
发表于 2023-12-27 18:04:30 | 显示全部楼层 |阅读模式

我要入营,结交更多好友,开启更多功能,轻松玩转服务器大本营!

您需要 登录 才可以下载或查看,没有账号?我要入营

x
一、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会出现安全提醒,不可行。
  1. sudo useradd -m steam
  2. sudo passwd steam
复制代码

进入其主文件夹
  1. sudo -u steam -s
  2. cd /home/steam
复制代码

安装存储库的包
注:如果可用,建议从发行版提供的存储库中安装SteamCMD包

Ubuntu
要安装SteamCMD,必须启用multiverse repository和×86软件包
  1. sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
  2. sudo apt install steamcmd
复制代码

Debian
要安装SteamCMD,必须启用non-free repository和×86软件包
  1. sudo apt update; sudo apt install software-properties-common; sudo apt-add-repository non-free; sudo dpkg --add-architecture i386; sudo apt update
  2. sudo apt install steamcmd
复制代码

企业版Linux
注:没有rpm软件包可用于任何基于Red Hot的发行版。参考手动安装


Arch Linux
  1. git clone https://aur.archlinux.org/steamcmd.git
  2. cd steamcmd
  3. makepkg -si
复制代码
注:你需要安装base-devel软件包才能执行makepkg
  1. sudo pacman -Syy base-devel
复制代码

Gentoo Linux
  1. emerge --ask games-server/steamcmd
复制代码

Docker
如果你的服务器正在运行Docker,你可以简单地使用
  1. docker run -it --name=steamcmd cm2network/steamcmd bash
复制代码
steamcmd.sh位于/home/steam/steamcmd

手动安装
在开始之前,必须首先安装运行SteamCMD所需的依赖项
Ubuntu/Debian (x86-64)
  1. sudo apt-get install lib32gcc-s1
复制代码

Enterprise Linux (x86-64)
  1. yum install glibc.i686 libstdc++.i686
复制代码

作为root用户,升级到steam用户
  1. su - steam
复制代码
如果您不是以root用户身份登录,而是使用sudo执行管理,请按如下方式升级到steam用户
  1. sudo -iu steam
复制代码

为SteamCMD创建一个目录并切换到该目录
  1. mkdir ~/Steam && cd ~/Steam
复制代码

下载并解压
  1. curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
复制代码

macOS
打开Terminal.app并为SteamCMD创建一个目录
  1. mkdir ~/Steam && cd ~/Steam
复制代码
下载并解压适用于macOS的steamcmd
  1. curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -
复制代码


三、运行steamcmd
在第一次运行时,SteamCMD将自动更新并进入Steam>提示。键入help以获取详细信息


Windows
打开命令提示符并启动SteamCMD
  1. cd C:\steamcmd
  2. steamcmd
复制代码

Linux
打开终端并启动SteamCMD
如果你使用的是存储库中的包进行安装
  1. steamcmd
复制代码

如果你是手动安装
  1. cd ~/Steam
  2. ./steamcmd.sh
复制代码

macOS
打开终端并启动steamcmd
如果你使用的是存储库中的包进行安装
  1. cd ~
  2. steamcmd
复制代码

如果你是手动安装
  1. cd ~/Steam
  2. ./steamcmd.sh
复制代码


四、SteamCMD登录
要下载大多数游戏服务器,你可以匿名登录
  1. login anonymous
复制代码
一些服务器要求使用steam账户登录
注:处于安全考虑,建议你为专用服务器创建一个新的steam账号。

用户在任何时候只能登录一次(包括grapical客户端和steamcmd登录)
  1. login <username>
复制代码
接下来输入你的密码
如果Steam Guard在用户帐户上被激活,可以检查电子邮件获取Steam Guards访问代码并输入。只在第一次登录时(以及删除SteamCMD存储登录信息的文件时)需要。
如果你看到一条信息,说明你已经成功使用账户登录。


五、下载应用程序
注:如果你不确定你想下载的服务器、工具或游戏的appid,你可以使用steadb.info来定位它

1、启动SteamCMD,现在暂不登录
2、设置应用程序安装目录。(注意:Linux/macOS使用正斜杠,Windows使用反斜杠。)
  1. force_install_dir <path>
复制代码
例如,当前目录中名为cs_go的目录
  1. force_install_dir ./cs_go/
复制代码

Windows
  1. 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>选项
  1. app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]
复制代码

HLDS是一种特殊情况:应用程序ID始终为90,必须首先选择一个mod。这是通过将应用程序配置选项mod设置为请求的值来完成的。
  1. app_set_config <app_id> <option_name> <option_value>
复制代码

示例:安装并验证反恐精英:全球攻势专用服务器
  1. app_update 740 validate
复制代码

示例:使用Team Fortress Classic安装和验证HLDS
  1. app_set_config 90 mod tfc
  2. app_update 90 validate
复制代码


Bug:
HLDS(appid 90)当前需要多次运行app_update命令,才能成功安装所有所需的文件。只需多次运行app_update 90 validate,直到不再进行更新。

示例:安装并验证HLDS测试版(Half-Life)
  1. app_update 90 -beta beta validate
复制代码

示例:安装并验证Counter Strike的测试版:源代码专用服务器
  1. app_update 232330 -beta prerelease validate
复制代码

示例:安装并验证Natural Selection 2专用服务器的私人测试版(名称alpha,密码natel)
[beta name]是私有测试版分支的名称
[beta code]是私有测试版分支的密码
  1. app_update 4940 -beta alpha -betapassword natsel validate
复制代码
非测试版分支的测试版名称是“public”,因此app_update 90-beta public将使您退出HLDS的测试版分支

5、完成后,键入quit以正确注销Steam服务器
  1. quit
复制代码

validate
  1. 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

将命令附加到以加号为前缀的命令行,例如
  1. steamcmd +force_install_dir ../cs1_ds +login anonymous +app_update 730 +quit
复制代码

为HL1安装特定的游戏模式,如反恐精英:零点行动
  1. steamcmd +force_install_dir ../czero +login anonymous +app_set_config 90 mod czero +app_update 90 +quit
复制代码

对于需要登录的游戏,如《杀戮空间》
  1. steamcmd +force_install_dir c:\KFServer\ +login <username> <password> +app_update 215350 +quit
复制代码

创建脚本
1、将SteamCMD命令放在一个文本文件中。(可以添加以//开头的注释。)示例
  1. // update_csgo_ds.txt
  2. //
  3. @ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
  4. @NoPromptForPassword 1
  5. force_install_dir ../csgo_ds
  6. login <username> <password>
  7. //for servers which don't need a login
  8. //login anonymous
  9. app_update 740 validate
  10. quit
复制代码

2、使用+runscript选项运行SteamCMD,参考之前创建的文件。实例
  1. steamcmd +runscript update_csgo_ds.txt
复制代码
注:如果出现错误:无法加载脚本文件“scriptname.txt”,请尝试提供一个绝对路径,如/mnt/storage/tf2server/updatetf2_script.txt


七、跨平台安装
可以选择SteamCMD下载文件的平台,即使它不是当前运行的平台。这是使用@sSteamCmdForcePlatformType变量完成的。(是的,变量名开头有两个“s”。)例如,要在Linux上下载Windows CSGO专用服务器,可以运行以下命令
  1. ./steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir ../csgo_ds +login anonymous +app_update 740 validate +quit
复制代码
或者使用以下脚本
  1. @ShutdownOnFailedCommand 1
  2. @NoPromptForPassword 1
  3. @sSteamCmdForcePlatformType windows
  4. force_install_dir ../csgo_ds
  5. login anonymous
  6. app_update 740 validate
  7. 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!例如
  1. steamcmd +login <username> <password>
复制代码

2、64位Linux系统上的32位库
由于SteamCMD是32位二进制文件,因此需要32位库,如果你的服务器系统是64位可能会发生以下错误
  1. steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
复制代码

解决方法取决于发行版
基于Debian的发行版(Ubuntu、Mint等)
  1. sudo apt-get install lib32stdc++6
复制代码
注:安装SteamCMD不需要ia32库;lib32gcc1就足够了

使用Debian 7“Wheezy”,您可能会遇到此错误
  1. The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable
  2. E: Unable to correct problems, you have held broken packages.
复制代码

要解决此问题,请执行以下操作
  1. dpkg --add-architecture i386
  2. apt-get update
  3. apt-get install lib32gcc1
复制代码

基于Red Hat的发行版(RHEL、Fedora、CentOS等)
  1. yum install glibc.i686 libstdc++.i686
复制代码

Arch Linux
别忘了首先启用multilib存储库
  1. pacman -S lib32-gcc-libs
复制代码

3、Login Failure: No Connection  登录失败,没有连接
在Linux服务器上,您可能会遇到“Login Failure: No Connection”错误。这与缺少iptables规则有关。您将需要以下内容:
  1. iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
  2. 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启动服务器时,可能会出现以下错误
  1. [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目录来解决此问题
  1. 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来解决
  1. ulimit -n 2048
复制代码

如果出现错误(no permission无权限),则必须以root用户身份登录才能更改参数。要检查当前设置,请键入ulimit-a;系统将回复许多行,你需要找到一行
  1. open files                      (-n) 1024
复制代码
在这种情况下,1024是当前值

root还可以修改/etc/security/limits.conf文件中的限制
在大多数情况下,你只会收到一条警告消息,但它不会阻止SteamCMD的运行

7、在Windows计算机上获取Linux 64位steamclient.so
WSL不能很好地处理32位文件。如果你需要steamclient.so 64位文件,只需运行以下命令
  1. steamcmd.exe +@sSteamCmdForcePlatformType linux +login anonymous +app_update 1007 +quit
复制代码

然后你会在这里找到文件
  1. .\steamapps\common\Steamworks SDK Redist\linux64
复制代码

8、仅下载HLDS引擎
当我们想下载像TFC这样的GoldSrc mod时,但它只下载HLDS的引擎文件,而不下载mod。这是由于appmanifest文件没有正确下载造成的。这在常规版本和测试版中都会发生。在下载完所有必需的文件之前,您可能需要多次尝试,一旦完成,下次文件应该会正确更新

或者,也可以将现有的appmanifest文件复制到steamapps目录中。从LinuxGSM github存储库下载appmanifest文件
只需删除appmanifest文件,而不从第三方下载替换文件,也可以!不过,一开始你会收到一个错误,提示出了问题,这是由于删除了文件

以上就是关于SteamCMD的分享

感谢您的阅读,服务器大本营助您成为更专业的服务器管理员!

一入IDC深似海,从此你我是良人!
您需要登录后才可以回帖 登录 | 我要入营

本版积分规则

Loading...

QQ|Archiver|手机版|网站地图|服务器大本营 ( 赣ICP备2021009089号 )

GMT+8, 2024-11-21 20:26 , Processed in 0.084155 second(s), 26 queries , Gzip On.

Powered by 服务器大本营

© 2021-2023 联系飞飞

快速回复 返回顶部 返回列表