Wages and Mages Devlog 05 — Nearly Seven Thousand Tests, a Thousand Screenshots, and the Itch-Ready Badge

/ / 12 min read
Wages and Mages

Devlog 04 ended at the PLAYTESTING gate. The game had 4,047 automated tests, 307 screenshots, a steampunk hub, an opening cinematic, and a clean UX audit. Every surface had been polished. Every dark frame eliminated. Every narrator line wired to context.

The factory looked at that and said: not enough.

PLAYTESTING is not itch_ready. PLAYTESTING means the game can be played. Itch_ready means every system has been stress-tested so thoroughly that releasing the game to paying strangers is a defensible decision. The distance between those two milestones is four QA expansion waves, 2,761 new tests, 695 new screenshots, one bug that hid inside world entry transitions, and the coldest audit the factory has ever run on a single title.

This is the devlog about what it takes to earn the badge.

Wave 4 — Narrator Deep Verification (4,047 → 4,468 tests)

The dual narrator system is the spine of Wages and Mages. W.A.G.E-9999 treats every dungeon floor as a quarterly earnings call. M.A.G.E-0001 translates ancient prophecy through corrupted corporate jargon. They disagree about everything — loot allocation, boss strategy, whether the Crystalline Patriarch counts as a capital asset or an existential threat.

Devlog 04 verified that narrators fired in the right contexts. Wave 4 asked a harder question: do they fire correctly in every context, and do they never fire when they shouldn’t?

421 new tests targeted narrator behavior across five verification domains:

  • Context coverage: Every narrator trigger point tested across all four zones, all three dungeon types, every boss encounter, and both day and night cycles. 87 new assertions confirmed that zone-specific lines only appear in their zones. M.A.G.E’s Ice Kingdom prophecies no longer leak into the Abandoned Mine Shaft.
  • Mutual exclusion: 64 tests verified that W.A.G.E and M.A.G.E never speak simultaneously. The dual-narrator system uses a priority queue with cooldown timers — Wave 4 proved the queue behaves correctly even under combat spam, rapid zone transitions, and save/load mid-dialogue.
  • Dialogue state persistence: 52 tests round-tripped narrator state through save/load cycles. If W.A.G.E is mid-monologue about copper depreciation when the player saves, W.A.G.E resumes that monologue on load — not a random quip about scrap futures.
  • H.R. and P.R.O.F.I.T interjections: The secondary narrators are event-driven. H.R. fires on party management actions (hiring, firing, reassignment). P.R.O.F.I.T fires on economic milestones (first 1,000 copper, first Masterwork craft, first Phase transition). 118 tests confirmed every trigger condition and validated that interjections respect the primary narrator cooldown.
  • Edge cases: What happens when a boss dies during a narrator line? When the player opens the menu mid-dialogue? When two narrator triggers fire on the same frame? 100 tests answered these questions. The answer: the queue handles it.

Screenshots grew from 307 to 402. Ninety-five new captures documented narrator UI states — dialogue boxes at various lengths, portrait transitions between W.A.G.E and M.A.G.E, H.R. interjection overlays, and the narrator toggle in both enabled and disabled states.

Tests: 4,047 → 4,468 | Screenshots: 307 → 402

Wave 5 — Day/Night Cycle Coverage (4,468 → 4,585 tests)

The three-system economy is a day/night loop. Day means dungeons: turn-based combat on 8×8 grids, party management, resource extraction. Night means defense: wave-based enemies on a 20×20 grid, 13 structure types, four attack edges, copper hemorrhaging into barricades and turrets.

Wave 4 verified narrators. Wave 5 verified the transition between worlds.

117 new tests covered the seam:

  • Day-to-night handoff: Resources earned during dungeon runs must transfer correctly to the defense budget. 34 tests confirmed copper, scrap, crystals, and steam values persist across the transition with zero drift. The defense phase inherits exactly what the day phase earned — not a copper more, not a copper less.
  • Night-to-day recovery: After surviving a night wave, the player returns to the hub with structures intact (or damaged). 28 tests verified structure state persistence: a half-health barricade at night end remains half-health at the start of the next night. Turret upgrade levels carry forward.
  • Time-gated content: Certain shop items, narrator lines, and quest stages are locked to day or night phase. 31 tests confirmed gates hold. You cannot buy night-only ward components during day phase. M.A.G.E’s nighttime prophecy lines do not fire during dungeon crawls.
  • Difficulty scaling: The difficulty modifier affects copper budget (Easy +15, Normal baseline, Insane -10). 24 tests verified that difficulty scaling applies correctly to both day loot drops and night wave reward multipliers. The economy stays balanced at every difficulty tier.

Screenshots expanded to capture the transition in both directions — hub at dusk, defense grid at wave start, dawn return, and the between-shifts crafting screen with resources reflecting the previous night’s outcome. 109 new captures.

