A state machine with feelings

Before writing any code, I mapped out the core game loop. Years of building state machines for promo systems at work made this part feel natural. A Tamagotchi is basically a state machine with feelings.

The pet has three core stats: hunger (0–100, increases over time), happiness (0–100, decreases over time), and dirty (0–100, increases over time). Health is derived from all three. Every few minutes, the needs tick up automatically. If hunger stays above 80 for too long, the pet gets sick. If happiness drops below 20, it gets sad. Neglect it long enough and… well. It's a Tamagotchi.

Three buttons, three actions

The control scheme is deliberately simple. Three buttons (Left, OK, Right) map to three core actions: Feed (hunger −30), Play (happiness +20), and Clean (dirty −30).

There's something satisfying about designing within tight constraints. With only three inputs, every interaction has to be intentional. No nested menus, no scrolling through options. You see your pet is hungry, you press Feed. Done. The simplicity is the point.

Evolution

Pet evolution stages
Pet evolution stages: Baby, Teen, and Adult forms

The pet evolves based on how well you take care of it. Baby stage from day 0–1, Teen from day 1–3, Adult from day 3 onward. Good care leads to a cute evolution path. Bad care leads to a less cute one. This gives players a reason to actually pay attention.

I'm planning four UI screens: the main screen showing the pet with animated sprites and stat bars, a menu for Feed / Play / Clean / Stats, a mini-game for the Play action (maybe a rhythm game using the three buttons), and a death screen that hopefully you won't see often.

What's next

The game design feels solid on paper. Now comes the part I've been waiting for, and slightly dreading. The hardware arrives soon, and the first thing I need to do is solder pin headers onto the board. I've never soldered anything in my life.

The next article will cover wiring everything up on the breadboard, getting "Hello World" on the display, and the first moments of turning a pile of components into something that actually responds to input.