ESP32 Interactive GameBoy

Project Overview

Our project is a Game Boy–inspired handheld gaming system built using an ESP32 microcontroller that runs classic games like Snake and Tetris while allowing an audience to interact with the game through a web browser.

The device runs the games locally in C++ on the ESP32, and also hosts a lightweight web interface built with HTML, CSS, and vanilla JavaScript. Audience members can connect to the device from their phones and interact with the Snake game or watch the gameplay in real time.

We also built a wireless controller using ESP-NOW, a low-latency peer-to-peer protocol designed for ESP devices. This controller communicates directly with the ESP32 to provide responsive input for gameplay without relying on traditional WiFi connections.


What the Project Does

The system turns a simple handheld gaming console into an interactive shared experience.

The ESP32 runs two retro games:

Snake (Interactive Mode)
Audience members connect to a webpage hosted on the device and send commands that control the snake in real time.

Tetris (Spectator Mode)
The game runs locally while users can watch the gameplay through the web interface.

Players can control the games using the wireless ESP-NOW remote, while the audience interacts through their phones, creating a mix of direct gameplay and audience participation.


Theme

This project fits into the theme of Interactive Embedded Systems and Connected Devices.

It demonstrates how embedded hardware can power not only local applications but also networked experiences that allow multiple users to interact with a physical device in real time.

By combining microcontrollers, wireless communication, and web technologies, the system bridges the gap between embedded systems and user-facing applications.


Design Idea

The core idea behind the design was to explore how far we could push a single microcontroller platform to handle multiple roles simultaneously.

The ESP32 acts as:

  • a game console
  • a web server
  • a wireless receiver for the remote controller
  • a networked device that multiple users can interact with

We designed the games in C++ to ensure performance on constrained hardware, while the web interface was intentionally kept simple using vanilla HTML, CSS, and JavaScript so it could be served directly from the microcontroller.

One challenge we encountered was handling many simultaneous web connections. When many users connected directly to the ESP32 WiFi access point, networking overhead began slowing the system down. To address this, we allowed users to connect through a laptop hotspot, reducing the networking load on the microcontroller while keeping the experience interactive.

The result is a system that demonstrates how embedded devices can host interactive experiences for entire audiences, transforming a simple retro console into a shared multiplayer platform powered by a microcontroller.

Share this project:

Updates