← Creative Embedded Systems

Module 2 Misalignment

COMS BC3930 · Fall 2026 · Prof. Tiffany Tseng

A two-player game where one person steers and the other fixes the controls.

Inspiration and Motivation

The idea came from a VR experiment I participated in during my internship at the University of Tokyo. Two participants were given different amounts of control over the X and Y movement of a point without being told the weights. Sometimes one person controlled only X while the other controlled Y. We had to move the point to a target while figuring out what each of us could actually do.

I also took inspiration from Keep Talking and Nobody Explodes, where talking to the other player is a crucial part of the game. In real life, we often have to work with others, but what we see and feel is almost always not what others see and feel. I wanted to build something to convey that even a small misalignment in perception can make a task much harder, and that communication is key to overcoming it.

I wanted to make a cooperative game where two people control different parts of the same movement. One person uses a joystick to move through a maze, and the other turns a potentiometer to calibrate the joystick’s direction. I also believe that cooperative games are most fun when you need each other to win, but can accidentally mess each other up. It is like playing Mario with someone and accidentally throwing them off a platform. In this game, the calibrator can help the navigator, make things worse by accident, or sabotage them for fun.

Prototype on Laptop

I started with a simple version on my laptop. The navigator used WASD, and the other player calibrated the control with the cursor’s horizontal position to get to the target in an open space.

Then I realized the game was too easy since the navigator could just hold one direction while the calibrator adjusted it so the character moved toward the target. This way, the players could clear it without communicating what was wrong with the controls. I tried giving a penalty when the navigator did not change direction, but it was not enough to stop them from cheating.

Thus, I changed the open space into a maze so that the navigator has to continuously change the direction and a small error in the calibration can send the character into a wall. I also implemented a system where hitting a wall takes HP and knocks the character back. The first paths were so narrow that it was too easy to hit the walls, so I doubled their width which made it possible to recover from a mistake while still needing the calibrator to pay attention.

Connecting with the Physical System

After the main game worked, I added the rocket, sound effects, a better knockback animation, HP, and a leaderboard with the help of Gemini 3.8 at high effort. I also realized that the calibrator can get bored once they get the calibration correct, so I made the hidden rotation change during a round so the players have to recalibrate.

Then I connected the joystick, potentiometer, and button to the ESP32 and sent their readings to Processing. I realized I also had an LED on the breadboard, so I made it flash when the rocket hits a wall to add physical feedback. I achieved this by sending a signal from Processing back to the ESP32.

Progress videos

First iteration without a maze

The open field made it too easy to reach the target without much communication.

Wall collision bug

After I added the maze, I found that the rocket could go through a wall.

Working prototype

By this version, I could play through the maze without going through the walls.

Polished version

I kept building on the working version with scoring, effects, and a clearer finish screen.

Demo during class

Here is the game running with the ESP32 controls during our class demo.

Read the technical documentation.