Tutorials & Beginner-First May 23, 2026

Your First GameMaker Steam Demo Export Sanity Check in One Evening - 2026 Beginner Pipeline

2026 beginner GameMaker tutorial—Steam Windows export sanity check, texture page audit, VM vs YYC choice, and export receipt before Next Fest depot upload.

By GamineAI Team

Your First GameMaker Steam Demo Export Sanity Check in One Evening - 2026 Beginner Pipeline

Pixel-art hero for GameMaker Steam demo export sanity check beginner pipeline 2026

You pressed Create Executable in GameMaker. The folder opened. You zipped it for Steam. Thursday’s fest promotion goes live—and players report a black window, missing fonts, or a crash before the main menu. The IDE run was perfect. The exported folder was not.

May–October 2026 is when HTML5-first and 2D-heavy teams—many on GameMaker 2024.x—add or refresh Steam (Windows) demos for Next Fest. This Tutorials & Beginner-First pipeline is not a full Steamworks depot tutorial (see playtest branch evening); it is the GameMaker-specific export sanity check you run once per build_id before upload: five gates, local boot proof, and gamemaker_steam_export_receipt_v1.json.

Pair with BUILD_RECEIPT, Wednesday demo smoke, and HTML5-first second storefront analysis when your roadmap spans itch and Steam.

Who this is for and what you get

Audience You will be able to…
First-time GameMaker Steam exporter Produce a depot-ready folder with documented checks
Solo dev Stop trusting IDE-only tests for fest uploads
Producer Require export receipt before branch promotion

Time: one evening (3–4 hours first export; 45–60 minutes on repeat).
Prerequisites: GameMaker license with Windows export module, Steamworks app with at least one depot planned, project opens and runs in IDE.

Why this matters now (May 2026)

  1. GameMaker 2024.x runtime churn — Export templates and default options shift; fest teams need a repeatable gate, not forum archaeology.
  2. HTML5 → Steam pathIndustry pattern includes GameMaker beside Construct; Steam is often the second storefront, not the first toolchain muscle memory.
  3. Texture page silent failures — Wrong page size or missing Included Files surface only in standalone exe, not Run.
  4. Fest smoke cultureWednesday demo smoke assumes a binary that boots; this pipeline is pre-smoke export proof.
  5. Refund and partner opticsRefund dashboards tag hour-one crashes; export sanity catches them on your desk.

Direct answer: Export Windows VM (or YYC if qualified) → run gates G1–G5 on the folder → write receipt → only then upload to SteamPipe.

What you will have after one evening

  • Export/SteamDemo/ folder matching Steam depot layout expectations
  • export_sanity_log.md with G1–G5 pass/fail
  • gamemaker_steam_export_receipt_v1.json with runtime version and texture page hash
  • Screenshot of main menu from standalone exe (not IDE)
  • build_label string visible in-game matching receipt

Evening timeline

Block Minutes Output
1 — Options audit 30 options-notes.md (VM/YYC, graphics, scaling)
2 — Texture pages + Included Files 45 G1 pass, page size table
3 — Export + folder layout 45 Clean SteamDemo/ tree
4 — Local boot + G2–G5 60 Exe boot, 60s path, quit
5 — Receipt + evidence 30 JSON + screenshot in release-evidence/

Mental model — IDE run vs standalone exe

Surface What it proves
Run (F5) Game logic rough cut
Create Executable What Steam players receive
Steam installed build Depot + branch + Steam runtime

Tonight stops at standalone exe on a machine without GameMaker installed (Gate G3). Steam upload is tomorrow if you are new to SteamPipe.

Step 1 — Options audit (G1)

Open Game Options → Windows (names may vary slightly by 2024.x UI). Record in options-notes.md:

Setting Fest demo recommendation Why
VM vs YYC VM unless you have YYC crash budget Faster iteration; YYC needs extra QA
Graphics API Default unless Deck-style issues Document if you force DirectX
Scale / resize Fixed or integer scale for pixel art Fractional scale blurs HUD in standalone
Steam SDK Enable only when integrating Steamworks features Unused SDK can confuse first export
Display name Matches store demo title Players see mismatch in task manager

G1 pass: Every row has a deliberate value; nothing left at "I did not check."

Outbound reference: GameMaker Windows export documentation (official manual; UI labels drift—verify against your installed version).

VM vs YYC decision (beginner)

Choose VM when… Consider YYC when…
First Steam demo You already ship YYC on itch
Team has no native crash tooling Profiler shows VM bottleneck in standalone
Fest deadline under 3 weeks You can add +2 QA days

Do not switch VM↔YYC the week of fest without re-running all gates.

Step 2 — Texture pages and Included Files (G1 continued)

