Steamworks 文献库
上传至 Steam

原文内容有作更新

此页原文在翻译版发布之后作了更新。
点击此处查看此页更新后的英文版本。

SteamPipe 内容系统介绍

SteamPipe 是 Steam 的游戏/应用程序内容系统。SteamPipe 具有以下特点:
  • 高效、快速的内容交付。
  • 无限的公共和私有“测试版”分支,可对多个生成版本进行测试。
  • 基于 Web 的简单生成版本管理 - 只需几次点击即可推出新生成版本或回滚到之前生成版本。
  • 可在生成版本的更新上线前查看更新大小。
  • 可在多个应用程序间共享内容。
  • 可使用公共或测试版内容制作安装光盘
  • 即使在开始下载更新后也可以离线使用游戏/应用程序。
  • 始终加密所有内容,用户无法看到非活动版本。
  • 开发期间可以使用SteamPipe Local Content Server
注意: 在开始之前,您应该熟悉一下所有在应用程序文档中提及的概念,其中一些是 SteamPipe 不可或缺的部分。当您把产品上传到 Steam 上时,有必要对各部分如何工作有一个基本的了解。

Steamworks 教程 - 在 SteamPipe 中制作您的游戏

此教程介绍了 SteamPipe 以及通过 Steamworks 工具生成 Steam 应用程序样本的步骤。
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Steamworks 视频教程- 添加新平台和语言

此教程介绍了如何通过给应用程序增加 Depot 来为游戏添加新的平台和语言。
https://www.youtube.com/watch?v=PShS32hcing

SteamPipe 技术细节

SteamPipe 使用 HTTP 协议交付内容。下载是常见的 Web 流量,而顾客与 Steam 服务器之间的第三方 HTTP 缓存可加快下载速度。内容可以由外部 CDN 供应商托管,能便捷地添加到我们的内容网络中。多数消费者使用的防火墙都允许 HTTP 流量,因此不会限制下载。

SteamPipe 采用基于二进制增量的高效补丁算法,只需更改现有内容文件中被修改的部分。更新这些内容时,只需发送增量部分即可。这意味着开发者与用户之间的数据传输更少更快。大多数合作伙伴会发现他们不需要用到SteamPipe Local Content Server,因为他们可以高效地在私有分支上为生成版本提供补丁。

Steam 生成版本帐户

在 Steam 上创建任何生成版本前,您必须向您的 Steam 合作伙伴帐户添加一个生成版本帐户,并准许该帐户“编辑应用元数据”以及“向 Steam 发布应用更改”。为安全起见,我们建议最好创建专门用于此目的的生成版本帐户。您可以在https://store.steampowered.com/join上创建新的 Steam 帐户。

Steamworks 合作伙伴帐户的任何管理员都可以向合作伙伴帐户添加 Steam 帐户,并授予必要的权限。关于此过程的更多信息请见管理您的 Steamworks 帐户文档。此帐户示例如下:

create_build_account.png

SteamPipe 新应用的初始设置

请根据以下步骤设置新的 SteamPipe 应用:
  1. 找到应用程序的 AppID(在您的 Steamworks 主页上选择该应用程序即可找到此 ID)
  2. 进入您应用程序的通用安装设置页面。
  3. 至少定义一个启动选项(指定路径,还可以指定启动游戏所需的参数)。鼠标指针悬浮到(?),了解各字段的详情。

    下方示例显示了 4 个启动选项,2 个针对 Windows,MacOS 和 Linux 各 1 个。如果用户也拥有指定的 DLC,那么 Windows 将仅显示启动选项 3。

    updatedlaunchoptions.png
  4. 前往 Depots 页面,为此应用添加必要 depot。默认情况下,您的应用程序可能已配置了一个 depot。
    1. 点击默认 depot,将 depot 名称改为恰当的、易于辨认的名称(例如“基本内容”或 “Windows 内容”)。
    2. 除非 depot 属于特定语言,否则请将语言设置为[所有语言]。
    3. 除非 depot 属于特定操作系统,否则请使用[所有操作系统]设置(如果应用程序为多合一应用,或仅有 PC 或 Mac,那么应使用[所有操作系统]设置)。只有专用于特定操作系统的 depot 需要指明。
    4. 点击“添加新 Depot”来创建额外 Depot。
    5. 点击“保存更改”以保存更改内容。
  5. 定义完 Depot 后,您可以通过发布页面发布您的更改。
  6. 新定义的 Depot 需要包含在一个程序包中,以便您得到所需的所有权。Steam 上的每个游戏均附带了 Developer Comp 程序包,该程序包会自动提供给您的发行商组中列出的帐户。
    您可以在相关程序包与DLC 页面上为该程序包(和/或其他拥有这些 Depot 的程序包)添加新的 Depot。

