Lesson 262: GameMaker Steam Partner Receipt on BUILD_RECEIPT (2026)

Direct answer: Before October 2026 GameMaker teams run first SteamPipe depot upload or fest setlive, promote gm_steam_partner_receipt_v1.json proving Steamworks App Admin screenshot (P1), config.vdf partner login (P2), IDE Steam session match (P3), VDF depot crosswalk (P4), and build_app dry-run without DepotOwnedByOtherAccount (P5)—distinct from GameMaker export sanity evening (gamemaker_steam_export_receipt_v1 folder gates G1–G5) and runtime parity preflight (GX + Steam hash discipline). Pair the GameMaker Steam partner account sanity preflight (Guide #25).

Lesson hero for GameMaker Steam partner receipt

Why this matters now (October fest first Steam upload)

October 2026 HTML5-first GameMaker teams add Windows Steam demos for Next Fest. Export folder gates pass; steamcmd fails Thursday with DepotOwnedByOtherAccount because the IDE, config.vdf, and Steamworks admin row disagree on who owns the depot. Teams burn fest week on queue retries when the fix is partner identity262 files gm_steam_partner_ok on BUILD_RECEIPT so producers block setlive until P5 GREEN.

The GameMaker partner preflight is the ninety-second gate—262 is the BUILD_RECEIPT milestone.

Beginner path (admin screenshot → dry-run → receipt)

Step Action Success check
1 Screenshot Steamworks Users & Permissions Upload actor is App Admin
2 Confirm config.vdf partner login Not personal Steam
3 Re-login GameMaker IDE Steam session Matches P2
4 Crosswalk app_build_*.vdf depot IDs Match Steamworks UI
5 Run build_app dry-run No DepotOwnedByOtherAccount
6 File receipt + BUILD_RECEIPT gm_steam_partner_ok: true

Time: ~50 minutes first Steam upload; ~12 minutes when screenshot + config.vdf are pinned.

Developer path (gates P1–P6)

Gate Check Fail when
P1 Steamworks app admin screenshot Upload actor not App Admin
P2 config.vdf account name Personal Steam on CI
P3 GameMaker IDE Steam session IDE ≠ steamcmd login
P4 VDF app + depot IDs Drift vs Steamworks Depots tab
P5 build_app dry-run log DepotOwnedByOtherAccount
P6 Receipt + BUILD_RECEIPT Promote before P5 GREEN

P1 — cousin receipt crosswalk

Field Cousin (export blog) Cousin (runtime preflight) This lesson (262)
Schema gamemaker_steam_export_receipt_v1 GX_RUNTIME_PARITY / depot labels gm_steam_partner_receipt_v1
Scope Standalone exe folder G1–G5 GX + Steam runtime hash Partner identity + depot ownership
Path release-evidence/01-build/gamemaker/ release-evidence/gx/ release-evidence/steam/

Do not merge schemas—reference paths in cousin_receipts only.

P1 — App admin screenshot ritual

  1. Steamworks → Users & Permissions → target app.
  2. Screenshot App ID, depot list, upload actor email.
  3. Save release-evidence/steam/steamworks_app_admin_<appid>_<date>.png.

Producer rule: No fest setlive until screenshot < 7 days old.

P2 — config.vdf sanity

Windows:

%ProgramFiles(x86)%\Steam\config\config.vdf

CI rule: One mounted secret per app—never reuse producer laptop personal Steam config on ubuntu-latest.

P4 — VDF crosswalk table

Field Steamworks UI app_build_*.vdf
App ID App → App ID "appid"
Depot ID Depots tab "depot"
Content root GameMaker SteamDemo/ folder

Cross-read depot discipline before fest branch promotion.

P5 — build_app dry-run

steamcmd +login "$STEAM_PARTNER_USER" "$STEAM_PARTNER_PASS" \
  +run_app_build_http /path/to/app_build_demo.vdf \
  +quit 2>&1 | tee logs/steamcmd_build_app_dry_run.log

Fail-closed: grep log for DepotOwnedByOtherAccount before BUILD_RECEIPT promotion.

gm_steam_partner_receipt_v1.json

{
  "schema": "gm_steam_partner_receipt_v1",
  "app_id": "1234560",
  "depot_id": "1234561",
  "partner_login": "studio_partner_login",
  "ide_session_match": true,
  "config_vdf_account": "studio_partner_login",
  "steamworks_app_admin_screenshot": "release-evidence/steam/steamworks_app_admin_1234560_2026-10-04.png",
  "build_app_dry_run_log": "logs/steamcmd_build_app_dry_run.log",
  "cousin_receipts": {
    "export_sanity": "release-evidence/01-build/gamemaker/gamemaker_steam_export_receipt_v1.json",
    "runtime_parity": "release-evidence/gx/GX_RUNTIME_PARITY_RECEIPT.json"
  },
  "gates": {
    "P1_app_admin_screenshot": "pass",
    "P2_config_vdf": "pass",
    "P3_ide_session": "pass",
    "P4_vdf_depot_crosswalk": "pass",
    "P5_build_app_dry_run": "pass",
    "P6_build_receipt": "pass"
  },
  "depot_upload_allowed": true,
  "gm_steam_partner_ok": true
}

Pin under release-evidence/steam/GM_STEAM_PARTNER_RECEIPT.json.

BUILD_RECEIPT row (P6)

Column Pass when
gm_steam_partner gm_steam_partner_ok: true
export_sanity Cousin export evening independent column
runtime_parity Cousin runtime preflight independent column

Thursday row reviewGameMaker partner identity line: P5 dry-run Y/N.

Key takeaways

  1. DepotOwnedByOtherAccount is identity—not queue delay (P5).
  2. App Admin screenshot before fest week (P1).
  3. Never mix personal SteamGuard on CI (P2).
  4. Export sanity = folder; 262 = partner + depot ownership.
  5. Partner preflight Guide #25 — ninety-second gate before this lesson.
  6. Cousin: Lesson 263 — OBS replay path KFM BUILD_RECEIPT column.
  7. October capstone 265 wires 254–264 including this row.
  8. Help #27 (planned) — fix lane for DepotOwnedByOtherAccount.
  9. 12 preflight checks before setlive — checklist sibling.
  10. 18-free Steamworks resources — partner bookmark list.

Common mistakes

  • Uploading from contractor laptop on personal Steam (P2–P3).
  • Reusing last year's config.vdf on new App ID.
  • Trusting IDE green without P5 log grep.
  • Marketing-only invite instead of App Admin (P1).
  • Skipping export sanity—partner OK but exe folder broken.

Troubleshooting

Symptom Lane
DepotOwnedByOtherAccount P1–P3; Help #27 when published
IDE upload OK, CI fails P2 config.vdf vs IDE cache
Wrong build on fest branch Runtime parity preflight
Queue vs auth confusion SteamPipe wall-clock trend
CRLF VDF parse on Linux CI Help #31 (symptom differs)

Mini exercise (45 minutes)

  1. Intentionally log steamcmd with wrong account—confirm P5 fail.
  2. Fix config.vdf + IDE session—confirm match.
  3. Capture P1 screenshot; fill P4 crosswalk table.
  4. Run dry-run; grep log clean.
  5. File receipt; BUILD_RECEIPT GREEN.

Continuity — October–Q4 2026 fest ops truth (254–265)

Lesson Receipt focus
261 Unity CI Library cache
262 (this) GameMaker Steam partner
263 OBS replay path KFM
265 October ops capstone

Previous: Lesson 261 — Unity CI Library cache Addressables
Next: Lesson 263 — OBS replay path KFM receipt

FAQ

Same as export sanity blog?
Export blog = G1–G5 standalone folder; 262 = Steamworks partner + steamcmd ownership on BUILD_RECEIPT.

Same as Guide #25?
Guide #25 = ninety-second preflight checklist; 262 = BUILD_RECEIPT promotion milestone.

Need both IDE and steamcmd?
Yes—P3 proves they match; either alone can lie.

GX.games HTML5 related?
Parallel channel—run VERSION pin for HTML5; 262 for Windows Steam depot.

Can we skip dry-run?
No for fest-facing BUILD_RECEIPT—P5 log is the ownership proof.


October fest Steam uploads fail on partner identity before they fail on queue time—screenshot App Admin, pin config.vdf, dry-run build_app, then gm_steam_partner_ok before setlive.