Math Games

Inspiration

Growing up, the best moments in maths lessons were the fun games: the timed races, the number puzzles, the "how far can you get?" challenges. But those games never grew up. Maths apps for adults are either dry drill sheets or kids' apps with cartoon mascots. We wanted the feeling of those classroom games in a modern, polished game UI, built for adults who still enjoy a good mental workout.

What it does

Math Games has four game modes, each testing your head in a different way:

  • Race: a 60-second sprint. Answer as many questions as you can against a bot, a friend's score, or your own ghost. Beat the bots to climb from Rookie through Amateur and Pro, and unlock Elite.
  • Math Grids: a crossword-style maths puzzle. Fill the grid so every row and column works out, with the board growing as difficulty rises.
  • Countdown: an endless survival mode. Keep solving questions and see how far you can go before you slip.
  • Puzzles: solve for X. Algebra and shapes push you to work out unknown values.

Around the games:

  • Stats: trend charts per game, filtered by difficulty so you can see real progress, plus accuracy by operation and an activity calendar.
  • Streaks and challenges: keep a daily streak going and send challenges to friends.
  • Pro: turns the app into a custom learning experience. You build your own races, choosing which operations to practise and at what difficulty. Pro also gives free hints and solutions in Math Grids and Puzzles.
  • Free play: rewarded ads are always optional. Watch one for an extra life in Countdown, a life after a fail in Math Grids, or a hint or solution in Math Grids and Puzzles. Race has no ads.
  • Access: progress is backed up to your account. The app runs on iPhone, iPad and Mac, supports Dark Mode, larger text and reduced motion, and is localised into ten languages.

How we built it

  • Client: native SwiftUI, with Swift Charts for the stats. It runs on Mac through Mac Catalyst.
  • Project setup: the Xcode project is generated from a single project.yml with XcodeGen, so settings live in one reviewable file.
  • Accounts and backups: Supabase handles accounts and progress backup, plus friends and challenges.
  • Payments: RevenueCat handles the Pro subscription and paywall. Rewarded ads run on Google AdMob, and we report them to RevenueCat so ad and subscription revenue sit in one place.
  • Analytics: PostHog tracks retention, streaks and feature use, so we can see what keeps people playing.
  • Content: the game modes, difficulty tiers and stats are our own code, with question generation tuned per tier.

Challenges we ran into

  • Mac Catalyst quirks: keyboard handling that works on iPhone silently fails on Mac, and full-screen covers dropped our environment objects and crashed. We built our own workarounds and had to get the Mac sandbox entitlements right before uploading.
  • Misleading stats: our trend chart could make you look like you were getting worse. Flipping between an easy and a hard tier drew a downward line, even when you were improving on both. We fixed it by recording each game's difficulty and letting you filter the charts and accuracy by tier.
  • Monetising without spoiling the game: we wanted ads and a subscription without ruining the core mode. The answer was to keep Race completely ad-free, make every ad an optional reward, and make Pro about learning, not about removing friction.
  • App Store review: an early build was rejected over screenshot guidelines, and we had to make sure a testing-only Free/Pro switch never shipped.
  • Tooling: we hit generated-project settings being overwritten and package-resolution problems along the way.

Accomplishments that we're proud of

  • Four distinct game modes that feel like a family, not four apps in a trenchcoat.
  • Turning "fun classroom maths games" into something that looks and feels like a real, polished game.
  • Stats that reflect real progress, not noise.
  • A monetisation model we're comfortable with: a completely ad-free core mode, opt-in rewarded ads, and a Pro tier that adds value for people who want to learn.
  • Shipping to iPhone, iPad and Mac in ten languages with dark mode, larger text and reduced motion support.

What we learned

  • Small details in a game's data can quietly mislead. Mixing difficulties in one trend line taught us to think carefully about what a number is comparing.
  • Seeing how players actually move through the app (retention, streaks, where they use ads) shapes design decisions better than guessing.
  • Optional, reward-based ads plus a genuinely useful subscription feel much better than blocking gameplay.

Built With

Share this project:

Updates

Submission history