Gate G1b — texture page sanity

  1. Open Texture Group / texture page settings.
  2. List each page: size, sprites assigned, default page overflow.
  3. Run game in IDE with texture page view enabled (if available in your version).
  4. Export and confirm no "page 0 overflow" warnings in compile log.
Symptom in standalone Likely cause
Black or pink sprites Missing page assignment
HUD garbled Wrong page on UI sprites
Crash on first room Oversized page on low VRAM

Log page dimensions in receipt texture_pages[].

Gate G1c — Included Files

Audio .ogg, JSON, locale files must appear under Included Files and load via file_exists / bundle APIs—not hardcoded C:\ paths.

// Anti-pattern — breaks standalone
// file_open("C:/Users/dev/project/data.json");

// Pattern — use Included Files + filename
var _map = file_text_read_string("data.json");

Cross-check save migration habits if you ship roguelite JSON saves—semver in filename helps support.

Step 3 — Export folder layout (G2)

Create Executable targeting empty folder Export/SteamDemo/.

Expected shape (names vary by project):

SteamDemo/
  YourGame.exe
  data.win          (or platform data file)
  options.ini
  (steam_api64.dll only if Steam integrated)

G2 pass checklist:

  • [ ] Double-click YourGame.exe on dev PC without opening GameMaker
  • [ ] No missing DLL dialog
  • [ ] Working directory is exe folder (saves write beside exe or %LOCALAPPDATA%)
  • [ ] Version string on title or pause screen (build_label)

Zip contents of SteamDemo/, not a parent folder named Export, when learning SteamPipe layout—depot roots are picky on first upload.

Common G2 failures

Failure Fix
"Failed to load texture" Revisit G1 pages
Instant close Run from cmd.exe to see stderr
Wrong resolution Fix Windows graphics options + room viewport
Antivirus quarantine Whitelist folder; document for team

Step 4 — Local boot gates (G3–G5)

Align with Wednesday demo smoke vocabulary:

Gate Test Pass
G3 Cold double-click launch Menu within 90s
G4 Golden path start First gameplay beat reachable
G5 60s golden path + quit No soft-lock; clean exit

Write a five-step golden path in demo-golden-path.md (same discipline as smoke article). Example:

  1. Press Enter at title
  2. Start demo run
  3. Complete tutorial prompt
  4. Perform one combat or puzzle action
  5. Quit to desktop

Second machine (recommended monthly): Copy folder to PC without GameMaker—catches "works on dev box" dependency leaks.

Audio and input quick checks

  • [ ] First SFX plays (Included File path)
  • [ ] Fullscreen toggle works
  • [ ] Gamepad detected if you advertise controller support on store
  • [ ] No debug overlay keys (console opinion)

gamemaker_steam_export_receipt_v1.json

{
  "schema": "gamemaker_steam_export_receipt_v1",
  "build_label": "gm-demo-2026-05-23-rc1",
  "gamemaker_runtime": "2024.11.0.000",
  "export_type": "VM",
  "platform": "Windows x64",
  "exported_at_utc": "2026-05-23T20:15:00Z",
  "gates": {
    "G1_options_texture": "pass",
    "G2_folder_layout": "pass",
    "G3_cold_launch": "pass",
    "G4_golden_start": "pass",
    "G5_golden_60s_quit": "pass"
  },
  "texture_pages": [
    { "page": 0, "size": "2048x2048", "overflow": false }
  ],
  "steam_depot_planned": "win64_demo",
  "paired_build_receipt": "release-evidence/05-operations/receipts/nextfest-oct-2026-rc1.json",
  "notes": "Tested Win11 23H2; no Steam SDK yet"
}

Archive under release-evidence/01-build/gamemaker/. Copy build_label into BUILD_RECEIPT notes.

After export — Steam upload handoff

When G1–G5 pass:

  1. Copy folder to SteamPipe depot content root per depot discipline.
  2. Upload; capture Steam build id.
  3. Merge build id into BUILD_RECEIPT.
  4. Run Wednesday demo smoke on installed Steam build—not only standalone folder.
  5. Run metadata diff before promotion.

Standalone pass does not replace installed smoke—it de-risks upload day.

Comparison to Construct NW.js path

Topic GameMaker (this pipeline) Construct NW.js
Export unit exe + data.win NW.js folder
Typical silent fail Texture pages Event sheet order
Deep discipline Sheet freeze challenge Different article
Shared fest habit BUILD_RECEIPT + Wednesday smoke Same

Teams on both engines should use one receipt culture—do not fork evidence folders per engine brand.

HTML5 export vs Windows Steam (same project)

Many studios ship HTML5 on itch first. Rules:

Rule Reason
Re-run G1–G5 after switching target Options differ per platform
Do not assume browser save paths on disk Use localstorage vs ini separately
Keep build_label format shared Support compares SKUs

See dual-SKU economics when maintaining two demos.

