Everybody Lies

The Day I Stopped Saving Everything

By Joey Bess··3 min read·
Pivot

When I started building Everybody Lies, I had a very tidy idea in my head.

Every town would be made by AI. Every citizen would have a secret. Every crime would feel a little different. The game would be mobile-first, with an investigation board and enough atmosphere that you could poke around a strange town while drinking coffee.

That was the dream, anyway.

The first version was supposed to stay fairly small: the main game loop, the investigation board, and everything stored locally on the phone or computer. “Local” just means it lives in your browser, not on some big account system in the sky. For someone like me, with no coding background, that sounded simpler and safer.

Then I got excited.

The citizens started as simple stylized monogram avatars. Initials, basically. Clean and lightweight. But then I saw that I could generate unique images for each town. Suddenly the game had more mood. A place didn’t just have a name anymore; it had a look.

Then I added unique AI voices for the citizens. Then autoplay, so the voice would start as part of the scene. Then, of course, the browser had opinions about that too, because browsers often block sound from playing automatically unless the user has interacted first.

So there I was, trying to make an atmospheric mystery game, and the computer was saying, “No, you may not have sound.”

We worked around that with an audio unlock approach and a shared audio player. I will not pretend I understood every moving part. I understood the rough idea: get permission from the browser in the right way, then reuse one audio thing instead of creating chaos.

That felt like a win.

But the bigger direction change came from a different problem: storage.

The app started hitting a local storage quota. In plain English, I was trying to save too much stuff in the browser. The beautiful generated images were the problem. Or at least a big part of it. They were being saved as bulky image data, and the browser eventually said, “That’s enough.”

This was one of those moments where my non-technical brain wanted to bargain with reality.

Can’t we just save it anyway?

Can’t the browser be a little more generous?

Can’t this all just work because I like it?

Apparently not.

The direction changed there. I had to stop thinking, “Save everything.” Instead, the app needed to save only what really mattered for the game to continue. The fix was to strip out the heavy image data before persisting the town.

“Persisting” is one of those words I would not have used a year ago. It just means keeping the information around after you close or refresh the app.

That change stung a little because I liked the idea of the game remembering every rich detail exactly as created. It felt more magical. But magic gets expensive fast, even when the expense is not money. Sometimes the cost is memory, storage, speed, or reliability.

And reliability matters more than a fancy extra.

That one bug made the project grow up a bit. It forced me to ask a better question: what is essential to the mystery, and what is decoration?

A town name matters. Citizens matter. Secrets matter. The crime matters. The investigation board matters. The feeling matters too, but not every generated asset deserves to be carried around forever like a family heirloom.

I still want the game to feel alive. I still want towns to have personality, and citizens to feel distinct. But I learned that “AI can generate anything” is not the same as “the app should keep everything.”

That is a very 50-year-old lesson, actually. Closets, garages, email inboxes, browser storage — eventually they all teach the same thing.

You cannot keep everything and still move smoothly.

Small takeaway: sometimes the feature you drop is what lets the rest of the thing survive.