== Launch date pushed: May 19 -> May 26, 2026 ==

Store page review went into a longer-than-expected queue and we want more wishlist runway. New target: Tuesday May 26, 8:00 ET. Date swept across the full doc/code surface:

  • ROADMAP.md, KNOWN_ISSUES.md
  • tools/write_launch_kit_docs.py (regen produces new dates)
  • tools/write_steam_upload_doc.py
  • websites/aiapocgame: LaunchCountdown.astro, index.astro, press.astro, privacypolicy.astro, stats.astro, welcome blog post (separate commit)
  • ~/.claude/wiki: ai-apocalypse.md, project-ai-apocalypse.md (separate)
  • Cadence dates shifted +7d to match (T-21 / T-14 / T-7 / etc.)

== Steamworks.NET integration: Route B foundation ==

User chose Route B (full SDK integration) over Route A (dashboard- only stubs). Land the foundation now so the wiring across the codebase can happen incrementally before May 26.

Pieces shipped:

  1. Packages/manifest.json: added OpenUPM scoped registry + com.rlabrecque.steamworks.net 21.1.0 dependency. Unity will resolve on next refresh. (Package Manager → Refresh if stalled.)

  2. steam_appid.txt at project root: contains “4652030”. Required only for editor-time SteamAPI.Init — Steam-launched builds get the AppID from the launcher.

  3. Assets/Scripts/Core/SteamManager.cs (new): bootstraps SteamAPI via RuntimeInitializeOnLoadMethod, runs callbacks each frame, handles RestartAppIfNecessary so direct-exe launches bounce through Steam. Wrapped in #if !DISABLESTEAMWORKS so the project still compiles if the package fails to resolve (define DISABLESTEAMWORKS in Scripting Define Symbols as a kill switch).

  4. Assets/Scripts/Core/SteamAchievements.cs (new): façade with 29 named convenience methods (OnAct1BossDefeated, OnRunCompleteHell, OnFirstToken, etc.) mapped to the 25 achievement IDs in the spec doc + 4 path-progression. Safe to call before SteamManager finishes init — pending unlocks queue and replay when UserStatsReceived fires. Idempotent — re-unlocks are no-ops.

  5. PostCombatHandler wiring (first batch of triggers):

    • Act 1 boss kill -> OnAct1BossDefeated
    • Full-run completion -> per-difficulty unlock (Normal/Nightmare/ Hell) + Trinity check (all 3 classes Normal-cleared)
    • Run defeat -> OnFirstToken (when meta.tokens 0 -> >0) and OnDieAct1 (act 1, <=3 floors cleared)

Remaining wiring queued for follow-ups:

  • Build-mastery achievements (need build-path detection at run end)
  • Combat feats (no-damage clears, big-hit thresholds, triple-status)
  • Meta unlocks count thresholds (10/30/all)
  • Quirky/hidden (shop empty, last-card kill, zero-shield clear)

== User action items after pull ==

  1. Open Unity → Package Manager → Refresh. Verify “com.rlabrecque.steamworks.net” 21.1.0 appears under Project + imports cleanly. If not: Window → Package Manager → ”+ Add package from name” → “com.rlabrecque.steamworks.net” → 21.1.0.

  2. Configure achievements in Steamworks dashboard: App 4652030 → Stats & Achievements → New Achievement (x25). IDs match what’s in SteamAchievements.cs. Display names + icons from AI_Apocalypse_Achievement_Spec.docx.

  3. Configure Steam Cloud (Auto-Cloud): App 4652030 → Cloud → Auto-Cloud rule: Path: %USERPROFILE%\AppData\LocalLow\Scuffed Studios\AI Apocalypse\saves
    Pattern: *.json

  4. Configure Steam Input default keyboard layout: App 4652030 → Steam Input API Configuration → use the “default keyboard configuration” template.

Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]


Commit 1b8b411 by astafford8488.