[[section]为 SteamPipe 上传设置 SDK[/section]
将最新版本的 Steamworks SDK 下载并解压到您将上传生成版本的电脑上。

SteamPipe 工具可在 SDK 的工具文件夹中找到。其中包含两个相关子目录。

ContentBuilder 目录中包含游戏内容和 SteamPipe 生成工具。该目录包含以下子目录:

  • builder - 此目录中一开始只有 steamcmd.exe,它是 Steam 的命令行版本。
  • builder_linux – steamcmd 的 Linux 版本。
  • builder_osx - steamcmd 的 macOS 版本。
  • content - 此目录包含所有需添加到 Depot 中的游戏文件。
  • output - 此目录用于存放生成版本日志、区块缓存和中间输出文件。注意:此文件夹可随时删除或清空,但删除之后,下次上传时间会变长。
  • scripts - 此目录用于存放制作游戏 Depot 所需的全部生成脚本。
steampipebuilddir.png

建议您直接在生成器文件夹中为您的平台运行一次 steamcmd.exe,启动您的生成系统。此操作将在您的生成器目录下产生生成 Depot 所需的所有文件。

ContentServer 目录中包含用于运行您自己的SteamPipe Local Content Server的工具,您可以选择这样做。

适用于 MacOS 的 SteamCmd

要在 MacOS 上启用 SteamCmd,请完成以下步骤:
  1. 在终端上打开 tools\ContentBuilder\builder_osx\osx32 文件夹
  2. 运行 chmod x steamcmd
  3. 返回至父文件夹(tools\ContentBuilder\builder_osx)
  4. 键入 bash ./steamcmd.sh
  5. SteamCmd 随后将运行并更新到最新版本,系统将显示 SteamCmd 提示符
  6. 键入 exit 并按返回以退出提示符
然后,您可以按照本文档的余下说明操作(适当替换路径),创建 Depot 和应用配置文件,以便将内容上传到 Steam。

创建 SteamPipe 生成版本配置文件

使用 SteamPipe 上传您的应用时,您必须创建一个应用脚本,描述您的生成版本以及包含在其中的每个 Depot。ContentBuilder\scripts 文件夹内有简单的示例脚本,适用于带有一个 depot 的应用。

注意: 您可以随意命名这些脚本,但是我们使用app_build_<AppID>depot_build_<AppID>,以保持一致。如果您知道您需要在此电脑上生成多个应用,那么您最好在脚本目录下为各应用程序创建子目录,井井有条地管理各应用程序的生成脚本。

SteamPipe GUI 工具

如果您运行的是 Windows,并且更喜欢使用 GUI 工具来帮助生成配置文件并上传您的生成版本,您可以使用 Steamworks SDK 的工具文件夹中的 SteamPipeGUI。在压缩文件包中包含了有助于您开始的一些额外说明。

如果您选择使用 GUI 工具,我们仍然建议您阅读以下部分,以便更了解 SteaPipe 系统的工作方式。

Depot 生成脚本

首先为您上传的每个 Depot 创建一个 Depot 生成脚本。从复制 depot_build_1001.vdf 脚本开始,并按将上传的 Depot ID 命名。

Depot 生成脚本示例:
"DepotBuildConfig" { // 设置脚本要上传的 depot ID。 "DepotID" "1001" // 为所有内容设置根目录。 // 所有下面指明的相对路径in FileMapping 项中的 LocalPath,以及 FileExclusion 路径) // 将根据此根目录进行解析。 // 如果您不定义 ContentRoot,那么它将默认为 // 此脚本文件的位置,也许您并不希望使用此位置。 "ContentRoot""D:\MyGame\rel\master\" // 以递归方式包含所有文件 "FileMapping" { // 这可以是完整路径,或是相对于 ContentRoot 的路径 "LocalPath" "*" // 这是相对您游戏的安装文件夹的路径 "DepotPath" "." // 如果 LocalPath 包含通配符,设置这里意味着 // 子目录中的所有匹配通配符的文件也会被包含入内。 "recursive" "1" } // 排除所有符号文件 // 这可以是完整路径,或是相对于 ContentRoot 的路径 "FileExclusion" "*.pdb" }

注意: 在 Depot 生成脚本中设置一个 “ContentRoot” 将替代应用生成脚本中的“ContentRoot”。

应用生成脚本

在设置了您的 Depot 生成脚本之后,您将需要一个应用生成脚本,描述生成版本的详细信息。先要复制 app_build_1000.vdf 脚本,并将其按将生成的 app ID 命名。

SteamPipe 支持 3 种生成类型:
  • 预览 – 此类生成版本只能输出日志和一个文件清单。制作预览生成版本便于您对上传脚本进行迭代。
  • 本地 – 针对 SteamPipe Local Content Server的生成版本。将 LCS 生成版本上传到您的 LCS 中,可以让您使用 Steam 客户端测试游戏安装环节。
  • SteamPipe – SteamPipe 生成版本会使您的 Depot 实际上传至 Steam。这样做很安全,对已经发布的游戏也能够确保安全,因为您需要先将它设置为公开,才能让顾客下载。

应用生成脚本示例:
"appbuild" { // 设置脚本将上传的 app ID。 "appid" "1000" // 此生成版本的描述。 // 只有您能在“应用管理员”面板的“您的生成版本”栏中可见到。 // 在“您的生成版本”中上传生成版本上后,可以随时更改描述。 "desc" "Your build description here" // 启用/禁用这是否为预览生成版本。 // 强烈推荐在初步设置 SteamPipe 时使用预览生成版本 // 以确保 depot 清单包含正确的文件。 "preview" "1" // 本地内容服务器若启用,其文件路径。 "local" "" // 生成成功后将自动设置为上线的分支名称,若无则为 none。 // 注意“默认”分支不能设置为自动上线,而必须通过“应用管理员”面板进行设置。 "setlive" "" // 以下路径可以为绝对路径或相对于脚本的路径。 // 此路径将是生成版本日志、区块缓存和中间输出的路径。 // 这里存储的缓存使未来的 SteamPipe 上传能使用 diffing 更快完成。 "buildoutput" "..\output\" // 内容文件夹根目录。 "contentroot" "..\content\" // 生成版本中包含的 depot 列表。 "depots" { "1001" "depot_build_1001.vdf" } }

生成 Depot

要开始生成您的生成版本,请编辑 run_build.bat 文件,其中包括您的 Steamworks 生成版本帐号与密码(请见上文)和应用生成版本的脚本路径:
builder\steamcmd.exe +login "account" "password" +run_app_build ..\scripts\[build_script_name].vdf +quit

注意: 由于 Steam 令牌的原因,您第一次尝试运行生成版本可能会失败。如果由于 Steam 令牌导致您无法登录,请在您的电子邮件中查找 Steam 令牌验证码,在 steamcmd.exe 中运行 steamcmd.exe "set_steam_guard_code <code>",然后重试。在使用 Steam 令牌登录一次之后,会有一个 Sentry 文件来验证登录是否真实。

运行 run_build.bat 之后,您的生成版本输出应放置在生成脚本文件指定的目录中。如果预览生成版本产生了预期的清单,则在应用生成脚本中使用 “preview” “0” 再次运行生成版本。

SteamPipe 生成将经历以下步骤:
  1. Steamcmd.exe 使用给定的生成器 Steam 帐户登录 Steam 后端。
  2. 在 MDS(主 Depot 服务器)上注册应用生成版本启动,这样可保证用户拥有修改此应用的正当权限。
  3. 针对包含在应用生成版本中的各 Depot,根据内容文件夹中的文件以及 Depot 生成配置文件中定义的过滤原则生成文件列表。
  4. 然后,各文件被扫描和分割成大约 1MB 的小区块。如果之前已经制作出 Depot,则这次分割应尽可能保留未更改的区块。
  5. 新文件区块经过压缩、加密后上传到 MDS。
  6. 然后生成此 Depot 版本对应的最终清单;各清单都拥有唯一的 64 位清单 ID。
  7. 所有 Depot 处理完成后,MDS 就会完成此应用版本,并为其分配一个全局 buildID。
  8. 生成版本处理完成后,生成输出文件夹中可能会出现 *.csm 和 *.csd 文件。这些是临时文件,可以删除,但它们能加快后续生成版本的处理速度。

管理更新

在您向顾客发布应用程序后,顾客收到的是标记为默认生成版本的生成版本。上传新生成版本时,最好在向您的顾客推出前先测试。参见在 Steam 上进行测试,了解更多如何成功管理您的生成版本。

高级文件映射规则

可以使用多个文件映射向 depot 添加文件。它们会最先被列出来。文件或子文件夹可使用过滤表达式排除。
Steam 安装脚本 可在制作过程中加标记,这样 Steam 客户端就知道为挂载 depot 的应用程序运行这些脚本。
文件或文件夹可重新映射,这样内容文件夹内的子文件夹就可以映射到 depot 的任何地方。文件可以添加特殊标记:
  • userconfig - 此文件由用户修改。此文件无法通过更新覆盖,与之前版本的文件不同时也不会触发验证错误。
  • readonly - 此文件将在客户端文件系统中被标记为只读。
  • hidden - 此文件将在客户端文件系统中被标记为隐藏。
  • executable - 这是一个可执行文件(仅适用于 OS X)
    "DepotBuildConfig" { "DepotID" "202931" "FileMapping" { // 在 \videos 中用德语版视频替换视频文件 "LocalPath" "localization\\german\\videos\\*" "DepotPath" "videos\\" } "FileMapping" { // 在 \audio 中用德语版音频替换音频文件 "LocalPath" "localization\\german\\audio\\*" "DepotPath" "audio\\" } "FileMapping" { "LocalPath" "localization\\german\\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\\server.exe" // 排除此文件 "FileExclusion" "*.pdb" // 排除各处的所有 .PDB 文件 "FileExclusion" "maps\\testroom*" // 排除 maps/testroom/ 下的所有文件 "InstallScript" "localization\\german\\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\\setup.cfg" "Attributes" "userconfig" // 此文件将在运行时修改 } }

调试生成版本问题

如果生成失败,您应该查看输出文件夹寻找错误信息,而不是生成脚本运行所在的控制台。大多数错误信息可以在 *.log 文件中找到。
您可以使用以下 Steam 客户端命令和客户端文件来调试故障:
  • "app_status [appid]" – 显示此客户端上应用的当前状态。
  • "app_info_print [appid]" - 显示此游戏的当前 Steamworks 配置(Depot、启动选项等)。
  • "app_config_print [appid]" - 显示此游戏的当前用户配置(当前语言、安装目录等)。
  • file "logs\content_log.txt" - 列出所有记录的 Oxcart 操作和错误。
  • file "steamapps\appmanifest_[appid].acf" - 显示此应用程序的当前安装状态 (KeyValues)。

制作高效的 SteamPipe Depot

旧 Steam 内容系统在文件层面发布补丁更新,这意味着如果文件中有一个字节发生改变,所有用户都要下载整个新文件。如果游戏使用打包文件,那么这种方法就会显得尤其低效,因为文件包会将一系列游戏内容文件放置在一个大文件中。打包文件能轻易超过 1GB,所以更新通常会导致用户不必要地下载大文件。避免这种情况的常见做法是添加新的打包文件,替换已发布的打包文件内容。这种方法可用于更新,但从长期来看对新用户不利,因为他们会下载没有用的,已经被替代了的内容。

新的内容系统将各文件分割成大约 1MB 的区块,解决了这个问题。这些区块会经过压缩和加密,再通过 Steam 内容系统进行分发。如果游戏内容有很大的冗余部分,那么这些区块就会被重复使用,用户只需下载那些重复的区块一次即可。但是,此系统的真正优势是制作高效的更新补丁。系统制作补丁时,会扫描新内容,寻找出已知的区块。找到之后,它们会被重新使用。这意味着如果您在一个大文件中更改或加入了几个字节,那么用户只需下载更改部分即可。

大多数情况下,这种方法都很管用,但在设计游戏的内容布局时,您依然需要避开一些常见错误。切勿压缩或加密您的游戏数据。Steam 内容系统提供的下载和零售光盘已对数据进行了压缩和加密。如果您也这样做,增量补丁的效果就会变小。如果您将多个数据文件封装到一个打包文件中,请确保每次进行重新打包时不要做出不必要的更改。会造成问题的一种做法是使用磁盘上原始源文件的全名,因为名称可能会根据生成电脑的变化而变化。另外一种不良的习惯是让每个文件都包含生成时间戳。必要时,务必将新内容添加到您的打包文件的尾部,并保持现有文件的顺序。同时,将您的打包文件的元数据(单个文件的偏移和大小)保存在一个地方,不要将其混杂在内容文件中。使用二进制文件比较工具,如 BeyondCompare,查看打包文件的两个生成版本,确保不会出现太多不必要的变更。

遵守这些规则,您的补丁将会减到最小,只需下载新内容即可。您的顾客会为此感谢您,而且您也可以通过推送更多更新来提升产品质量。

制作零售安装光盘

制作 SteamPipe 游戏的零售安装光盘时,您需要先创建一个生成项目文件。
在此示例中,该 SKU 文件的名称为“sku_goldmaster.txt”:
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
下面是一些要记住的小提示:
  • 创建一个要写入零售磁盘映像的新文件夹,例如“D:\retail_disks”。只添加 included_depots 部分的 Depot;没有排除部分。
  • 您可以使用 Steam.exe (有 -dev 和 -console 命令行参数)或 steamcmd.exe 制作安装映像。在两种情况下,您都可以使用“build_installer”命令。
  • 登录拥有该游戏和所有(要放进光盘的)Depot 的 Steam 帐户。否则,帐户将不需要特殊权限,这样任何人都能制作安装光盘。
  • 如果您使用 Steam.exe,则停止其他所有下载。
  • 访问控制台页面,运行 build_installer 命令:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    此生成版本需要一段时间才能完成,因为所有 depot 都是第一次重新下载。
  • 如果您使用本地内容服务器制作一个 GM,则运行:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    此处指的是“备份”,因为“零售安装光盘”与本地游戏备份本质上是相同的。
  • 看到“AppID 的备份已完成……”,即表明安装磁盘映像已准备就绪。您可以在logs\backup_log.txt中找到更多有关备份生成版本的信息。
  • “D:\retail_disks”中有新文件夹(Disk_1、Disk_2 等),按照“disk_size_mb”的规定,每个文件夹的大小都不超过 640MB。每个磁盘文件夹包含一个“sku.sis”文件,每个 Depot 包含一个 .csd 和 .csm 文件。更大的 Depot 可存放在多个磁盘上。所有零售安装磁盘内容都始终加密(与本地游戏备份文件不同)。将 SDK GM 设置文件(setup.exe、setup.ini 等)复制到您的第一个磁盘的文件夹中,零售磁盘安装程序即制作完成。
  • 为 OSX 制作 GM 时,一定要在 Mac 上打开 goldmaster/disk_assets/SteamRetailInstaller.dmg 映像。然后找到应用程序,将其复制到您所用介质的根目录。您可以修改安装程序名称,还可以用您的品牌制作图标,同时修饰窗口以便只显示安装程序。
  • 为 OSX 制作多光盘 GM 时,务必确保各光盘的卷名相互匹配。卷名是挂载路径的一部分,如果名称不匹配,安装程序将无法找到下一张光盘。

可选从测试版分支中制作零售安装程序

上述过程将根据默认分支创建一个零售安装程序。如果您需要先根据测试版分支创建安装程序,然后按下列方式将信息添加到该测试版分支。
build_installer <project file> <target folder> <beta key> <beta pwd> steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit

从零售安装程序中安装 DLC

在某些情况下,您可能希望制作一个包含 DLC 程序包的零售安装程序。这时,创建安装程序的过程就需要些许修改。
在“sku_goldmaster.txt”中,将 DLC AppID 加入到“included_depots”部分下面。运行“build_installer”进程,找到为此安装程序生成的 sku.sis 文件,然后用文本编辑器打开。

在“apps”部分添加 DLC AppID。例如,如果游戏 AppID 为 1000,DLC AppID 为 1010,就应按照以下方法调整“apps”部分:
"apps" { "0""1000" "1""1010" }
这样可确保 Steam 检查 DLC 的所有权,如果该 DLC 不属于已登录的 Steam 帐户,则在用户登录 Steam 时提示用户出示密钥。

在单个光盘/安装包上为多个 App ID 制作零售安装程序

要制作一个包含众多 Steam Pipe 应用程序的 GM。逐个制作应用安装程序,但要将这些程序都指向相同的输出文件夹。每个生成版本将使用已有的安装映像来合并自身。

自定义零售安装磁盘

请参见自定义 Gold Master 了解有关自定义零售安装磁盘的更多详情。

在发布之前预装游戏

所有内容不论在服务器或是零售光盘上,默认设置为始终加密。将游戏切换到预装模式意味着所有者得以下载内容,但在其磁盘上将保持加密状态,无法运行。一旦游戏正式发布,Steam将解密预装内容,使用户能够玩游戏。

在下述情况时,建议将游戏切换为预加载模式:
  • 在游戏正式发售前,预先运送附有产品密钥的零售光盘(零日盗版)。
  • 预购游戏内容大小超过20GB。

如果您认为您的游戏需要预装,请向Steam 发行部门提交服务申请。

制作 DLC

DLC 被制作为基础游戏的 Depot。请参见 可下载内容(DLC) 了解更多信息。

SteamPipe 故障排除

“登录失败:帐户登录被拒绝”(通过 steamcmd 登录时出现)

原因:很可能是 Steam 令牌阻止了登录。解决方法:
  • 查看与您试图登录的帐户相关联的电子邮箱,寻找来自 Steam 客服团队的电子邮件。复制电子邮件中的验证码。
  • 运行以下 steamcmd:set_steam_guard_code <code>
  • 使用 steamcmd 再次尝试登录:Steam>logon <buildaccount> <password>

关于下载问题的一般性故障排除

  • 重启计算机、调制解调器、路由器等。
  • 验证防火墙设置。新系统要求使用 80(HTTP)端口和此处列出的所有其他 Steam 端口。
  • 临时禁用本地防病毒或垃圾邮件拦截程序。
  • 打开设置->下载和云,检查 Steam 下载地区。该地区应与您的地点匹配。
  • 停止下载,卸载程序,然后重新安装游戏(清空清单缓存)。
  • 退出 Steam,删除 Steam 安装文件夹下的 appcache 与 depotcache 两个文件夹。
  • 尝试将您的 Steam 下载地区设置为其他比较远的地区。如果您附近的内容服务器提供的数据有问题,上述操作就可能起作用。

我的 Mac 和/或 Linux 生成版本没有安装任何文件。为什么?

如果您通过 Steam 在多个平台上测试游戏或应用程序的安装情况,那么即使您的 SteamPipe 进程已经设置为上传 Mac 和/或 Linux Depot,您也可能遇到生成版本部署在 Windows,却没有在 Mac 或 Linux 上部署任何文件的情况。向需要部署的程序包添加备用 Depot 是很容易漏掉的一个步骤。您可以通过以下步骤检查程序包中包含了哪些 Depot:
  1. 导航至“应用管理员”页面
  2. 从“查看关联项”栏,点击“查看试用版、所有相关程序包、视频和 DLC
  3. 点击您尝试下载的程序包标题
  4. 查看已包含 Depot
  5. 使用“添加/移除 Depot”确保该程序包被分配了正确的 Depot 组
关于此话题有大量跟帖可供您参考:

运行 steamcmd.exe 导致以下错误:“SteamUpdater:错误:Steam 需要在线才能更新。请确认您已连接网络,然后重试。

解决方案:打开 Internet 选项->连接->局域网设置并勾选自动检测设置

运行应用生成版本导致以下错误:“错误! ‘DepotBuild for scriptname.vdf’故障 – 状态= 6。”

可能原因:
  • 帐户没有访问此应用程序的权限。
    • 检查 app_build.vdf 中的应用 ID 是否正确。
    • 检查生成版本帐户是否拥有针对此应用 ID 的适当权限
  • Steamcmd 无法找到 Depot 内容。
    • 检查 app_build 脚本中的“contentroot”值是否是相对于脚本文件位置的有效路径。
    • 检查 depot_build 脚本中的“LocalPath”值是否是相对于 app_build 脚本内路径的有效路径。检查该路径是否包含实际内容。

运行应用版本导致以下错误:“错误!无法获取应用程序 NNNNN 的应用信息(检查登录和订购情况)”

这表明 Steam 无法检索到该应用程序的信息,可能是因为应用程序不存在,或是用户没有访问该应用程序的权限。
  • 检查 NNNNN 是否是您所分配到的应用 ID。
  • 检查 app_build.vdf 中的应用 ID 是否正确。
  • 如果它是一个新的应用 ID,请确保 Steamworks 应用程序管理配置已经发布。新应用程序的“配置”选项卡上应该有 Steam Pipe 安装目录,“Depot”选项卡上应该有 Depot,所有变更都应该发布在“发布”选项卡上。
  • 如果这些看起来都没问题,请确保您的帐户拥有该应用 ID。

启动时出现“安装 [AppName] 时出现一个错误(无效内容配置)”

可能原因:

启动时出现“错误代码 15”

这是因为 CEG 服务器拒绝了对 CEG 可执行程序的请求。检查游戏页面上的发行状态。如果不是“可玩”版,您需要索取 Steam 密钥并先决替代发行状态。

启动时出现 “Steam 服务器过于繁忙,无法处理您的请求……错误代码 (2)”

这是因为 CEG 服务器无法找到匹配的 CEG 可执行程序。请再次检查应用程序管理中的 CEG 选项卡,确定是否有可用的 CEG 可执行程序。点击“状态”按钮,确保出现提示。

我忘记了 steamcmd 命令,或者不知道如何使用

请使用 steamcmd 的“find”命令来搜索 steamcmd 命令。您可以搜索部分命令名称,然后将列出命令语法。
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>