Save files and %LOCALAPPDATA%

GameMaker often writes saves under user appdata on Windows. For fest demos:

  • Document whether demo wipes saves on first run
  • Match FAQ save claims
  • Avoid copying dev machine save into depot

Test fresh Windows user quarterly.

Room order and persistent objects

GameMaker exports carry room order and persistent instances into standalone exactly as in the project—IDE test rooms you never ship can still compile if they are first in the room list.

Check Pass
First room is retail title / demo entry Yes
Debug rooms removed from build or guarded Yes
Persistent controllers init once Yes
Room goto from title uses correct room id Yes

Add a row to export_sanity_log.md:

| first_room | rm_title_demo |
| debug_rooms_excluded | true |

If you use room inheritance, open inherited rooms after export—parent changes sometimes fail silently until full recompile.

Game end and quit discipline

Fest demos should exit cleanly for Wednesday smoke Gate S6:

// Prefer game_end() or structured quit, not abrupt os_close in demo
if (keyboard_check_pressed(vk_escape) && state == "title")
    game_end();

Document whether Alt+F4 is the only quit path—smoke testers count hang on close as fail.

Fonts, localization, and Included Files depth

Bitmap and SDF fonts behave differently in standalone:

Font type Export check
Sprite font Glyph sprites on correct texture page
TTF imported Antialiasing matches pixel font pass intent
Localized CSV File in Included Files; load once at boot

Gate G1d — localization smoke

  1. Switch language once if shipped.
  2. Confirm no ??? boxes on HUD.
  3. Longest German string fits button width.

If demo is English-only, state that in store FAQ—do not leave language menu showing unfinished locales.

SteamPipe depot mapping (conceptual, +30 minutes if first upload)

Export sanity does not upload—but you should preview depot layout tonight:

Steamworks concept Your folder tonight
Depot root Contents of SteamDemo/ (exe + data)
Launch option YourGame.exe relative path
build id Filled tomorrow after upload

Follow Steamworks uploading builds when ready. Cross-read depot and branch discipline before pointing fest branch at this build.

build_label convention

gm-{sku}-{YYYY-MM-DD}-rc{n}

Example: gm-nextfest-2026-05-23-rc1. Display on title screen and pause menu footer.

Worked example (composite, one evening)

Context: Solo dev; HTML5 demo on itch; first Windows Steam export for October fest.

Hour Action Result
0 G1 options → VM, fixed scale options-notes.md
1 Texture page 0 overflow fixed G1b pass
2 Export to SteamDemo/ G2 pass
2.5 Standalone boot black screen Missing Included File manifest.json
3 Add Included File; re-export G3 pass
3.5 60s golden path G5 pass
4 Receipt + screenshot Ready for SteamPipe tomorrow

Lesson: IDE never loaded manifest.json from disk path; standalone did. Classic fest-week blocker caught before upload.

Extensions and marketplace assets

Third-party extensions can break export when:

  • DLL not copied to ext folder
  • Extension disabled in IDE but code still calls it
  • License forbids redistribution (read EULA)
Step Action
1 List extensions in options-notes.md
2 Export on clean project copy test if suspicious
3 Note extension names in receipt notes

Remove unused extensions before fest freeze—smaller surface for Steam review questions.

Steam Deck and controller (optional gate G6)

If store page mentions Deck or full controller support:

Test Pass
Launch on Deck (or Big Picture) Boots to menu
A button maps to primary action Yes
Text readable at 1280×800 Yes

Log in receipt notes. Not required for desktop-only demos—honesty on store page matters more than checkbox features.

Delta timing and frame skip

Standalone on low-end laptops may stutter while IDE was smooth:

  • Enable interpolate / fixed timestep deliberately—document choice
  • Avoid physics tied to delta_time without cap in demo slice
  • Test golden path on min-spec machine if cited in system requirements checklist

Security and anti-tamper (demo scope)

Do not spend fest week on anti-cheat. Do close obvious debug keys:

Key / combo Retail demo
F1 help with dev commands Off
God mode flag Off
Room skip cheat Off

Aligns with developer console opinion.

Partner and publisher packet crosswalk

Attach export receipt to partner ZIP 01_builds/ when GameMaker is declared engine:

## Build proof
- gamemaker_steam_export_receipt_v1.json (G1–G5 pass)
- standalone main_menu screenshot
- BUILD_RECEIPT build_id (after Steam upload)

Q3 diligence asks how you verify exports—receipt answers without invented metrics.

Month-one adoption ladder

Week Goal
1 First receipt + standalone screenshot
2 Second machine test
3 Pair with playtest branch upload
4 Add installed Wednesday smoke

Snippet-friendly answers

How do I export GameMaker to Steam?
Use Create Executable for Windows, verify texture pages and Included Files, run local boot gates, upload folder via SteamPipe, then promote branch after smoke passes.

