build(steam): the SDK zip IS the only download — ContentBuilder included, links recorded

The partner dashboard offers exactly one download because there is only one: the SDK zip
carries the runtime (steam_api64.dll) and the release tooling (sdk/tools/ContentBuilder
with steamcmd.exe for Windows and steamcmd.sh for Linux/macOS, plus the app_build and
depot_build VDF templates). Verified against the zip rather than assumed.

scripts/steam-sdk.sh gains --contentbuilder, opt-in because it is 27 MB of binaries that
only the uploading machine needs.

Distribution.md §2 now opens with that fact — there is no separate ContentBuilder
download to hunt for — plus a reference table of the pages that actually get used:
SteamPipe upload, DLC setup, BIsDlcInstalled, store artwork sizes, Coming Soon window,
the Wallet rule, recurring subs, partner support and Steamworks.NET.
This commit is contained in:
2026-11-01 07:26:51 -08:00
parent 1fe84be64a
commit f189c5e328
2 changed files with 56 additions and 3 deletions
+30
View File
@@ -7,6 +7,11 @@
# is only needed on the machine that uploads a depot.
#
# ./scripts/steam-sdk.sh ~/Downloads/steamworks_sdk_165.zip
# ./scripts/steam-sdk.sh ~/Downloads/steamworks_sdk_165.zip --contentbuilder
#
# --contentbuilder also extracts sdk/tools/ContentBuilder into steam/contentbuilder/ — that is
# the release tooling (steamcmd + the app_build/depot vdf templates). It is a separate opt-in
# because it is only needed on the machine that uploads a depot, and it is ~12 MB of binaries.
#
# steam_api64.dll is Valve's redistributable — shipping it beside a Steam-published exe is
# permitted by the Steamworks terms. It is NOT committed: steam/ is gitignored, like ffmpeg/.
@@ -14,6 +19,7 @@
set -euo pipefail
ZIP="${1:-$HOME/Downloads/steamworks_sdk_165.zip}"
WANT_CONTENTBUILDER="${2:-}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
[ -f "$ZIP" ] || { echo "❌ SDK zip not found: $ZIP" >&2; echo " Download it from partner.steamgames.com/downloads/steamworks_sdk.zip while signed in." >&2; exit 1; }
@@ -41,5 +47,29 @@ PY
printf '480\n' > "$ROOT/steam/steam_appid.txt"
echo "✓ steam/steam_appid.txt = 480 (Spacewar, local Debug testing only)"
if [ "$WANT_CONTENTBUILDER" = "--contentbuilder" ]; then
python3 - "$ZIP" "$ROOT" <<'PY'
import sys, zipfile, pathlib
zip_path, root = sys.argv[1], pathlib.Path(sys.argv[2])
prefix = "sdk/tools/ContentBuilder/"
dest = root / "steam" / "contentbuilder"
count = 0
with zipfile.ZipFile(zip_path) as z:
for name in z.namelist():
if not name.startswith(prefix) or name.endswith("/"):
continue
target = dest / name[len(prefix):]
target.parent.mkdir(parents=True, exist_ok=True)
with z.open(name) as src, open(target, "wb") as out:
out.write(src.read())
count += 1
print(f"✓ steam/contentbuilder/ ({count} files)")
print(" Windows upload: steam/contentbuilder/builder/steamcmd.exe +login <user> +run_app_build <vdf>")
PY
fi
echo ""
echo "Next: the entitlement seam (IEntitlement + SteamApps.BIsDlcInstalled)."