
An opponent that plays with thumbs.
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.
Frames enter through the compound-eye adapter; the sticks leave through the descending neurons as continuous values, the buttons as spikes. The fly's native competence, steering toward a moving target, is exactly what most games ask for.
Reacts in 90 ms.
Frame-to-stick latency of 90 ms end to end at 60 fps, inside the range of human players. Steering tasks converge in under two hours of self-play on one GPU.
target Figures marked "target" are design targets for the first release, not measurements.
Same brain, its own wiring.
Input adapters occupy afferent regions, output adapters read efferent ones. Co-processors feed in through the embedding port.
- FlyCore v0.1.0
- weights v0.1.0-beta
- frames (compound eye)
- controller state
- gamepad (sticks, triggers, buttons)
- none
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) -> GamepadStateTwo sticks, twelve buttons, one brain.
Sparring partners
Opponents with human reaction times for racing, arena and platform games.
Playtesting at scale
A thousand agents that play like people find the level that is too hard before players do.
- Beta: standard XInput layout only.
- Per-game training required; no zero-shot play.