Why does GameMaker work in IDE but not Steam?
Usually texture page overflow, wrong Included Files paths, or uploading wrong zip root—not Steam itself.

VM or YYC for fest demo?
VM unless you already ship YYC with spare QA days.

Performance smoke (optional sixth gate)

If standalone FPS is below target on min-spec machine:

Check Tool
Room transition cost Built-in profiler
Texture swaps Texture page view
Particle overdraw Disable groups test

Fest demos rarely need 144fps—they need stable 60 on golden path hardware.

Playtest branch before public fest

Upload to friends-and-family playtest branch before setting fest branch live. Export receipt proves folder sanity; playtest proves Steam install path.

Evidence folder placement

release-evidence/
  01-build/
    gamemaker/
      export_sanity_log.md
      gamemaker_steam_export_receipt_v1.json
      screenshots/
        main_menu_standalone.png

Friday Block 5 can spot-check receipt age vs current build_id.

CI hook (optional)

# Pseudocode — after headless compile job
test -f Export/SteamDemo/YourGame.exe || exit 2
test -f release-evidence/01-build/gamemaker/gamemaker_steam_export_receipt_v1.json || exit 3
jq -e '.gates.G3_cold_launch == "pass"' release-evidence/01-build/gamemaker/gamemaker_steam_export_receipt_v1.json || exit 4

Align exit codes with validate-packet style.

Common mistakes (seven)

  1. Uploading IDE Run output — Only Create Executable counts.
  2. Skipping texture page audit — Pink sprites on stream are expensive.
  3. YYC switch without retest — New crash class.
  4. Wrong zip root — Steam depot gets nested folder; exe not found.
  5. No build_label — Cannot correlate refunds to export.
  6. Smoke only in IDEWednesday smoke needs installed build.
  7. Included Files path drift — JSON moved in repo but not in asset bundle.

Pro tips (six)

  1. Compile log to file every export—attach to receipt.
  2. Screenshot main menu from standalone automatically (ShareX).
  3. Same build_label in exe, receipt, BUILD_RECEIPT.
  4. Keep options-notes.md in git — diff when someone toggles YYC.
  5. Run G5 before zip — faster than re-upload.
  6. Pair with 18 playtest tools after smoke passes.

Non-repetition note (editorial)

No existing URL owns GameMaker-specific Steam export sanity for fest demos; HTML5 industry analysis names GameMaker but does not teach export gates. Tutorials category returns after Process + Industry passes; avoids Next Fest metadata checklist cluster.

Key takeaways

  • Create Executable is the product; IDE Run is not.
  • Gates G1–G5: options/texture, folder, launch, golden path, quit.
  • VM default for first fest unless YYC is already battle-tested.
  • Texture pages and Included Files cause most standalone surprises.
  • gamemaker_steam_export_receipt_v1.json pairs with BUILD_RECEIPT and Wednesday smoke.
  • Standalone pass precedes Steam upload; installed smoke still required.
  • build_label must be visible in-game and in receipts.
  • HTML5 itch and Windows Steam need separate export passes.
  • Second machine without GameMaker catches dev-only dependencies.
  • Playtest branch before public fest branch promotion.

FAQ

We already use Steamworks GUI upload—skip this?
No—GUI upload does not check texture pages. Run gates first.

Does this replace playtest branch tutorial?
No—this is GameMaker export; that article is branch creation.

GameMaker + Steamworks SDK integration?
Add a sixth gate for achievements/cloud when enabled; start without SDK for first demo.

Same pipeline for macOS depot?
Re-run all gates; texture pages differ.

How does this relate to Construct NW.js?
Parallel engine discipline; shared evidence culture.

We use GameMaker Cloud—different?
Same gates on downloaded source before export; verify cloud build matches local build_label.

Can we skip receipt JSON?
Only for internal QA zips—not for fest or partner-facing depots.

Incident response when export fails after promotion

Hour Action
0 Roll back branch if crash rate spikes
1 Re-run G1–G5 on hotfix export
2 New receipt + BUILD_RECEIPT row
3 Re-smoke installed build
4 Update demo patch notes if player-visible

Operating review hook

Four-Friday operating reviews Block 3 add:

  • Export receipts filed per build_id this month
  • Count of standalone-only passes without installed smoke
  • Top G1 failure mode (texture vs Included Files)

Fest marketing stop rules

No increase on fest marketing cap while G3–G5 fail on standalone—fix binary before buying traffic.

Conclusion

GameMaker makes it easy to feel done when the IDE runs. Steam players run the exe in a folder.

Spend one evening on G1–G5, file the receipt, then upload. Fest week is too late to discover texture page zero was full.

Next reads: BUILD_RECEIPT beginner pipeline, Wednesday demo smoke, Steam playtest branch.