steam-publish
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSteam Publish (Steamworks + SteamPipe)
Steam 发布(Steamworks + SteamPipe)
Take a finished build to a live Steam store page. Two tracks run in parallel and both must be
approved before release: the store page (presence) and the build (SteamPipe upload +
the release checklists). This skill is the operational checklist; deep build-script,
CI/CD, and troubleshooting detail lives in .
references/steampipe-build-scripts.md将完成的构建版本发布至Steam商店页面。发布前有两条并行流程必须获得批准:商店页面(展示信息)和构建版本(SteamPipe上传 + 发布检查清单)。本指南为操作清单;关于构建脚本、CI/CD和故障排查的详细内容请查看。
references/steampipe-build-scripts.mdWhen to use
使用场景
- Use when setting up a Steam app, building/editing the store page, configuring depots and packages, uploading a build via SteamPipe/steamcmd, managing beta branches, or releasing and updating a Steam title.
- Triggers: , the Steamworks SDK
steam_appid.txt,tools/ContentBuilder,app_build_*.vdf, "publish on Steam", "depot", "set build live".steamcmd
When not to use: publishing on itch.io (use ); writing the
Steamworks API in-game (achievements/cloud/overlay live in engine SDK integrations, not
here); store/financial advice (pricing strategy, tax) — direct the user to Steamworks docs
and their own counsel.
itch-publish- 适用于Steam应用设置、商店页面创建/编辑、depot和包配置、通过SteamPipe/steamcmd上传构建版本、测试分支管理,以及Steam游戏的发布与更新场景。
- 触发关键词:、Steamworks SDK的
steam_appid.txt、tools/ContentBuilder、app_build_*.vdf、"在Steam上发布"、"depot"、"设置构建版本上线"。steamcmd
不适用于以下场景: 在itch.io发布游戏(请使用);编写游戏内的Steamworks API(成就/云存储/ overlay功能属于引擎SDK集成范畴,不在本指南覆盖范围内);商店/财务建议(定价策略、税务等)——请引导用户查看Steamworks文档并咨询专业顾问。
itch-publishPrerequisites (do these once, in order)
前置条件(按顺序完成一次即可)
- Partner account + Steam Direct fee. Each new app requires the Steam Direct recoupable fee (USD $100 per app at time of writing). You receive an App ID — find it on your Steamworks homepage. Treat the App ID as the key to everything below.
- A dedicated build account with least privilege. Builds require a Steam account in your partner group with Edit App Metadata and Publish App Changes To Steam. Create a separate build account with only those permissions (not your admin login). Releasing the app additionally needs Manage pricing and discounts.
- Download the Steamworks SDK on the upload machine. The SteamPipe tools are under
.
tools/ContentBuilder/
Security note: never commit account passwords or thelogin token to the repo. See the CI/CD section in the reference for the supported token workflow.config.vdf
- 合作伙伴账号 + Steam Direct 费用。每个新应用都需要支付可收回的Steam Direct费用(撰写本文时为每应用100美元)。你会获得一个App ID——可在Steamworks主页找到它。请将App ID视为后续所有操作的关键。
- 权限最小化的专用构建账号。构建版本上传需要合作伙伴群组中的Steam账号具备编辑应用元数据和向Steam发布应用变更权限。请创建一个仅拥有这些权限的独立构建账号(不要使用管理员登录账号)。发布应用还需要管理定价与折扣权限。
- 在上传机器上下载Steamworks SDK。SteamPipe工具位于目录下。
tools/ContentBuilder/
安全提示:切勿将账号密码或登录令牌提交至代码仓库。请参考文档中的CI/CD章节了解支持的令牌工作流。config.vdf
Core workflow
核心工作流程
- Configure the app (App Admin).
- Set launch options (executable path + args per OS) under Installation. For a sub-folder exe, put the sub-folder in the Executable field — no leading slashes/dots.
- Add depots on the Depots page (a depot is a bucket of files). Name each depot ("Base Content", "Windows Content"). Leave [All languages] / [All OSes] unless the depot is genuinely OS- or language-specific.
- Grant yourself the depots: add them to your Developer Comp package on the Associated Packages & DLC page, or you won't own the content you upload.
- Publish the configuration. Unpublished config is the most common cause of upload failures.
- Build the store page (presence track). Fill graphical assets, description, tags, trailers, system requirements. When complete, click Mark as ready for review. Store review takes ~3-5 business days; submit at least 7 days before you want it live. It must be in Coming Soon for at least 2 weeks before release.
- Create your build scripts. Start with the simple app-build in Patterns below; for multi-depot/multi-platform apps use depot scripts (see the reference). The script maps local files into depots and names where build output/logs go.
.vdf - Bootstrap steamcmd and upload. Run once to self-update, then run the build (Patterns). steamcmd chunks files (~1 MB), uploads only changed chunks, and registers a global BuildID.
steamcmd - Set the build live on a branch. Go to , pick the build, Preview Change, then Set Build Live Now for a branch. Test on a beta branch first (see
https://partner.steamgames.com/apps/builds/<AppID>for branch setup).references/steampipe-build-scripts.md - Run the Game Build checklist and Mark as ready for review (store presence must be submitted before the build review). Both tracks must be approved.
- Release manually. When approved and Coming Soon has run its time, use the green Release App button → Publish Now → Release Now. Approved titles do not release themselves.
- Update later by uploading a new build and setting it live on (manually) or shipping to a beta branch first. See
default.references/steampipe-build-scripts.md
- 配置应用(应用管理员操作)
- 在「安装设置」下配置启动选项(各操作系统对应的可执行文件路径 + 参数)。如果可执行文件位于子文件夹,请在可执行文件字段中填写子文件夹路径——不要加前导斜杠/点。
- 在「Depot管理」页面添加depot(depot是文件存储容器)。为每个depot命名(如"基础内容"、"Windows内容")。除非depot确实是特定操作系统或语言专属,否则保留「所有语言」/「所有操作系统」设置。
- 为自己分配depot权限:在「关联包与DLC」页面将depot添加到你的「开发者测试包」中,否则你无法拥有自己上传的内容。
- 发布配置。未发布的配置是导致上传失败最常见的原因。
- 创建商店页面(展示信息流程)。填写图形资源、描述、标签、预告片、系统要求。完成后点击「标记为待审核」。商店审核需要约3-5个工作日;请至少在计划发布前7天提交。发布前商店页面必须处于「即将推出」状态至少2周。
- 创建构建脚本。从下方示例中的简易app-build 脚本开始;多depot/多平台应用请使用depot脚本(参考相关文档)。该脚本用于将本地文件映射到depot,并指定构建输出/日志的存储位置。
.vdf - 初始化steamcmd并上传。运行一次进行自我更新,然后执行构建操作(参考示例模板)。steamcmd会将文件分割为约1MB的块,仅上传变更的块,并生成一个全局BuildID。
steamcmd - 在分支上设置构建版本上线。访问,选择构建版本,点击「预览变更」,然后为目标分支点击「立即设置构建版本上线」。请先在beta分支上测试(分支设置请参考
https://partner.steamgames.com/apps/builds/<AppID>)。references/steampipe-build-scripts.md - 执行游戏构建检查清单并标记为待审核(商店展示信息必须在构建版本审核前提交)。两条流程都必须通过审核。
- 手动发布。当审核通过且「即将推出」时长满足要求后,点击绿色的「发布应用」按钮 →「立即发布」→「立即上线」。已通过审核的游戏不会自动发布。
- 后续更新:上传新版本构建,然后手动在分支设置上线,或先发布到beta分支。详情请查看
default。references/steampipe-build-scripts.md
Patterns
示例模板
1. SteamPipe ContentBuilder layout (Steamworks SDK)
1. SteamPipe ContentBuilder 目录结构(Steamworks SDK)
text
tools/ContentBuilder/
builder/ steamcmd.exe (Windows) <- run once to bootstrap
builder_linux/ steamcmd (Linux)
builder_osx/ steamcmd (macOS)
content/ <- your final, runnable build goes here (the files players get)
output/ build logs + chunk cache (safe to delete; speeds up re-uploads)
scripts/ <- your *.vdf build scripts live heretext
tools/ContentBuilder/
builder/ steamcmd.exe (Windows) <- 运行一次完成初始化
builder_linux/ steamcmd (Linux)
builder_osx/ steamcmd (macOS)
content/ <- 最终可运行的构建版本存放于此(玩家将获取的文件)
output/ 构建日志 + 块缓存(可安全删除;能加速重新上传)
scripts/ <- 你的*.vdf构建脚本存放于此2. Minimal app build script — scripts/app_build_1000.vdf
scripts/app_build_1000.vdf2. 极简应用构建脚本 —— scripts/app_build_1000.vdf
scripts/app_build_1000.vdftext
// AppID 1000 with one depot (1001): upload everything under ../content recursively.
// VDF is Valve KeyValues: "key" "value", braces for nesting. Adjust IDs to your app.
"AppBuild"
{
"AppID" "1000" // your App ID
"Desc" "1.0.0 launch build" // internal only; visible in Your Builds
"ContentRoot" "..\content\" // root of files to upload (relative to this file)
"BuildOutput" "..\output\" // logs + chunk cache
"Depots"
{
"1001" // your Depot ID
{
"FileMapping"
{
"LocalPath" "*" // all files from ContentRoot
"DepotPath" "." // mapped to the depot root
"recursive" "1" // include subfolders
}
}
}
}text
// AppID 1000 搭配一个depot(1001):递归上传../content下的所有文件。
// VDF是Valve键值对格式:"key" "value",用大括号实现嵌套。请根据你的应用调整ID。
"AppBuild"
{
"AppID" "1000" // 你的App ID
"Desc" "1.0.0 launch build" // 仅内部可见;可在「你的构建版本」页面查看
"ContentRoot" "..\content\" // 待上传文件的根目录(相对于本文件的路径)
"BuildOutput" "..\output\" // 日志 + 块缓存存储路径
"Depots"
{
"1001" // 你的Depot ID
{
"FileMapping"
{
"LocalPath" "*" // ContentRoot下的所有文件
"DepotPath" "." // 映射到depot根目录
"recursive" "1" // 包含子文件夹
}
}
}
}3. Upload the build (Windows; substitute the platform builder elsewhere)
3. 上传构建版本(Windows平台;其他平台请替换对应目录下的builder)
bat
REM Run from the SDK. Bootstrap once, then build. Use a build account, not your admin login.
tools\ContentBuilder\builder\steamcmd.exe ^
+login <build_account> <password> ^
+run_app_build ..\scripts\app_build_1000.vdf ^
+quittext
What happens: steamcmd self-updates -> logs in -> for each depot, hashes files into ~1 MB
chunks -> uploads only NEW chunks -> writes a depot manifest -> finishes with a global
BuildID. The build is NOT live yet; set it live per the workflow above.bat
REM 从SDK目录运行。先初始化一次,再执行构建。请使用构建账号,不要使用管理员登录账号。
tools\ContentBuilder\builder\steamcmd.exe ^
+login <build_account> <password> ^
+run_app_build ..\scripts\app_build_1000.vdf ^
+quittext
执行过程:steamcmd自我更新 -> 登录账号 -> 为每个depot将文件哈希为约1MB的块 -> 仅上传新增的块 -> 写入depot清单 -> 生成全局BuildID。此时构建版本并未上线;请按照上述工作流程设置上线。4. Iterate safely with a preview build (uploads nothing)
4. 使用预览构建安全迭代(不会上传任何内容)
text
// Add to the AppBuild block to validate file mappings without uploading:
"Preview" "1" // outputs logs + a file manifest into BuildOutput only
// And to auto-set live on a BETA branch after a successful build (never 'default'):
"SetLive" "beta-qa"text
// 在AppBuild块中添加以下配置,可在不上传的情况下验证文件映射:
"Preview" "1" // 仅在BuildOutput中输出日志和文件清单
// 如需在构建成功后自动设置到BETA分支上线(切勿用于'default'分支):
"SetLive" "beta-qa"Pitfalls
常见陷阱
- The branch cannot be set live automatically.
defaultonly works for a beta branch; you must set the default (customer) build live by hand in App Admin. Plan releases around this.SetLive - Store page must be approved before the build. You cannot submit the build for review until store presence is submitted; both must pass, and Coming Soon must run ~2 weeks.
- Titles never auto-release. Even after approval, a human must click Release App at the chosen moment.
- Mac/Linux install nothing. Almost always: the OS-specific depots aren't in the package. Add every depot to the package on Associated Packages & DLC.
- Unpublished app config. "Failed to get application info" / build errors usually mean depots, launch options, or the App ID config were never Published.
- on build. The build account lacks permission for the App ID, or
status = 6/ContentRootpoints at the wrong (empty) path.LocalPath - Committing the login token. The Steam Guard token and account password are secrets. Keep them out of the repo; use the CI workflow in the reference.
config.vdf - Released-app safety delay. Changing the build account's email/phone forces a 3-day wait before you can set a build live for a released app — don't reconfigure the account right before launch.
- 分支无法自动设置上线。
default仅对beta分支生效;你必须在应用管理页面手动设置默认(面向用户)的构建版本上线。请据此规划发布时间。SetLive - 商店页面必须先于构建版本通过审核。商店展示信息未提交前,无法提交构建版本审核;两者都必须通过审核,且「即将推出」状态需持续约2周。
- 游戏永远不会自动发布。即使通过审核,也必须由人工在指定时间点击「发布应用」按钮。
- Mac/Linux平台无安装内容。几乎都是因为特定操作系统的depot未添加到包中。请在「关联包与DLC」页面将所有depot添加到包中。
- 未发布的应用配置。「获取应用信息失败」/构建错误通常意味着depot、启动选项或App ID配置从未发布。
- 构建时出现错误。原因是构建账号缺少对应App ID的权限,或
status = 6/ContentRoot指向错误(空)路径。LocalPath - 提交登录令牌。中的Steam Guard令牌和账号密码属于敏感信息。请勿提交至代码仓库;请参考文档中的CI工作流。
config.vdf - 已发布应用的安全延迟。修改构建账号的邮箱/电话后,针对已发布应用设置构建版本上线会强制触发3天等待期——切勿在发布前重新配置账号。
References
参考资料
- For advanced multi-depot/multi-platform build scripts, /
FileExclusion, beta-branch setup, the CI/CD login-token workflow, and the SteamPipe troubleshooting table, readFileProperties.references/steampipe-build-scripts.md - Primary docs: Steamworks "Uploading to Steam" (), "Release Process" (
partner.steamgames.com/doc/sdk/uploading), "Branches (Betas)" (/doc/store/releasing), "Depots" (/doc/store/application/branches)./doc/store/application/depots
- 如需了解高级多depot/多平台构建脚本、/
FileExclusion、beta分支设置、CI/CD登录令牌工作流以及SteamPipe故障排查表,请阅读FileProperties。references/steampipe-build-scripts.md - 官方文档:Steamworks「上传至Steam」()、「发布流程」(
partner.steamgames.com/doc/sdk/uploading)、「分支(测试版)」(/doc/store/releasing)、「Depot」(/doc/store/application/branches)。/doc/store/application/depots
Related skills
相关指南
- — the same game shipped on itch.io with
itch-publish(often done alongside Steam).butler - /
game-jam— earlier stages of the same project's lifecycle.prototype-fast
- —— 使用
itch-publish在itch.io发布同款游戏(通常与Steam发布同步进行)。butler - /
game-jam—— 同一项目生命周期的早期阶段。prototype-fast