An opponent that plays with thumbs.

Two sticks, twelve buttons, one brain. Game controller.

PlatformsPython, Rust
EngineFlyCore v0.1.0
Weightsv0.1.0-beta
Input portsGame frames (compound eye) → visual (11,390); Controller state → ascending (2,276)
Output portsSticks, triggers, buttons ← descending
Co-processorsnone
The 3D view needs WebGPU or WebGL2.

Install

Python
pip
pip install flycore
Rust
Cargo
cargo add flycore

Usage

Pad maps game frames to a standard controller: two analogue sticks, triggers and buttons. Trained per game by imitation and reinforcement, on the same brain.

Python
import flycore

brain = flycore.load("flylabs/pad")      # engine + weights + adapters
agent = brain.attach(frames=env.frames, gamepad=flycore.io.Gamepad())
agent.play(env, hours=2)   # imitation, then self-play
# agent.act(frame) -> GamepadState

Figures

Figures marked target are design targets for the first release, not measurements.

Reaction90 mstarget frame to stick, 60 fps
Training< 2 htarget steering task, one GPU, self-play

Limits

  • Beta: standard XInput layout only.
  • Per-game training required; no zero-shot play.