Skip to content

Build with Odyssey

The Odyssey client SDK lets your game, simulator, or training app follow every Odyssey device live: where it is aimed on the screen, where it is in front of the screen, and when it fires.

How your app gets tracking data Odyssey devices connect to Odyssey Desktop over USB, Bluetooth, or the dongle. Odyssey Desktop runs the hub, which does the tracking. Your app connects to the hub on the same computer through the client SDK and receives events. Odyssey device camera and motion sensors Odyssey Desktop the hub: tracking, calibration, zero Your app client SDK: C#, Python, C/C++, Rust </> USB, Bluetooth or dongle local connection, same computer

Your app never talks to a device directly. Odyssey Desktop runs the hub: it talks to the devices, holds the screen calibration, does the tracking and applies each device’s zero. Your app connects to the hub on the same computer and subscribes to its events.

  • Aimpoint: where each device is aimed, as a fraction of the screen.
  • Pose: where each device is in front of the screen and which way it points, in meters.
  • Shots: an event each time a device fires, with the device’s timestamp.
  • Zeroing: line up each device’s aimpoint with where its shots land.

The SDK is written in Rust, with bindings for C#, Python, C, and C++. Every language has the same events and fields; only the naming style changes, such as screen_id in Rust, Python, and C versus ScreenId in C#.

Language Typical use
C# Unity, Godot (.NET), other .NET apps
C++ Unreal Engine, native apps
Python Tools, prototypes, recording data
Rust Bevy, native apps