Inspiration

I wanted to make exercise feel less like exercise. What if push-ups, punches, and poses weren't the workout, but the price of admission to a set of games you genuinely wanted to win?

What it does

NoobVsNoob turns real movement into a suite of arcade games your phone watches you play.

  • Push-Up Runner is an online mode where you compete with your friends and online palyers in real time pushup battle, time based and first to N pushups
  • *Flappy race is a Flappy Bird-style flyer where real pushup movements steers your character and every push-up rep is fuel.
  • Punch Rush is reflex boxing against a reactive dummy.
  • Rally is hands-free table tennis controlled by your hand position.
  • Mirror Match has you striking and holding yoga-style poses that the camera grades live.

All four run on the same on-device body-tracking pipeline, and you can play any of them solo for score, or head-to-head online against another player in real-time matches, quick-matched or against a friend.

How I built it

I built an Android app in Jetpack Compose with a from-scratch 60fps game loop per mode.

MediaPipe's pose and hand-landmark models run entirely on-device to track:

  • Head tilt
  • Push-up reps
  • Hand position
  • Full-body pose

The phone's motion sensors are fused in as an anti-cheat signal.

Online matches are backed by Firebase:

  • Firestore for match state and leaderboards
  • Cloud Functions for backend game logic
  • Real-time opponent state synchronization
  • Matchmaking

The hardest part was making computer vision work reliably in real-world conditions. Lighting, camera angle, body position, and the phone itself moving all threaten tracking.

Every game needed its own:

  • Calibration step
  • Filtering and smoothing
  • Fallback behavior for occluded joints
  • Lost-tracking recovery
  • Anti-cheat logic

The anti-cheat system also needs to distinguish genuine body movement from someone simply moving the phone. For instance in case of pushups I had to prepare my own dataset, guardrails, weights, and OS specific tools to detect and filter someone who is trying to hack a way to count a pushup, even knee supported pushups are filtered out.

Doing that across four different camera-driven games instead of just one meant solving the problem four separate times, each with different constraints.

Accomplishments that I'm proud of

I went from one workout-as-game idea to a small suite of camera-controlled games sharing one tracking pipeline, plus a real-time online multiplayer layer on top:

  • Matchmaking
  • Live opponent state
  • Shared leaderboards
  • Real-time head-to-head matches
  • On-device camera processing

Every frame of camera data stays on-device.

I also shipped:

  • Cosmetics
  • A subscription with a real free trial
  • An in-game currency economy through RevenueCat

That made it feel like an actual product, not just a demo.

What I learned

Exercise gets a lot more motivating when there's an immediate, visible reason to keep going. That held true across all four games, not just the original push-up concept.

I also learned that computer vision for gameplay isn't just about "detecting movement."

To make it feel fair and responsive, you need:

  • Per-game calibration
  • Filtering
  • Sensor fusion
  • Lost-tracking recovery
  • Fallback paths
  • Anti-cheat mechanisms

Multiplayer adds a whole second layer of problems on top of the single-player ones:

  • Synchronization
  • Fairness
  • Latency
  • Cheating prevention
  • Consistent game state

What's next for NoobVsNoob

The next goals are:

  • Better tracking across more environments and body types
  • Verified and anti-cheat-hardened competitive leaderboards
  • More cosmetics
  • More game modes
  • Eventually, an iOS build

The only reason it's Android-only right now is that I don't have a Mac to build for iOS.

Built With

Share this project:

Updates

Submission history