Inspiration
Nearly 80% of people in the U.S. don’t get enough exercise, while over half the world loves playing video games. So we gamified exercise with Spectre.
Motion gaming today is expensive or limited to local multiplayer. You need a $300 console or headset and have to be in the same room.
We wanted to lower the barrier so anyone can stay active, have fun, and connect from anywhere. Imagine a kid playing with their grandma, or coworkers playing on a break. It is a simple, social way to stay active.
What it does
Two players open a URL on their phone. The phone runs pose detection in the browser and streams body keypoints to a Python game server.
The server runs the match in real time, handling hit detection and damage. A laptop or TV displays the fight as a stick figure boxing match with health bars, a timer, and hit effects.
An AI commentator reacts to the fight in real time, making it feel like a live match.
How we built it
Each phone runs pose detection locally and sends only keypoint data, not video.
The server processes movement, detects hits, and updates the game state. The overlay renders the fight using simple stick figure visuals.
Because everything runs on-device and only small data is sent, the system is fast, scalable, and low cost.
Challenges we ran into
- Making movement feel smooth and responsive by reducing client-server latency
- Keeping both players synced and oriented correctly
- Accurately detecting punching movements
Accomplishments that we're proud of
- Creating a game with no expensive hardware necessary, just a smartphone and laptop
- Working hit detection and damage system
- Reducing latency so actions feel instant and responsive
- Making social impact through lowering the barrier of entry to games like these that keep people connected and moving
What we learned
- Lightweight data makes systems more scalable
- Latency has a big impact on real-time gameplay
- Simplicity improves performance and accessibility
What's next for spectre
- Improve animations and realism
- Expand gameplay mechanics to identify different moves (ex. jabs, uppercuts, crosses)
- Add matchmaking and new game modes
- Add leaderboards
Built With
- cloudflare
- fastapi
- mediapipe
- numpy
- pixi.js
- pydantic
- python
- react
- tailscale
- typescript
- uvicorn
- websocket
Log in or sign up for Devpost to join the conversation.