Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laser Tracker Controller

Tracks a laser pointer on a projected surface via webcam and streams its position over WebSocket. Turns any wall or projector screen into a real-time laser-controlled input device.

Bundled Game

A C/raylib asteroid shooter, games/space-shooter, driven by the controller's WebSocket stream.

Gameplay

Gameplay with two AI players

Two AIs gameplay. The game also takes mouse input for a single player, or laser input for one to two players on a projector.

Intro

Intro cutscene

Pipeline

webcam  ->  OpenCV (HSV + perspective)  ->  FastAPI / WebSocket  ->  game client

Quick Start

  1. Run the controller:
    cd controller
    make run
  2. Calibrate at http://localhost:8000 — mark the 4 corners of the projection surface, then sample the laser color.
  3. Connect any WebSocket client, or launch the bundled game:
    cd games/space-shooter
    make run

Tech Stack

  • Controller: Python 3.14, FastAPI, OpenCV, NumPy, Uvicorn, pytest
  • Game client: C99, raylib, vcpkg. Cross-platform build (macOS, Linux, Windows via MinGW).

License

Source-available under PolyForm Noncommercial 1.0.0. Non-commercial use only; see the license for details.

About

A wall, a projector and a laser pointer become an arcade shooter. Computer vision turns the dot into the crosshair. C and raylib, macOS and Windows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages