Smartphones as Game Controllers

Smartphone controlling a helicopter

What is the best way to get multiple people playing a game on a big shared screen?

Using your smartphone as a controller is a really neat way to do this. Everyone has their own controller, supporting any number of players. Smartphones have touchscreens, accelerometers, even cameras if you wanted each player to take an avatar photo (I didn’t do that).

Back in 2013 I made this prototype to test the concept. Wow! It worked really well, the hardest part was designing a fun game that was quick to pick up.

Players could quickly figure things out by just going to the web address, which would immediately let them see a new helicopter on screen representing them (I even added a little “android” or “apple” pilot inside to make it clearer who was connected).

Another great thing with individual smartphones as controllers is you can give each person a mini tutorial on their own screen, showing controls letting them click through instructions at their own pace.

Now, how to make the game as fun as possible? I knew early on that holding the smartphone sideways as a controller would give me two joystick inputs, without forcing the player to look down at their screen much. So - one joystick controls movement, the other should control something fun, so… grapple hooks?

Using a physics engine was getting to be practical in the browser thanks to libraries like Box2D. It also game a natural incentive to get more players involved and working together, since more players = more phyical power to move things and progress. The players could control a simple circle - styled as a helicopter - and save people trapped under rocks (coloured rectangles). Using simple geometric shapes helps make the game legible at a distance and thankfully easier to program.

Adding the grapple hooks was much more complicated, requiring multiple segments connected to a “hook” which would attach to the rocks or people. After quite a bit of tweaking I got it to the point where it was a fun mechanic but not too difficult for a new player to use.

What else was complicated? The networking had to be fairly complex to handle people disconnecting and still controlling the same character if they reloaded the page. But overall thanks to libraries like Socket.io it was robust enough to handle low latency for many players at a time.

Now to reward the players for their score! When saving a person you would get a point, which would result in a “fancier” helicopter design at various score thresholds, with slightly more power to move around. This was useful for moving the larger stone rocks, some of which required 4 players to all pull in one direction with their grapple hooks.

Demo Video