3D(ish): A 2D game in 3D space


I made this game with Teresa Tian as our midterm project for physical computing class. It is essentially a simple 2D game where the user has to move an object in order to avoid the obstacles that come in its way. The only difference is that the object is in a three dimensional space and the user is given the top-view and the side-view of this space instead on one 3D view. Here’s how the screen looks:


So the black thing on the screen is the object that the users are controlling. They are looking at this object and the obstacles from the top view (on left) and side view (on right). The game play then is that users have to look at both the views simultaneously to figure out if they will hit the object or not. Its very addictive!

Concept Generation

The idea for this project came from the very idea of our physical computing class. Which is to read the energy changes created by the user and create interactivity. This got us interested in the idea of mapping the 3d world of the user in a 2d software. These are the initial sketches for the game:

The Remote

The ball on the screen can be moved up-down or left-right. The remote works through an accelerometer, so the user has to twist and turn the remote in order to make the ball move.

The Nitro Mode 

We thought a lot about speed control of the game. We play tested one version in which user had no control over speed, it starting slow and gradually increased the speed on its own. Much like Dyno by google. In another version we gave user an accelerator so that they can control the speed and earn more points at higher speeds. We found that the second version was much more engaging. So we kept that and took it even further. We changed the rules such that the user has to play in the Nitro mode to earn any points. If they take their hand off the Nitro, the start to loose points. Here is how our nitro button looked like:

Game play

  1. The game starts slow with score running in the negative. Negative 2 for every second played in slow mode.
  2. The users have to quickly get use to the unique game style of controlling a ball in 3D space with the help of 2D views.
  3. Once they are ready, they have to push the Nitro button and start earning positive points. Positive 1 for every second played in Nitro mode.
  4. The users constantly switches between Nitro and slow mode to avoid obstacles. They twist and turn the remote to move the ball front-back and top-bottom in the 3D space.

Making the game

First step was to check if the accelerometer gave right values we could work with


Next step was to design the game. We used p5.js to design the entire game. Final code with all the iterations could be found here:

Github link


Making the remote

3D printing the mount

Additional features

  1. A restart/new game button on the remote.
  2. LEDs to indicate game on – game over state

Here is the final video

Final product images