Shadow only
The hand sprite is decoration. The fly’s input is the table blob: area, growth, coverage of its receptive field.
tech demo · MaleCNS v1.0
The fly never sees your hand. It sees the shadow on the table — then ~166k frozen neurons decide whether to freeze or take off.
No scripted “if close then jump.” Same looming math the fly’s visual system uses, wired through the real MaleCNS connectome.
The hand sprite is decoration. The fly’s input is the table blob: area, growth, coverage of its receptive field.
Angular expansion rate. Fast-growing shadow = “something is about to hit me.”
LC4 tracks angular velocity. LPLC2 tracks size. Together they arm the escape circuit.
Giant fiber fires → takeoff in ~50–150 ms. Yellow freeze is your hit window. Wait and it’s gone.
pathway: shadow → LC4 + LPLC2 → DNp01 → takeoff
weights: frozen · never trained to play this game

one-screen version of the circuit for sharing
Mute demo. Watch the thinking log top-right — that’s cell activity, not a bot script.
full muted capture · 1920×1080 · system audio stripped for the web
HUD is the science: title, timer, wiring badge, and a live log of what one fly’s cells are doing.

Python 3.10–3.12, pygame, flybrain. MaleCNS loads in the background (~260 MB). Until then you get a loom-threshold stand-in on the same shadow numbers.
git clone https://github.com/yava-code/flythegame.git cd flythegame python -m venv .venv .venv\Scripts\activate pip install -r requirements.txt set FLY_DATA=%CD%\fly-data flybrain download python -m flygame --windowed
Connectome is open science. Game is a thin pygame shell around frozen weights — cite the paper if you remix.
yava-code/flythegame · run, fork, film
connectomeMaleCNS v1.0~166k neurons · HHMI Janelia / Cambridge / MRC LMB / Google
simflybrainLIF stepping of the frozen connectome (MIT)
Cite Berg et al. 2026, Cell. License of the connectome: CC BY 4.0. Cell