// PC GAMER — GAMING
Doom can 'run' on a DNS database now, and one of the technology's pioneers says 'I can't decide whether this is deliciously horrible, or else horribly delicious'
Apparently the database is acting a bit like a "librarian" and not doing the actual compute.
When you purchase through links on our site, we may earn an affiliate commission. Here’s how it works.
In the early 2000's, the perennial question was whether a powerful system could run Crysis. These days, it's whether a minimal one can run Doom. We've seen an affirmative answer to this question when it comes to vapes, a motherboard BIOS, and even a pregnancy test. And now? A DNS database.
To be clear, we've seen Doom broken down into DNS text records before, but this time it seems like the database is doing more than file storage. This new version is courtesy of Corey Quinn over at The Register, who explains: "I have compiled Doom for a 32-bit machine whose arithmetic and memory live in DNS."
DNS, for those unaware, means 'domain name system', and is the system that translates URLs into IP addresses that computers can actually interact with to visit. You can also create your own DNS databases with your own entries.
Quinn realised that such a database could be used essentially as a "librarian", pulling pre-made answers to relevant operations: "The database itself is 6.4 million rows of truth tables."
One of the main pioneers of DNS, Paul Vixie, said: "I can't decide whether this is deliciously horrible, or else horribly delicious. in either case, it's the best use of RFC 2136 DNS UPDATE that I've ever seen."
DNS UPDATE is what allows DNS records to be changed, which is also what's required for values and variables to change and be updated in a game world. That's the key trick here, as far as I can tell: Quinn realised there's enough similarity in the way DNS works to essentially replicate the usual conditional 'if this, then this' way that code works.
"I want to be very clear here: this isn't DNS pretending to be a CPU." says Quinn. "The instruction decoding is done ahead of time by a compiler; BIND never executes an instruction itself. All that it sees is a key-value read, a conditional write, and 6.4 million rows of precomputed answers.
Keep up to date with the most important stories and the best deals, as picked by the PC Gamer team.