Two teams of two players race to complete pies faster than their opponents. Players wear chef hats fitted with motion-capture markers that track their position in a physical kitchen space. Real cooking stations — complete with Arduino-powered cutting boards, frying pans, and ovens — translate physical actions into in-game progress. The goal: total immersion, where the line between physical and digital cooking blurs.
Team
EllaProject Manager / UX / UI
SloaneArt Director / Graphic Design & Type
Crystal2D Art / Animation
Patrice3D Art / Animation
HelenaSoftware / Motion Capture
SandhyaFabrication
SebastianHardware / Electrical Engineer
WillMusic
My Contributions
This case study focuses on the technical architecture I designed and implemented. The technical design was done collaboratively with Crystal Hicks, while all coding was completed by me. I also created shader systems for the game, documented separately:
Toon Shader — Stylized cel-shaded rendering for kitten characters
02 / Architecture
Technical Architecture
Mr. Meow’s Kitchen is built using a modular, event-driven architecture centered around singleton managers and inheritance hierarchies. The system emphasizes loose coupling between components, allowing us to iterate quickly and support complex multi-team gameplay with physical hardware integration.
Rather than tightly coupling systems through direct references, we use C# events/delegates extensively. For example, ArduinoManager broadcasts OnStrengthReceived, OnStirButtonPressed, OnTemperatureReceived, while CookingStep emits OnStepCompleted and OnStateChanged. GameManager fires OnTeamWon and OnMatchStateChanged.
This pattern means a cooking step doesn’t need to know about UI, audio, or recipe tracking — it just announces when it’s completed and interested systems respond. This made adding features like audio feedback or progress bars simple; we just subscribed new listeners to existing events. This was a huge factor in our success during a rushed production time period of around 8 weeks.
Inheritance for modularity
We built reusable base classes that capture common patterns:
TriggerStation (abstract base)
All station types inherit from this. Handles player detection, team checking, collision logic.
All minigames inherit from this. Manages ingredient delivery, Arduino action tracking, state machine, timers.
Subclasses: CuttingStep, FryPanStep, OvenStep
This meant we could implement the frying pan minigame by writing ~100 lines specific to stirring logic, while inheriting all the state management, ingredient handling, and Arduino integration for free.
Data-driven design with ScriptableObjects
IngredientData ScriptableObjects define:
Which cooking step an ingredient targets
Prefab references and hold positions/rotations/scales
UI sprites (filled vs empty states)
Recipe chain relationships (which step to cascade-reset from)
This allows for easy configuration of ingredient behavior without touching code. As we playtested the game and made changes, it simplified the process of making minor tweaks that had major positive effects on gameplay.
03 / Playtesting
Design Pivots: From Playtest to Polish
Sprint 4 playtest: the turning point
Our first major playtest revealed that while the core concept was fun, the execution had serious issues. Player feedback clustered around two main themes: clarity and pacing. Here are the critical design changes that resulted.
Pivot 01 · Clarity
Players didn't know what was happening
Confusion about game state, ingredient requirements, and what to do next. We addressed this through several interconnected changes.
Spread out the stations
Before
All three cooking stations overlapping within kitchen space.
After
Stations moved to separate parts of the kitchenette.
Impact: When stations were overlapping, players weren’t sure which stations they were activating and didn’t know how to get their ingredients to the right place. Spreading them out clarified the different steps and made each station feel like a distinct destination.
Clearer progress indicators
Before
Generic star icons marked completion.
After
Station-specific icons (knife, pan, oven) show which steps are complete.
Impact: Stars were ambiguous; players couldn’t quickly glance to see if they’d chopped, fried, or baked yet. Station icons became an instant visual language.
Simplify ingredients
Before
Each ingredient had separate “chopped” states.
After
Chopping station outputs one universal “bowl of chopped ingredients”.
Impact: Visual clutter reduction. Players don’t care that the onion became “chopped onion”; they care that they’ve completed the chopping step.
Pivot 02 · Speed Up
The game felt too calm
The game lacked urgency and tension. Players described it as “relaxing” when we wanted “frantic chaos.” We needed to inject speed and consequence.
Make minigames harder — add failure states
Before
Chopping: Hit button 10 times, no failure.
Frying: Stir for a few seconds, step completes.
After
Constantly decaying progress bar for both stations. If bar hits zero, step fails, ingredient is lost.
Impact: Transformed minigames from rote actions into skill-based challenges. Physical effort intensity now directly correlates to success.
Speed up visual feedback
Before
Ingredients had slow, gentle bounce animations.
After
Faster bounces + ingredients shrink over time (15-second despawn timer).
Impact: Visual urgency cues. Seeing ingredients shrink creates time pressure that makes the game much more exciting.
Design philosophy shift
These pivots collectively moved us closer to our goal: a physical execution game where challenge came from speed, coordination, and not messing up under pressure. Much closer to our Overcooked inspiration.
04 / Reflection
Reflections
Overall, this is my most complex and challenging project to date. I challenged myself at the beginning to not only learn new ways to connect different interfaces together, but also to not shy away from creating complicated, robust systems in code rather than going for the simple, band-aid-on-a-bullet-hole solution. I also picked up a lot of new and interesting fabrication skills and techniques along the way, many of which I want to continue to explore — soldering, wood fabrication, and more.
This project also reflects my interest in creating usable systems. I wanted to build early and build well; I finished the main game system by week 3. I created lots of helper functions and exposed a lot of parameters because I knew we would want to tweak as we went along, and I learned a lot about creating tools that are useful for people who aren’t as comfortable with code.
Finally, I love the total immersion of this project. Using your body as a controller, using a physical kitchen, and connecting to a digital experience all at once really brings people all in on the fun, silly, and competitive spirit of the game.
Future expansion
To expand on this project in the future, I’d like to:
Repaint the physical kitchens to match the game aesthetic to add to the immersion
Utilize OSC output from the game to the immersive lab lights so the room itself reacts to the gameplay
Build a marker system for the trigger areas and the kitchenette so the scene creates itself based on motion-capture marker positions