← All entries 3 Sep 2026

The Save File Was Lying to Me (0.7.1 — Save Data You Can Trust)

Remember how 0.7.0 ended with "a stack of save/load fixes so all of the above actually persists properly"? Turns out that sentence was aspirational.

I came back to Safe Zone after a break, did the responsible thing and ran a full code review before touching anything, and the review came back with a list. Not a catastrophic list — nothing was on fire — but enough that I spent this whole cycle just making sure the game remembers what actually happened, instead of confidently making something up.

The Two Invisible Characters That Broke Nine Buildings

The best bug this cycle, by a distance: nine building types were vanishing on load, and the save file looked completely fine. Scrolled through it, everything present, everything spelled right. Turns out several entries had a stray tab or trailing space baked into the type name, invisible in the inspector, fatal to an exact string match. MedicalClinicBuilding and MedicalClinicBuilding are not the same string, and Unity will absolutely not tell you that by looking at it.

Fixed the corrupted names, fixed a Cure Dispersal that was loading back as a Cure Lab (wrong prefab reference, whoops), and — more importantly — made the matcher whitespace-tolerant and added an actual loud error if a building ever fails to resolve again. Previously it just logged a warning nobody was going to read and told you "Game Loaded!" anyway. Silent data loss with a friendly green checkmark is not a vibe I want to ship again.

Everyone Was Going to the Cure Lab

This one I found by actually playing the game, which in hindsight should have been step one all along. Loaded a save, and every single survivor — I mean all of them — started walking toward the Cure Lab like it owed them something.

Turned out survivors never saved their job or home assignment at all. Every reload, all of them woke up unemployed and homeless, fell through the same "nothing to do" fallback logic, and since the Cure Lab happened to be sitting there partially damaged, they all decided to fix it. Simultaneously. Uncapped. It was less "bug" and more "impromptu union meeting."

Survivors now persist their workplace, home, and current state properly, buildings rebuild their worker counts from who's actually still assigned instead of trusting a stale saved number, and — because apparently thirty people can dogpile one wall if you let them — repair jobs now have a sane cap per building, the same way construction already did.

Magenta Is Not a Building Material

Reloaded buildings started rendering half the map in Unity's classic "I don't know what color this is supposed to be" magenta. The debug color table just hadn't been updated since roughly Phase 3, so every building type added since then had nowhere to look up a color and got the error default instead. Gave it a proper palette — cold steel for defense structures, clean teal-to-white for the cure chain, warning tones for the trap types — so a loaded base actually reads as the base you built, not a fever dream.

The World Kept Forgetting the Weather

Last one: load a storm, get clear skies. Load it again, get rain. The weather was being saved correctly the whole time — the problem was the world re-rolling it fresh on every scene load regardless, stomping the restored value before you ever saw it. Season had the exact same problem, just harder to notice because most of my test saves happened to be sitting in Spring already.

Both are now save-aware: if there's a restore in progress, the random roll politely steps aside instead of clobbering it, and the visuals actually re-sync to the restored weather instead of whatever the dice said a frame earlier.

Where Things Stand

Nothing here is a new feature. It's the unglamorous kind of release where the actual achievement is "the game now remembers what you did to it," which doesn't scream out of a changelog but matters every single time someone hits load. Ran this whole audit with Claude Code doing the actual archaeology — reading save files, tracing event chains, telling me plainly when something couldn't be verified without me clicking the Unity Editor myself. Worked well as a division of labor: it's good at finding the exact line where two systems disagree, I'm good at noticing "hang on, why is everyone standing at the Cure Lab."

Open City's still cooking in the background too. More soon. Probably — I say that every time and then I go fix whitespace bugs for two weeks instead.