VeltoKit SDK
VeltoKit maps BLE motion bytes → GameInput each frame. No UI, no CoreBluetooth in the core target.
| 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.
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)).
Integrate (MotionSDK)
Simple path — BLE scan + read each frame:
import VeltoKit
let motion = MotionSDK()
motion.setMode(.paddle)
motion.connect()
let input = motion.pollInput(deltaTime: dt)
Manual path — your own CBCentralManager:
motion.enqueueBLE(bytes)
motion.updateFrame(deltaTime: dt)
let input = motion.input
Optional: 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.
Modes
| Mode | Sample games |
|---|---|
.paddle | Pong, Quiz |
.pointer | Dart |
.gesture | Bowling |
motion.config = MotionConfig.preset(for: .paddle) // optional tuning
Docs
- MotionSDK — API
- GameInput — fields
- Triki UI navigation —
.trikiUIScreen, focus, hold, activation lifecycle - BLE — packets
- Examples — copy-paste per game