Dev Blog
Patch notes, feature announcements, and dev diaries. Subscribe via RSS or follow us on Discord for real-time updates.
Early Access Moved to July 21 — More Balancing, More Content
We're pushing the AI Apocalypse Early Access launch from June 16 to July 21, 2026 to add more content and dial in balance.
READ POST →Why We're Making AI Apocalypse
The deckbuilder we wanted to play didn't exist — so we built it. Here's what makes AI Apocalypse different and why we think the genre has room for one more.
READ POST →DemoSequence: validation inspector + fix obsolete APIs + shrink b/c decks
Three changes that all fall under "make trailer-capture authoring catch
READ POST →Fix sequence capture leaking into normal play sessions
Capture had two leak vectors:
READ POST →Fix: strip demo defines unconditionally on Play exit
The previous fix gated define-stripping on EP_DEFINES_ADDED — a flag set
READ POST →Fix trailer-builder render: 4 issues uncovered on first launch render
The pipeline had never actually been run end-to-end before the launch
READ POST →Trailer v3: full weapon names, splice cuts, image-backed logo bookends
User feedback on first render: pacing too slow, splice between action
READ POST →Wire up act_progression_montage trailer sequence (NodeMap scene)
Last footage gap before launch trailer can render. Previously the
READ POST →Add MenuControllerHelper for gamepad menu navigation
Diagnostic from previous session confirmed Gamepad.current detects an Xbox
READ POST →Push launch date May 26 -> June 16 + harden ControllerNavigator
Date sweep across active marketing kit + wiki + website. New launch
READ POST →Strip non-compliant subtitle from Steam capsule + library assets
Steam rejected our store page TWICE — first because capsules had no
READ POST →Add capture-presentation layer (cursor pre-glow + ghost-card arc + caption)
Captured trailer footage was technically correct but visually unclear —
READ POST →Add capture-window helper, press kit, streamer kit; route bug-report to Discord
Tooling — one-click sequence capture inside the Editor.
READ POST →Fix capture flow + bulletproof telemetry handler + add ControllerNavigator
ClaudeDemoController.Start coroutine rewrite — capture wasn't loading
READ POST →Switch DemoSequence to name-based asset refs + populate hero sequences + Deck Verified prep
Sequence-asset schema change.
READ POST →Wire launch-kit docs into Steam art folder + master marketing checklist
* Copy launch-kit/{01_ea_roadmap, 02_day1_comms_templates,
READ POST →Add Demo bootstrap + feature flags + trailer music generator
Unity side: AIApocalypse.Demo namespace foundation for the two demo
READ POST →Add Player Demo gates + Claude Demo foundation + Trailer Builder CLI
Track 1 — Unity demo modes pre-launch.
READ POST →Wire Unity Recorder, author 4 sequence templates, add bug-report + launch comms
Track 1 — Unity capture wiring + sequence templates.
READ POST →Add anonymous gameplay telemetry client
Adds AIApocalypse.Core.Telemetry — opt-in client that batches events
READ POST →Add card-play VFX (streaks, glitch pop, status burst, lethal moment, shards, shimmer, combo)
Adds seven new VFX primitives to VFXManager and wires them into the
READ POST →Add LAUNCH_PUNCH_LIST.md (launch-mechanics master list)
Captures the launch-mechanics layer above the per-week feature roadmap:
READ POST →Generate 29 unachieved (locked-state) achievement icons
Steam shows the unachieved icon to players who haven't unlocked
READ POST →QA round 2: tooltip root cause, transition flash, balance, trap melee
== Tooltip root-cause fix ==
READ POST →Steamworks.NET 2025.163.0 compile fixes
The OpenUPM resolver pulled Steamworks.NET 2025.163.0 (latest), not
READ POST →Steamworks.NET integration foundation + launch date May 26
== Launch date pushed: May 19 -> May 26, 2026 ==
READ POST →Boss hype screen + UnlockPicker root-cause fix
Two big drops on the same commit since they fell in the same review pass:
READ POST →Enemy intent: surface secondary actions; UnlockPicker: real card frames
== Enemy intent multi-action display ==
READ POST →Fix Combat->NodeMap transition: keep FadeCanvas alive across cleanup
The transition loading screen worked everywhere EXCEPT Combat->NodeMap
READ POST →Loading screen + shop/event sci-fi pass
Three QA-driven UX fixes from playtest:
READ POST →Map node hover previews + card draw animation
== Map node hover previews ==
READ POST →QA bug bash: tooltip, transition, playability, draw stack, gear text
Six bugs reported during day-1 QA on the staging branch:
READ POST →Story arc system: 4 narrative beats with class-agnostic story screen
== New: StoryScreen.cs (full-screen narrative beat overlay) ==
READ POST →Tutorial system + damage breakdown on hover
== Tutorial: progressive disclosure across first 3 combats ==
READ POST →QA day-1 bug bash: weak fix, push/pull, popup canvas, +2 cards
Reported bugs from day-1 QA on the staging branch:
READ POST →QA fixes: Singularity nerf, faux-bold news, exhaust auto-append
1) Singularity boss shield 100 -> 50. Was over-tuned in playtest;
READ POST →Fix EA disclaimer popup v3: explicit canvas RT stretch for nested canvases
Commit 492b080's "fix" didn't work — it made things worse because
READ POST →UI polish: relocate REPORT A BUG, enlarge CHARACTER button text
Two quick post-launch-test tweaks from the first Steam playthrough:
READ POST →Watcher: detect IL2CPP incremental builds + strip unicode from logs
Two bugs after the first real watcher test this morning:
READ POST →Achievement icons: 29 generated + unicode fix
Art output lives at:
READ POST →Auto-upload watcher: watch Builds-steam, run steamcmd on Unity rebuild
New tool at tools/watch_and_upload.py. Polls the Builds-steam folder
READ POST →Balance pass: damage-per-energy grid + power-card upgrade scaling
CardUpgrade.cs:
READ POST →Card reference refresh + achievement art generator + Steam walkthrough fixes
- dump_card_reference.py: mirror output to repo root in addition to
READ POST →Card reference xlsx: dedup + per-class tabs + tier rows
Previous dump listed Slash three times because the sword starter
READ POST →Fix AppID: 1164585 -> 4652030 (real ID from Steamworks)
The 1164585 AppID inherited from old project notes turned out to be
READ POST →Fix EA disclaimer popup: body text rendered as 1-char-wide vertical column
MenuMessagePopup body text was getting its RectTransform collapsed to
READ POST →Launch kit: trailer shot list, Discord plan, press release, socials, achievement spec
Five copy-paste-ready Word docs to drive launch-week execution. All
READ POST →Launch prep: Steam upload walkthrough doc + refreshed roadmap + .gitignore for build folders
- tools/write_steam_upload_doc.py generates a Word walkthrough of
READ POST →Pre-launch hardening: save/load crash fixes, EA disclaimer, main-menu polish
Code changes driven by the save/load audit done ahead of the May 19 EA ship:
READ POST →Art assets: card art, enemy portraits, card frames, UI, fonts
Generated via the Python pipeline in tools/. Includes:
READ POST →Art + audio generation tooling
Python scripts used to produce the game's art, music, and SFX assets
READ POST →Audio system: music, SFX, crossfades, per-scene cues
AudioManager now loads all SFX + music from Resources/Audio at boot,
READ POST →Card upgrades: ++ tier, shield bump in upgrade rules, Excel dump
Upgrade system:
READ POST →Combat: advance-attack dual-action, support-enemy pairing, logs
- Advancing melee enemies now also deal reduced damage (base -2,
READ POST →Combat mechanics: shield absorb, DoT ordering, boss dual-action
- Enemy shield now absorbs damage before armor + HP (matches player
READ POST →Combat UI: enemy track rework, tooltips, card hover polish
- CombatSceneBuilder: enemy track rebuilt with top-anchored red strip
READ POST →Combat VFX: damage numbers, shake, hit punch, floating tooltips
VFXManager centralizes the combat-feel effects: scale-aware floating
READ POST →Content: card/gear rebalance, 23 events, locked-by-default flags
Cards:
READ POST →Deck rules: copy cap, specialization algorithm, weapon-swap gate
- Per-card 5-copy cap (MAX_COPIES_PER_CARD): base-name counted so
READ POST →Devblog action: fix git pretty-format escape, backfill posts
Root cause: the format string used JS "\u001f" escapes but git's
READ POST →Devblog automation: GitHub Action + backfilled posts
On every push to main, .github/workflows/publish-devblog.yml runs
READ POST →Enemy intent: show dual-action debuff rider on attack turns
Bosses with applyDebuffsOnAttack (Sentinel Prime, The Nexus, The
READ POST →Escape menu + screen flash helper
- EscapeMenu: in-combat / in-map pause overlay with Resume, Settings,
READ POST →Event art: 25 banner images for the event overlay
One PNG per event, generated via tools/generate_event_art.py using
READ POST →Event art: infrastructure + generator script
Adds support for per-event banner art on the event choice overlay.
READ POST →Events: permanent +Start Armor / +Start Shield rewards
Adds PlayerState.bonusStartingBlock + bonusStartingShield that
READ POST →Main menu rebuild: news panel, progress panel, difficulty select
Three-column title screen: News | Buttons | Progress.
READ POST →Map, shop, reward, character screens: polish + meta wiring
- NodeMapUI: card upgrade picker uses the real combat card prefab
READ POST →Meta-progression: token economy, draft unlock picker, difficulty tiers
Adds a persistent meta-progression layer stored on GameState.meta
READ POST →Multi-hit balance pass: total damage ~= 7-8 per energy cost
Target: total damage across all hits = 7-8 per energy cost, 6 for
READ POST →News panel: drop VIEW ALL NEWS button to bottom, remove hint line
News panel: drop VIEW ALL NEWS button to bottom, remove hint line
READ POST →Project: settings + TMP material resave
Project: settings + TMP material resave
READ POST →Project settings: render pipeline and TMP asset tweaks
Small project-level tweaks accumulated over this sprint:
READ POST →Remove-card screen: use real combat card prefab
The REMOVE A CARD screen was rendering a flat panel-with-text
READ POST →Scene transitions, parallax background, sci-fi UI kit
- SceneTransitioner: fade-to-black between scenes with a sceneReady
READ POST →Shop / event / cards: real prefab in shop, {shield} placeholder, event autoscale
Shop (NodeMapUI.ShowShopOverlay — the ACTUAL shop, vs. the unused
READ POST →Shop + event screen visual refresh
Shop:
READ POST →Tooltips: drop tooltipTarget null-gate on status icons
StatusIconHover was only being attached if tooltipTarget was
READ POST →Welcome to the AI Apocalypse
The first dev blog post. What this site is, what we're building, and what Early Access means for AI Apocalypse.
READ POST →Anti-Debuff Cards, Sci-Fi Class Names, Combat Log & UX Polish
Shake It Off / Iron Will / Smoke Bomb etc. give each class a cleanse tool; classes renamed to cyberpunk flavor; combat log rewritten to be readable during a fight.
READ POST →Bug Fixes: HP Stacking, Push Cap, Weak Scaling, Rest Nodes
Four long-standing combat bugs fixed in one pass — max HP stacking correctly from gear, push distance capped at Far, Weak applying the right value, and rest nodes firing their effect.
READ POST →Enemy Abilities System & Card Upgrades
Enemies now have cooldown-gated debuffs, buffs, heals and summons. Card upgrades added to reward pools and rest nodes.
READ POST →Music Tracks, Scene Audio & Art Generation Tools
Full soundtrack in place per scene, crossfades between menu/combat/map, and a reproducible pipeline for generating card + enemy art.
READ POST →Save/Load, Act 3, 18 New Cards
Full save/load across scenes, the Act 3 content drop, and 18 new cards filling out the build-path coverage.
READ POST →