Skip to main content

Command Palette

Search for a command to run...

Multiplayer math game I built in 2013

Updated

Back in 2013, I tried to reinvent how kids learn math by building a competitive online multiplayer game. I tested it in a real classroom with 20 students. Here’s how it went.

The idea

I believed that competition would motivate students. Kids who normally weren’t paying attention in class would be more eager to learn math when it was used in a competitive game. I borrowed ideas from Counter-Strike: teams, flag capturing and scoreboards. Then I used them for math learning.

The implementation

I forked BrowserQuest, an open-source game built by Mozilla. I replaced sword fights with math battles: both players saw the same question, like 10×3, and the first player to answer correctly dealt damage. The battle ended when one player ran out of health.

I divided players into red and blue teams, added a lobby, respawning, a minimap, scoreboards, and a custom map. I even built chat functionality to make it more engaging.

The tech stack

The game was built with Node.js v0.8, WebSockets and Canvas API.

The multiplayer aspect was the biggest challenge. Latency and async messaging meant that each player saw the game events differently. Since there wasn’t a centralized, authoritative server for the game logic, the server had to reconcile conflicting client messages into a shared state. You never knew which message to trust.

The classroom test

I ran the experiment at an elementary school in Turku, Finland, with 7-year old students. The students were split into two groups: a group who played the game and a control group.

Students played the game very differently than I expected: weaker students often gave up during math battles. They just did nothing and waited to lose. Because the question refreshed for both players as soon as one answered, slower students realized they had no chance and simply stopped trying.

A lot of features went unused. Minimap, chat, leveling up, bots had no use. 7-year-olds didn’t really understand flag capture and didn’t coordinate attacks in a team.

I had spent weeks, even months, building features that had no value. Something much simpler would’ve been better for learning and faster to build.

The results

The group that played the game improved their quiz result by 56%. The control group, sitting in a regular math class, improved by 87%.

Regular math class was significantly more effective than my game.

What I learned

I still think the project was cool, and there’s something respectable about committing to a crazy idea. But I should have simplified a lot.

The core idea was way too stressful. Forced competition isn’t motivation since half of the class is below average. Everyone needs to learn at their own pace.

Why it still matters

Y Combinator’s guide How to get startup ideas has a concept that fits perfectly here. It warns about “solutions in search of problems”. Taking an idea that worked, but building it for another purpose. X but for Y.

That’s exactly what I built: Counter-Strike but for math. I was so busy solving technical problems that I never stopped to ask if I was solving the real problem — learning math. Since then, I’ve learned to start from the problem.