尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Play Subway Surfers with your body: real-time webcam body-tracking controller using MediaPipe pose estimation. Side-step, jump and duck to send keyboard input. Python desktop controller + zero-install TypeScript browser game. One Euro filter, Schmitt-trigger state machine.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗Webcam body-tracking game controller: MediaPipe pose estimation turns side-steps, jumps and ducks into keyboard input in real time.
Live Web Demo (Zero-Install) | Features | How It Works | Benchmarks | Quickstart | Contributing
IRLSurfer is an edge computer vision controller that translates whole-body kinematics from an ordinary webcam into low-latency keyboard inputs to control Subway Surfers in real time.
Most computer vision input projects suffer from spatial sensitivity (breaking when players shift relative to the lens), high-frequency landmark jitter, and false keystroke triggers caused by baseline drift or natural idle fidgeting. IRLSurfer eliminates these failure modes through an end-to-end deterministic pipeline: MediaPipe Pose landmark extraction, perspective-invariant body space normalization ($W_s$ scaling), adaptive speed-based low-pass filtering (One Euro Filter), and a Schmitt-trigger finite state machine with velocity gating.
config/gestures.json) powers identical state machines in Python 3.12 (Desktop OS controller via pynput) and TypeScript (Zero-install browser demo), validated via automated cross-language parity test suites.pynput, so it drives Subway Surfers in a browser, emulator, or native app.irlsurfer record, label, eval, and bench subcommands for building and scoring gesture datasets.irlsurfer play, open Subway Surfers in another window, and step back until your shoulders and hips are in frame. The HUD shows STEP BACK - TOO CLOSE / STEP CLOSER - TOO FAR / DISTANCE OK guidance.| Layer | Technology |
|---|---|
| Pose estimation | MediaPipe Pose Landmarker (Python mediapipe, web @mediapipe/tasks-vision) |
| Video capture and HUD | OpenCV (opencv-python) / browser MediaStream + Canvas |
| Signal processing | One Euro Filter, NumPy |
| Gesture detection | Deterministic Schmitt-trigger finite state machine (shared config/gestures.json) |
| Keyboard output | pynput (macOS Accessibility / CoreGraphics) |
| Web runtime | TypeScript 5, Vite, Vitest |
| Quality | pytest + coverage, mypy (strict), Ruff, GitHub Actions CI, GitHub Pages deploy |
| Runtime | Environment | Input Mechanism | Primary Use Case |
|---|---|---|---|
| Web Runtime | Browser (WebGL / WASM) | Direct Canvas Keystroke Dispatch | Zero-install live demo in any browser |
| Desktop Controller | Native Python 3.12 CLI | OS Input Hooks (pynput / CoreGraphics) | Control Subway Surfers on web, emulator, or native desktop |
Each webcam frame goes through six stages: capture, MediaPipe pose estimation, body-space normalization, One Euro filtering, the gesture state machine, and keyboard dispatch. A 2-second calibration at startup records your neutral standing position. Full design notes live in docs/architecture.md.
The pipeline strictly decouples asynchronous frame capture, pose estimation, coordinate transformation, temporal filtering, state machine detection, and OS input dispatch:
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