Steam 上传/下载流水线踩坑
Steam 上传/下载流水线踩坑
这篇汇总在批量打包、上传、下载 Steam 版本时撞到的各种报错和绕法。命令保留原样,凭据和路径都换成占位符。
本地版本运行提示下载失败
跑机器出的本地版本,提示下载失败之类的信息,通常是缺 steam_appid.txt:
- 检查游戏根目录有没有
steam_appid.txt - 没有就手动建一个
- 里面填对应游戏的 Steam app id,保存
切不到正确的测试分支
清缓存重启 Steam 客户端:Steam 设置 → 下载 → 清除下载缓存,等客户端重启后再切分支。这个方法不是 100% 有效,有些机器行有些不行。
下载报错 state is 0x402 / 0x602
下载时报 Error! App 'xxx' state is 0x402 after update job(或 0x602)。下载命令大致是:
steamcmd.exe +force_install_dir <download_dir> +login <account> <password> +app_update <appid> -beta <branch> -betapassword <password> +quit
解法是加 validate 并套个 retry 反复跑,断点续传直到成功:
steamcmd.exe +force_install_dir <download_dir> +login <account> <password> +app_update <appid> -beta <branch> -betapassword <password> validate +quit
实测下载到 100% 又报错的情况也有,再跑一次这条带 validate 的命令,它会做校验然后 success。
上传报错
Failed to commit build: ERROR! Failed to commit build for AppID xxx : Failure。原因是 SetLive 的分支名写错了,setlive 那步会失败,但版本其实已经传到 Steam 且可用。
OUT OF MEMORY: ***** OUT OF MEMORY! attempted allocation size: xxxxx ****。多跑几次上传命令即可,比如 30G 的差异文件大概要跑三次才能全部传完。Steam 上传时会和服务器上该 depot 上一个 live 分支的内容做对比,所以增量是按差异算的。
DRM/登录失败:并发登录限制
多台机器同时跑上传或下载脚本,会有几台在 login 处报错失败。解法:
- 减少同时跑的机器数量,实测 6 台没问题。
- 多用几个账号。实测一台机器同时登两个账号没问题,而且不需要频繁输验证码。
大 exe 无法自动 DRM
QA 发现某个 exe 也需要 DRM,跑 drm_wrap ... drmtoolp 0 会报错,而以前那个 exe 不会。原因是这个 exe 大于 64MB,需要手动用网页版 DRM 包装器。详见 Steam DRM 包装。
后续还遇到命令报 Couldn't read file '...exe' 无法上传,改成兼容模式(drmtoolp 6)后能上传 DRM,Steam 验证后游戏能开。
DRM 和数字签名冲突
签名过的 exe 加 DRM 后签名消失。正确做法是先加 DRM 再发去签名,详见 Steam DRM 包装 末尾。