(no, not that kind of biological doom)
DOOM is a classic first-person shooter game released in 1993 by id Software. Because it’s from 1993, it doesn’t require much computing power compared to modern games. Additionally, the code (written in C) is easy to compile to run on a variety of processors.
Over the years, hackers have made DOOM run on things such as an ATM, a touchbar of a MacBook, a Porsche 911, and even a TI-84 calculator powered by potato batteries.
But what about cells?
Requirements for DOOM
The inputs to DOOM are based on button presses, traditionally on a keyboard. 9 keys in total are required (assuming “switch weapon” is implemented as one key that cycles through weapons).
For computation, the original 1993 release required:
There is some flexibility regarding the processor, but slower processors will have worse frame-rates. The Intel 386 had 275,000 transistors in its most basic configuration.
DOOM also requires a graphical output. The smallest resolution I’ve seen is 128x32 pixels, and that was cutting it a bit close. We’ll assume we need 4096 black-and-white pixels for the display.
Finally, DOOM has audio. For the purposes of this thought experiment, we can ignore this output. Although the soundtrack is great, it’s not strictly required to play the game.
Approaches to biological computation
So, how could we potentially run DOOM? Biological systems can perform computations in several ways:
Nucleic acid hybridization
These logic gates are based on strand displacement between complementary DNA sequences.1 A recent paper demonstrated a set of DNA-based logic gates that could add two 6-bit binary numbers.
Pros and cons:
Memory capacity is good (encoded in DNA or RNA)
Switching speed is OK (rate constants vary by design but are typically around 10^6 M^-1 s^-1)
Visual output could be provided by fluorophore/quencher conjugated oligonucleotides, but . . .
Coupling to a macroscopic output display would be far too slow, because it would have to rely on diffusion (taking a few minutes to cover a millimeter-scale distance). So, the game would have to be played using a microscope.
It’s hard to “reset” gates after using them, this requires coupling to some energy source
It’s also hard to integrate DNA-based logic gates into other biological systems, since not many organisms use short pieces of ssDNA. RNA might be used instead.
Transcription and translation
These logic gates use the same tools that cells use to regulate gene expression. For example, the classic lac operon in bacteria implements:
if(high_lactose and not (high_glucose)):
transcribe([lacZ, lacY, lacA])
Biologists have exploited similar systems to build logic gates, as well as systems involving the regulation of translation (the production of proteins using mRNAs as templates). A recent paper used Cas9 binding to a sgRNA-like sequence inserted in an mRNA to control its translation. To form a NAND gate, they split Cas9 into two fragments; if both were present, the output protein was not produced.
Pros and cons:
Memory capacity is acceptable (encoded in DNA or RNA)
There will be challenges with implementing the number of logic gates required while avoiding cross-talk
The dealbreaker: far too slow to run DOOM. RNA and protein half-lives are on the order of minutes to hours.
Protein phosphorylation (kinases/phosphatases)
Many cell signaling pathways use protein phosphorylation as a signal. This is much faster than transcription and translation, since no new RNAs or proteins need to be produced. A paper in 2021 built a toggle switch in yeast out of several kinases and phosphatases.
Pros and cons:
Response speed is adequate, similar to nucleic acid hybridization gates (i.e., largely limited by diffusion)
Unlike with nucleic acid hybridization gates, it’s quite easy to reset gates after using them
Visual output could be provided by luciferase
Hard to implement the number of logic gates required while avoiding cross-talk (although efforts in de novo protein design may improve this)
Also very hard to implement large amounts of memory
Electrical computation (nerves)
In general, biological computation based on chemicals is tricky. With individual molecules acting as signals, there isn’t a good way to make “wires” to limit crosstalk and communicate faster than diffusion. The closest thing is scaffold proteins for kinases, but those are rather limited in what they can accomplish.
Instead, evolution has harnessed electricity for rapid, specific communication between cells. Neurons can transmit electrical signals on millisecond timescales over meter-scale distances. Of course, neurons also use chemical computation as well. Your brain is an example of a computer that can play DOOM; it could probably also run DOOM under the right conditions.
Pros and cons:
Response speed is excellent
Good feasibility for coupling to inputs using electrodes. Optogenetics or mechanosensory neurons would also be very useful here.
Outputs could be provided by chromatophores
Good amount of memory available
Very hard to precisely engineer. You’d probably have to grow a neural organoid, and then train it somehow to run DOOM. Perhaps you could do some sort of reinforcement learning to “predict the next frame” given the game state and user input. But I don’t think there are any good current methods for training an organoid.
I would really love to play DOOM on a cuttlefish. Paging Peter Watts!
Prospects for DOOM
Overall I think that either neurons or protein phosphorylation logic are the best candidates for running DOOM. Neurons can clearly do it, but programming/training them will be quite difficult, and anything I write about that is wild speculation.
So, let me speculate less wildly about protein logic. Here, the main limit will be the RAM required. If a molecule can store one bit of information (such as a protein being phosphorylated or not), then to store 4 megabytes will require slightly under 34 million molecules. And to increase robustness, it would be a good idea to use multiple molecules per bit.
Across many different organisms, cells tend to contain 2 – 4 million protein molecules per cubic micron. So, a bacterial cell will have about 2 million proteins, a yeast cell will have about 50 million, and a mammalian cell will have about 2 billion (depending on the cell type). You probably couldn’t run DOOM on a bacterial or yeast cell, but it could be possible to use a human cell.
The most straightforward way of setting up this RAM would require having each bit of memory correspond to a unique molecular species. Assuming you could encode one unique molecule per 1000 bases of DNA2, this would take 34 billion bases. This is too big for a human cell (which has 6.6 billion bases for a diploid cell), but an axolotl (64 billion bases) or African lungfish (80 billion) might be able to handle it. Using RNA, or smaller proteins, as information carriers could probably reduce the required DNA to 200 – 500 bases per unique molecule. But this is still quite a lot of DNA, far too much to synthesize and assemble using current technology.
To reduce the DNA required, it might be better to not use unique molecules, and instead have some system of spatial separation preventing crosstalk between different bits of memory. Using multiple cells would be the obvious approach. However, this would increase the complexity of the rest of the design. The DOOM code might also be optimized to require less RAM, but I’m not sure how feasible this would be. A more promising approach would be to have each molecule carry more than one bit of information. For proteins, this could be accomplished by having multiple possible phosphorylation sites, and having the interaction partners be site-specific.
Given that biomolecules such as proteins can act as both information storage and logic gates, I think that if the RAM can be built, the logic gates should be easier in comparison.3 Even though the switching times will be slower than the 12 to 40 MHz of an Intel 386, all the RAM addresses could be operated on at once, so hopefully it will be possible to parallelize most of the calculations. Overall, I don’t think speed will be an issue, given that many protein kinases can perform a phosphorylation every 10ms,4 and higher rates could be achieved by engineering.
In conclusion, although it may be possible to run DOOM in an individual animal cell,5 it is not achievable with current technology. Using neurons is a promising idea, but we have no good way to program/train them. The best approach may be to combine these logic systems, and have a few dozens to hundreds of neurons linked together in a pre-defined connectome, with each neuron using protein phosphorylation or nucleic acid hybridization logic to precisely specify its signaling.
What about something simpler?
How about Pong?
Pong was released in 1972 (21 years before DOOM) and can be implemented with the following components (not counting the cathode-ray display tube):
If synthetic biologists really wanted, I think that we could probably make Pong run on cells with current technology. Or for the ultimate meta experience, how about running Conway’s Game of Life . . . on life!
Note, I am a biologist, not an expert on old video games. If there is any incorrect information in this post, please let me know!
Also, this could be done with RNA. People work with DNA oligos since they’re easier.
This would encode a medium-size protein, including a promoter and other regulatory sequences.
Which is to say, still very difficult.
This is expressed as kcat = 100/s
Another limitation of running in an individual cell is the output. The diffraction limit of light means that a microscopic display the size of a cell can’t have the necessary resolution.
Thanks for writing this, great article!!
I wonder would a limitation be a very steady clock. Biological clocks are not known for their consistency. I w