A FIELD GUIDE TO DIGITAL FLIES

Scientists mapped a fly’s nervous system.Then somebody plugged it into Doom.

Fruit fly wiring diagrams are showing up in games, desktop pets, and strange little experiments. Here’s what people are building, and how much of the fly is actually in there.

Fruit fly illustration · not a simulation
SPECIES / DROSOPHILA MELANOGASTERDESTINATION / THE INTERNET
REAL WIRING. UNEXPECTED PLACES.GAMESDESKTOP PETSVIRTUAL BODIESQUESTIONABLE SIDE QUESTS
01 THE ARCADE

Tiny brains.
Enormous side quests.

Someone saw a connectome and thought,
“But can it run Doom?”
Then the internet kept going.

Source-checked Sep 10, 2026. These are independent experiments, not validated digital animals. Covers are original editorial illustrations, not gameplay captures.

Explore 37 projects + 6 ports

02   UNDER THE HOOD

How does a wiring diagram
press the fire button?

A connectome is a map of connections. Getting from that map to a game takes a few very human decisions.

A SIGNAL’S ROUND TRIPILLUSTRATED FLOW · NOT A SIMULATION
THE NEXT FRAME RETURNS TO THE START

ENGINEERED · A GAME, NOT A NATURAL ENVIRONMENT

First, give the fly something to see.

A game supplies an image. In Doomfly, each ViZDoom frame becomes a proxy for what modeled fly photoreceptors might receive. It is not a recording of a fly looking at Doom.

PSEUDOCODEframe = game.get_screen()// inspect a stage above

MODELED · SENSORY MAPPING & INPUT GAIN

Pixels are not spikes. Someone has to translate.

Brightness and color are mapped to sensory input. Which pixels reach which cells, the strength of that input, and its timing are modeling decisions. The connectome does not supply a game controller.

PSEUDOCODEinput_current = encode(frame)// inspect a stage above

MEASURED WIRING + MODELED DYNAMICS

Real connections. Chosen neuron equations.

Measured neuron-to-neuron connections constrain the graph. A model such as leaky integrate-and-fire (LIF) decides how activity evolves and when a neuron spikes. Anatomy gives the routes, not every rule of the traffic.

PSEUDOCODEspikes = model.step(wiring, input_current)// inspect a stage above

ENGINEERED · NEURON-TO-ACTION MAPPING

A neuron has never heard of a fire button.

The builder chooses which neural activity becomes an action. Doomfly maps selected descending-neuron activity to turning, movement, and firing. Those assignments are engineered; they are not established natural motor functions.

PSEUDOCODEbuttons = readout(selected_spikes)// inspect a stage above

ENGINEERED LOOP · LEARNING NEEDS CONTROLS

The game changes. The next frame comes back.

Actions change the world, creating the next sensory input. Some projects add reward and plasticity. Changing weights is not, by itself, evidence that a fly-like agent learned the task.

PSEUDOCODEgame.step(buttons) # next frame, same loop// inspect a stage above
Measured Modeled EngineeredRead Doomfly’s actual loop ↗

The map is real. The little guy playing Doom is a model.

A full graph is not a full animal. A neuron count is not a score for biological realism. And a changing weight is not proof of learning. Doomfly’s own README reports failed validation gates for its current learning candidate. That kind of candor belongs in the field guide, too.

03   FOLLOW THE WIRES

It’s a small world.
The brains are related.

Different datasets. Shared models. A whole family of desktop pets. Pick a starting point and follow the connections.

These projects list MaleCNS as a data source. Sharing a dataset does not mean sharing code.

Original source ↗

These projects list FlyWire as a data source. Their neuron models, graph selections, and goals differ.

Original source ↗

Ports and derivatives identified in their sources. A port is listed as a relationship, not a new scientific result.

Original source ↗

Only explicit model relationships recorded in our sources are shown here. This is not a complete dependency graph.

Original source ↗

FOR YOUR NEXT TWENTY OPEN TABS

Back to the source.

The research shelf