| sidebar_position | 1 |
|---|---|
| title | SDK overview |
| description | VeltoKit — MotionSDK and GameInput |
VeltoKit maps BLE motion bytes → GameInput each frame. No UI, no CoreBluetooth in the core target.
:::info Names (do not confuse)
| Name | What it is |
|---|---|
| VeltoKit | Swift SDK in VeltoKit/ — link this in your app |
| gametriki | Sample iOS app in app/ — not a second framework |
| Triki | Informal name for the BLE cap + app UI layer (TrikiInputAdapter, TrikiUI) |
API source of truth: VeltoKit/GameInput.swift and VeltoKit/MotionSDK.swift — not marketing text on the website. If docs and code disagree, trust the Swift files.
:::
:::tip Docs search & AI skills
Use Search (⌘K / Ctrl+K). Assistants: Context for AI · repo root AGENTS.md.
Use Search in the top navbar (⌘K / Ctrl+K) to find any topic.
Download Cursor / Claude prompt files on For Cursor Claude (footer: AI skills (download)).
:::
Start here: Integration recipes — Pong, UI menu, Dart, Bowling.
Simple path — BLE scan + read each frame:
import VeltoKit
let motion = MotionSDK()
motion.configureForPong() // or configureForMenu / pointer / gesture
motion.connect()
let input = motion.pollInput(deltaTime: dt)Manual path — your own CBCentralManager:
motion.enqueueBLE(bytes)
motion.updateFrame(deltaTime: dt)
let input = motion.inputOptional: TrikiInputAdapter in the sample app adds calibration UI on top of MotionSDK — see BLE integration. For cap calibration + a motion-driven menu (Quiz-style), see Triki UI — calibration & simple menu.
| Mode | Sample games |
|---|---|
.paddle |
Pong, Quiz |
.pointer |
Dart |
.gesture |
Bowling |
motion.config = MotionConfig.preset(for: .paddle) // optional tuning- Integration recipes — four copy-paste patterns
- MotionSDK — API
- GameInput — fields
- Triki UI navigation —
.trikiUIScreen, focus, hold, activation lifecycle - BLE — packets
- Examples — copy-paste per game