Role Lead Programmer, Motion Capture Integration
Timeline 8 Weeks (Spring 2025)
Team Size 8 People
Course Next Level Arcade
UnityC#Qualisys Motion CaptureArduinoOSC ProtocolChataigneTouchDesigner

Project Trailer

01 / Concept

Core Concept

Mr. Meow's Kitchen start screen

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

Ella Project Manager / UX / UI
Sloane Art Director / Graphic Design & Type
Crystal 2D Art / Animation
Patrice 3D Art / Animation
Helena Software / Motion Capture
Sandhya Fabrication
Sebastian Hardware / Electrical Engineer
Will Music
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:

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.

Architectural Principles

Event-driven communication

┌─────────────┐
│   Arduino   │ (Physical sensors)
└──────┬──────┘
     │ Serial
┌──────▼──────┐
│  Chataigne  │ (OSC routing)
└──────┬──────┘
     │ OSC
┌──────▼──────────┐
│ ArduinoManager  │ (Receives OSC, broadcasts events)
└──────┬──────────┘
     │ Events (OnStrengthReceived, OnStirButtonPressed, etc.)
     ├────────┬────────┬────────┬────────┐
     ▼        ▼        ▼        ▼        ▼
CuttingStep  FryStep  OvenStep  StepUI  AudioManager

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.

Subclasses: StepStation, TrashStation, PresentStation, SkinSelectionStation, TeamFormationStation

CookingStep (abstract base)

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.

Kitchen gameplay with bouncing ingredients

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

Early playtest showing player confusion

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.

Improved character selection screen

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.

Close-up of stove UI with dial

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

Final game scene with all systems working together

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:

← Back to Games