Snake —
Embedded C
A full-featured multiplayer Snake written in C for an embedded target — game loop, collision, persistent high scores — built by a team I led in MSE 152.
Overview
Snake sounds simple until you build it properly on an embedded target: fixed memory, real-time input, and no OS to catch you. Our version shipped with multiplayer, level progression, delta-time ticks and persistent high scores — and I was responsible for both the hardest code and the team that built the rest.
Leading the team
I served as team lead and primary contributor — which meant owning the architecture, splitting the work into pieces teammates could run with, and keeping the codebase healthy while we all committed to it.
Owning the core
Implemented the game loop, collision detection, level progression and delta-time tick control — the spine everything else plugged into.
Delegating & unblocking
Split features into clean interfaces — screens, scoring, storage — so teammates could build in parallel against the core without collisions.
Git discipline
Ran the same professional workflow as a software team: feature branches, pull-request reviews and shared code standards on every merge.
Engineering highlights
Input-queue buffer
Designed a queue that eliminates dropped keystrokes and enables smooth multi-key sequences — fast direction changes register exactly as entered.
Multiplayer with independent state
Built a multiplayer system with independent lives and per-player score tracking running in the same fixed-tick loop.
Persistent high scores
Co-developed a high-score system that serializes scores to non-volatile storage, surviving power cycles on the embedded target.
Live-state screens
Dynamic pause, start and game-over screens rendered directly from live game state — no separate UI state machine to fall out of sync.