Inspiration

 I kept noticing the same scene everywhere a sea of people glued to their phones, drifting past the fresh food and straight to the junk food and vending machines. I wanted to flip that into a game — what if you were a cafeteria worker fighting to feed them healthy food? Tower defense was the perfect fit, but the genre is crowded and almost always violent, so I challenged myself to make a tower defense game where you win by helping, not harming. The match-3 ammo idea came from a simple question: what if you had to earn every shot instead of just buying it?

What it does

 Cafeteria Crush is a tower defense where the tower is you — a cafeteria worker serving fresh fruit to phone-zombie students before they reach the junk-food vending machines. A served kid snaps out of the trance, smiles, and sits down to eat. When your fruit runs low, you dive into a unique two-phase match-3 puzzle to restock: every fruit you clear becomes ammo you serve. Between the lunch rush and the fridge, you plan your battlefield from an overhead view, place self-filling tables to form choke points, unlock and specialize 7 different fruit with distinct abilities (slow, freeze, buff, heavy/shield-break), and climb 13 levels — one per school grade, K through 12.

How we built it

 I built Cafeteria Crush in Meta Horizon Worlds desktop editor using its TypeScript scripting system in vs code with a lot of help from different Ai agents, GenAi, chatgpt, and meshy. I split the game across focused controllers — a TowerDefenseController for waves, students, and the economy, a CameraController for the overhead/action camera swaps, a dedicated input script for tap-to-serve aiming, and an event layer to keep them in sync. The match-3 supply side maps screen taps to board tiles using LocalCamera world-to-screen projection, and player progress (unlocks, upgrades, currency) persists through Horizon's Persistent Player Variables. I leaned on networked events so the local input scripts and the server-run game logic could cooperate cleanly.

Challenges we ran into

 Keeping two genres in balance — making the puzzle satisfying without letting it steal the spotlight from the tower defense. The HUD icons and noesis elements were also very tricky to navigate.

Accomplishments that we're proud of

 A genuinely novel genre blend where the two halves are economically codependent — the puzzle gives the defense stakes, and the defense gives the puzzle meaning. A self-evolving choke-point generator: served kids fill tables, so your own success physically reshapes the battlefield.

A warm, funny, non-violent reframe of tower defense that fits Meta Horizon's guidelines and is genuinely fun to watch and play. Getting tap-to-serve to feel good and forgiving on a phone, with a satisfying balloon-pop on every serve and every match in the match3 side.

What we learned

 In Horizon, where a script runs matters as much as what it does — local-only APIs like the camera forced us to design a clean local-input → networked-server architecture from the start.

Persistence is a system, not a setting — it has to be designed, declared, and timed deliberately. Players don't experience features, they experience rhythm — the calm/chaos/calm heartbeat of plan → serve → restock → upgrade did more for the fun than any single mechanic. A tight scope with a fully working core loop beats a long feature list that never quite connects.

What's next for Cafeteria Crush

  Boss students — a hall monitor or principal capping each map with a unique serving puzzle. an every-login escalating reward to bring players back multiple times a day. Power tiles in the puzzle (Combo Tray, Golden Tray, Cascade Crate) and more student archetypes (swarm, tank, shielded, stealth, the trench-coat "stacked" kid that splits into three). Cosmetics and leaderboards — fruit skins, worker outfits, and cafeteria themes, plus fair score competition thanks to the fixed wave structure.

Built With

Share this project:

Updates