How zwkrl/heritage-plate works
IDEA2 Heritage Plate is a browser-based heritage cooking game. The player starts a session and follows dish-specific preparation, cooking, and serving challenges using keyboard inputs; the game tracks progress and score, then presents the result through canvas visuals and audio cues. Dish recipes and ingredient definitions drive the challenges, while the engine coordinates input, game state, rendering, and leaderboard persistence. An optional ESP32 button setup translates physical presses into keyboard events. The engine excerpt is partial, so stage links summarize documented game behavior rather than claiming every internal transition was inspected.
Main entry points: engine.js Game engine · main.js Browser bootstrap · render.js Canvas rendering · arcade_buttons_arduino.ino Button firmware
Components 17
Browser entry
- Browser bootstrap
vite-app/src/main.js - Browser canvas and HUD
vite-app/index.html
Cooking gameplay
- Game engine
vite-app/src/game/engine.js - Dish recipes
vite-app/src/game/data.js - Ingredient preparation
vite-app/src/game/engine.js - Cooking challenges
vite-app/src/game/engine.js - Plating and serving
vite-app/src/game/engine.js - Score and combos
vite-app/src/game/engine.js
Game presentation
- Canvas rendering
vite-app/src/game/render.js - Game assets
vite-app/public/assets - Sound cues
vite-app/src/game/audio.js
Input and state
- Local leaderboard
vite-app/src/game/engine.js - Button firmware
arduino/arcade_buttons_arduino.ino - Serial key bridge
arduino/buttons.py
Other components
- Player
- Physical buttons
- Keyboard events
Connections 17
- Player → Browser bootstrap: starts game
- Browser bootstrap → Browser canvas and HUD: binds UI
- Browser bootstrap → Game engine: creates game
- Game engine → Dish recipes: reads recipes
- Game engine → Ingredient preparation: runs stage
- Game engine → Cooking challenges: runs stage
- Game engine → Plating and serving: runs stage
- Game engine → Score and combos: updates score
- Game engine → Canvas rendering: draws state
- Game engine → Sound cues: plays cues
- Game engine → Local leaderboard: reads and writes
- Canvas rendering → Game assets: loads images
- Player → Keyboard events: presses keys
- Keyboard events → Game engine: dispatches events
- Physical buttons → Button firmware: presses buttons
- Button firmware → Serial key bridge: sends serial
- Serial key bridge → Keyboard events: emits key events