Tests: 4,468 → 4,585 | Screenshots: 402 → 511

Wave 6 — Building and Tower Defense Mechanics (4,585 → 5,005 tests)

Night defense is the most mechanically dense system in the game. Thirteen structure types across four categories — turrets (damage), traps (slow/damage), barricades (block), wards (buff/debuff) — on a 20×20 grid with enemies spawning from four edges. Each structure interacts with the economy, the difficulty modifier, and the progression phase.

Wave 6 stress-tested every structure in isolation and in combination.

420 new tests:

  • Placement validation: Every structure type tested on every valid tile type, every invalid tile type, and every edge case (adjacent to spawn, adjacent to exit, on top of existing structure, on top of destroyed structure). 78 tests. Three false-positive placement rejections were discovered and fixed — ward placement near spawn tiles was being incorrectly blocked by a radius check that used grid distance instead of tile distance.
  • Damage and interaction: Each turret type tested against each enemy type at each upgrade level. Trap slow effects verified to stack correctly (diminishing returns, not additive). Barricade health pools tested against wave damage curves from Night 1 through Night 18. Ward buff radii confirmed to not overlap in unintended ways. 156 tests.
  • Economy drain: Building costs verified against copper budget at every difficulty tier. Upgrade costs scale with phase — a Phase 1 turret upgrade costs 40 copper, Phase 2 costs 65. 42 tests confirmed the scaling tables match the design spec exactly.
  • Wave survival: Full night simulations from wave 1 through wave 18 at all three difficulty levels with various defense configurations. 88 tests verified that a competent layout survives Normal difficulty with resources to spare, that Easy provides meaningful breathing room, and that Insane requires optimal placement. The factory ran each simulation ten times to confirm determinism.
  • Structure persistence: 56 tests round-tripped defense grid state through save/load, phase transitions, and game-over/retry cycles. The grid rebuilds identically every time.

Screenshot expansion here was substantial. Defense grids with different structure configurations, wave progression overlays, resource drain visualizations, and the between-shifts repair screen. 144 new captures brought the total to 655.

Tests: 4,585 → 5,005 | Screenshots: 511 → 655

The World Entry Bug

Screenshot 512 caught it.

During Wave 6’s screenshot expansion, the automated capture system was documenting defense grid states when it hit a transition frame that should not exist: a single frame of the Abandoned Mine Shaft dungeon rendered behind the defense grid overlay. One frame. Visible for 16 milliseconds. Invisible to any human playtester.

The bug: when transitioning from day phase (dungeon) to night phase (defense), the world entry system was rendering one frame of the previous scene before clearing the buffer. The defense grid loaded correctly on frame 2, but frame 1 contained a ghost of the dungeon. At 60fps, no human eye would catch it. The screenshot system, capturing at deterministic intervals, caught it exactly once in 512 attempts.

The fix was two lines in the world entry transition handler. Clear the render buffer before loading the new scene, not after. The bug had been present since devlog 01 — through every dungeon, every defense night, every zone transition. Four thousand tests missed it because they tested state, not render frames. Screenshot 512 found it because screenshots test what the player sees.

After the fix, the factory re-ran every transition screenshot. Zero ghost frames across 200 captures.

Wave 7 — State Gap Closure (5,005 → 6,808 tests)

Waves 4, 5, and 6 targeted specific systems. Wave 7 was different. Wave 7 asked: what haven’t we tested?

The factory ran a gap analysis across the entire test suite, mapping every public function, every state transition, every user-facing interaction to its corresponding test coverage. The gaps were not catastrophic — the previous waves had been thorough — but they were real.

1,803 new tests closed them across three sub-waves:

Sub-wave 7a — Quest and progression (5,005 → 5,548)

543 tests targeting the quest log, skill trees, and phase progression:

  • Quest state machine: Every quest has a state chain (available → active → complete/failed). 134 tests verified state transitions for all quests across all three phases, including edge cases: abandoning a quest mid-objective, completing objectives out of order, and quest state after game-over/retry.
  • Skill tree validation: 24 nodes per character, 3 branches, phase-gated unlocks. 167 tests confirmed every node activates correctly, every prerequisite chain holds, every phase gate blocks appropriately, and respec (if available) resets cleanly.
  • Phase transitions: Moving from Phase 1 to Phase 2 unlocks new zones, new shop items, new narrators, and new difficulty curves. 128 tests verified that every phase gate opens exactly when it should and that nothing from later phases leaks into earlier ones.
  • Equipment and inventory: 99 items in the shop, 66 crafting recipes, 4 quality tiers. 114 tests covered equip/unequip, inventory overflow, recipe prerequisites, and quality tier interactions with combat stats.

Screenshots: 655 → 758 (103 new captures documenting quest UI states, skill tree layouts, phase transition screens, and inventory edge cases).

