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
- android
- android-studio
- camerax
- compose
- firebase
- jetpack
- kotlin
- mediapipe
- revenuecat

Log in or sign up for Devpost to join the conversation.