Messy Bedroom is a tower defense game turned completely upside down. You're the kid who refuses to clean up — and your toys have decided to put themselves away. Your job is to stop them: build towers out of your own building blocks, knock your stuffed animals off their path, and keep the room gloriously messy until the clock runs out.

Messy Bedroom — your toys are putting themselves away, and it's your job to stop them.

What inspired me

This started with the oldest standoff in the world: "clean your room." I wanted to flip that chore into a power fantasy — what if tidying up was the enemy, and staying messy was how you won? I've always loved tower defense, but I was tired of grim sci-fi and fantasy themes. I wanted something cozy, funny, and wholesome, where the "threat" is a parade of plush animals and the worst thing that happens is your floor gets clean.

The other spark was the hero. Since the game is built for Meta Horizon, your character is your own Meta Horizon avatar, dropped into the fiction as your favorite doll. You're not defending a castle from a distance — you're a toy down on the floor, right in the middle of the mess, scrambling to keep it that way.

The twist that makes it tick

The heart of the design is a single, shared pile of blocks that both sides fight over. Blocks cycle constantly: from the pile, into your arms, up into a tower, knocked loose onto the floor, and grabbed by whoever gets there first. Towers are literally built from those blocks — a tower's color decides its attack type and its height decides its range:

\( R = R_0 + k\,h \)

where \( h \) is the stack height. You don't win by wiping out the toys; you win by stalling. The Tidiness meter \( T \) just has to stay below a pass line \( T_{\text{pass}} \) until the day-timer (time till school, dinner, or bed) hits zero. And because the goal is messiness, the payout rewards chaos — the messier the room at the buzzer, the bigger your allowance:

$$ \text{Allowance} = A_{\max}\left(1 - \frac{T_{\text{final}}}{T_{\max}}\right) $$

How I built it

I treated this as a full pre-production project, not just an idea. I kept a living design bible as my single source of truth and built everything outward from one question — is the core loop actually fun? From there I wrote a complete Game Design Document, mapped the first-fifteen-minutes player journey beat by beat, and laid out a riskiest-first production plan with a clearly scoped MVP.

The loop itself is simple to say out loud:

each level = BUILD phase, then DEFEND phase

BUILD:   gather blocks -> stack towers (color = attack, height = range) -> shape the path
DEFEND:  toys wake and haul blocks toward the toy box
         towers fire; damaged towers spill their blocks back onto the floor
         you recover dropped blocks, repair towers, and spend sugar-fueled abilities
WIN:     keep Tidiness below the pass line until the day-timer reaches zero

For the look, I built a visual identity around "chunky, tactile toys" and "color = signal," then generated all of the concept art in Midjourney. The trick to keeping it cohesive was locking a single style reference and reusing it across every asset, so the cover, the cast, the bosses, the environments, and the UI all read like one game. I pulled it together into a visual concept package, key art, and a thumbnail.

What I learned

  • Fun first. It's tempting to pile on systems, but I learned to keep cutting back to the smallest thing that proves the loop, and only layer depth on top of a yes.
  • Readability is a feature. With a busy floor full of blocks and toys, color-as-signal and silhouette-first character design aren't polish — they're what makes the game playable at a glance.
  • The economy is the soul. One shared pile is what creates the tug-of-war; the moment both sides are fighting over the same blocks, the whole game comes alive.
  • Cohesion is a process. Getting a consistent art style out of a generator took discipline — one locked reference, reused everywhere — not just good prompts. ## The challenges I faced

The biggest was legibility: an inverted tower defense with a shared economy is a lot of moving parts, and keeping it clear on a phone screen drove almost every art and UI decision. Close behind was balancing the active avatar — making block recovery and tower repair feel clutch and heroic rather than like fiddly busywork.

I also had to fight to keep the game tense but never scary — the pressure had to come from the ticking clock, not from menace, which is why every threat is soft and plush. And during the art pass I hit a real fork: my renders drifted toward a soft pastel palette, gorgeous but at odds with my "bright = gameplay signal" rule. I resolved it by keeping the world in cozy pastels while pushing the playable block and tower colors a step more saturated, so signal still pops.

What's next

The plan is to gray box the core loop first and put it in front of players to validate the central bet — that a single "stall the toys" level is fun enough to replay — before layering in the full color system, the allowance economy, the day cycle, and the rest of the mess zones (Under the Bed, Pillow Fort, Laundry Mountain, and beyond). I'm building this riskiest-part-first, so if the heart of it is fun, everything else is just more room to make a mess.

Built With

Share this project:

Updates