Explanation: Nowadays, getting children (and adults!) to play “educational games” can be hard to nearly impossible. That’s where Math Battle comes in. Originally created at Local Hack Day 2015 @ General Assembly (winning “Best UI Design” in the process) and winner of the 2015 Congressional App Challenge, Math Battle is an iOS game where two players play on the same screen and go head-to-head in a battle of intellect attempting to solve procedurally generating, math-based puzzles faster than the other player. In addition, and perhaps most importantly, the competitive aspect of the game makes it fun and engrossing yet educational for players of all ages.
Users can either play Math Battle locally on the same phone using a split-screen form of the game or compete in “ranked battles” via an online multiplayer mode. Battles consist of players competing to solve five procedurally generated puzzles faster than the other player. To do so, they are given a random set of nine “number tiles” and a target number. Players must use *all* nine number tiles in order to come up with a math equation that, when evaluated, results in the target number. A player wins the battle when they have solved five puzzles faster than the other player or, after two minutes, the player with the highest number of solved puzzles wins.
The game’s shining component is its procedural puzzle generation system. Every time you play, a new puzzle is generated with a guaranteed solution. This allows for massive replayability, so you can challenge your enemies (and your math teachers, of course) to a Math Battle as many times as you want and still get new puzzles every time.
Math Battle was created using Swift and Objective-C, two languages used for iOS development. In addition, the open-source game engine cocos2d-objc was used. I designed and created all of the artwork myself using a combination of Adobe Illustrator and Sketch. I also used Mixpanel, a data analytics platform that sends “data points” to a server based on user interaction and usage patterns, allowing me to analyze how players are using the game so I can tailor the game as more users begin to play the game. The most important technological implementation for this project was the use of Firebase to create a backend that would allow for multiplayer matches against other players. Since this game was created with accessibility in mind, it was important for me to make sure that players could easily compete and improve their math skills against other users no matter where they were. In addition, the backend allowed me to create an ELO ranking system (where players move up in ranking when they win against other players), which further incentives players and students to improve their quick thinking skills in order to climb up the leaderboards.
Inspiration: My experience competing on my high school’s Math Team played a heavy influence in the creation of this app. We compete several times throughout the school year against high schools across the country. However, most of the problems we’re given are designed for those with a background in at least Algebra II, and I wanted to create something similar that would make math competitions more accessible, particularly for those at a younger age. Since Math Battle allows two players to compete against each other in a wide range of ways (whether locally on the same screen or through online multiplayer), it provides numerous opportunities for players to play against their friends and creates a competitive environment that motivates players to improve their math and quick thinking skills in the process.
In the end, Math Battle was built primarily on a desire to help and educate students, and the prospect of using my knowledge of computer science to educate and potentially help others around the world motivates me to continue developing my understanding of computer science. I believe that the best way to learn something is to make it fun and engaging, and I believe that Math Battle achieves both the goal of providing enjoyment to students through its competitive nature while motivating players to improve their quick thinking skills to rise to the top of the leaderboards.
Finally, over the past few years, I’ve come to realize how many people have made sacrifices so I can get to where I am now. That’s why I spend most, if not all, of my free time trying to learn as much about Computer Science as I can, going to hackathons, and working on projects such as Math Battle. I’ve realized that I, as a young developer, have an obligation to take advantage of all the opportunities that life has given me to learn as much as I can and then use that knowledge to give back to those communities who have given so much to me.