Sub-wave 7b — Combat edge cases (5,548 → 6,021)

473 tests targeting turn-based combat mechanics that earlier waves tested at the system level but not at the interaction level:

  • Status effect stacking: 12 status effects, some stackable, some mutually exclusive. 89 tests verified every combination of two concurrent status effects and confirmed the priority system resolves conflicts correctly.
  • Boss phase interactions: Three dungeon bosses and one night boss per phase, each with multiple phases. 112 tests covered phase transition triggers, health thresholds, immunity windows, and the interaction between boss mechanics and party abilities.
  • Party composition edge cases: What happens with a solo manager vs. a full four-member party? How do companion abilities interact when two companions have conflicting buffs? 134 tests answered these questions across every valid party configuration.
  • Damage calculation precision: Seven damage types, resistance values, critical multipliers, equipment modifiers, status effect multipliers. 138 tests verified the damage formula produces correct results for every combination — no floating-point drift, no off-by-one in resistance reduction, no edge cases where damage wraps to negative.

Screenshots: 758 → 850 (92 new captures showing combat interactions, boss phase transitions, status effect overlays, and party formation screens).

Sub-wave 7c — Save/load and state integrity (6,021 → 6,808)

787 tests — the largest single sub-wave — targeting the save/load system and global state coherence:

  • Save point coverage: A save file must capture everything: party state, inventory, quest progress, skill trees, defense grid, narrator position, phase, zone, time of day, difficulty, and cumulative statistics. 234 tests saved and loaded at every meaningful game state and verified bitwise consistency.
  • Cross-system coherence: After loading a save, do all systems agree on the game state? 198 tests verified that the quest log, narrator system, shop inventory, defense grid, and combat state all reflect the same point in time. No system reads stale data.
  • Corruption resilience: What happens if a save file is truncated, partially overwritten, or missing a section? 156 tests confirmed graceful failure: the game detects corruption, refuses to load, and presents a clear error message. No crashes, no undefined behavior.
  • Statistics accuracy: The game tracks cumulative stats (total copper earned, enemies defeated, structures built, nights survived). 199 tests verified that stats survive save/load, phase transitions, and game-over/retry without drift. The stat counter at the end of a playthrough matches the sum of individual events.

Screenshots: 850 → 1,002 (152 new captures documenting save/load UI, statistics screens, error states, and cross-system state verification).

Tests: 5,005 → 6,808 | Screenshots: 655 → 1,002

The Numbers

Metric Devlog 04 Devlog 05 Delta
Automated tests 4,047 6,808 +2,761
Screenshots 307 1,002 +695
Test failures 0 0 0
Bugs found 1 (world entry)
Bugs remaining 0 0 0
Narrator assertions ~200 621 +421
Structure placement tests 78
Save/load round-trips ~50 837 +787
Damage formula tests 138
Game status qa_pass itch_ready promoted

The Itch-Ready Badge

After Wave 7 completed with zero failures, the factory ran the full suite one final time. 6,808 tests. 1,002 screenshots. Every narrator line verified. Every night wave stress-tested. Every building placement validated. Every save file round-tripped. Every damage formula confirmed. Every quest state machine exercised. One world entry bug found and fixed.

The promotion criteria for itch_ready are not subjective:

  • Zero test failures across the full suite — confirmed
  • Screenshot coverage across every user-facing screen — 1,002 captures covering combat, defense, crafting, narrators, UI, menus, phase transitions, save/load, and error states
  • No known bugs — the world entry fix was the only bug discovered, and it shipped in the same wave that caught it
  • Store page readiness — drafted and audited in devlog 04, still current
  • UX audit clear — completed in devlog 04, no regressions introduced by QA expansion
  • Wages and Mages is now itch_ready. It joins Chronostone, Dreadnought, and CAGE-9001 in the launch queue. Four games waiting for storefront deployment. Four games that earned their badges through automated evidence, not calendar deadlines.

    W.A.G.E-9999 would call this a successful quarterly close. M.A.G.E-0001 would say the prophecy is unfolding on schedule.

    The factory just calls it ready.

    What Comes Next

    The itch_ready badge means the game is approved for public release on itch.io. What happens between now and the storefront listing:

    • Canonical itch.io URL assigned by the operator
    • Storefront page built from the existing store page draft
    • Launch announcement post on x00f.com
    • Promotion to released status once the itch.io page is live and accessible

    The game has 6,808 tests watching every system. When external players find the bugs that only appear when someone plays the game in a way the factory did not anticipate, the test suite is ready to absorb them.

    The Dark Factory builds what it can measure. Wages and Mages measured everything. Nearly seven thousand times.

    // This devlog is about

    Wages and Mages

    RPG / Tower Defense / Base Builder Launch Queue
    View Game → Launch Link Pending

    // Leave a Response

    Required fields are marked *