| The interesting part of this project is compiling doom into a weird target architecture: a .qasm circuit file. This requires you to do things like decompose additions into TOFFOLI gates. But the code in the repo doesn't include that part, it only includes the code for interpreting the circuit and the produced qasm file. The author is aware of this (from the readme): > For now I'm still tidying up the engine code, but basically I have about 8,000 lines of c++ functions allowing a number of reversible binary and arithmetic operations on quantum registers, for example "flipIfLessThanOrEqualTo" which flips all qubits in a register if the value of another register is less than some given value. Everything is done with integers. Kinda ironic they left out the most interesting part. Given that there's only 174 qubytes of storage (72376 qubits total - 6986 qubits ancilla - 64Kqb screen) it's clear that almost the entire world state is in the series of gates rather than in qubits. So, like, the wall locations are probably implicit in the series of instructions rather than being data-driven, so you wouldn't be able to make a wall that was in a superposition of two places. It would be interesting if the author said what specifically was in the qubits; I'd imagine it's probably things like health/ammo/position/enemyposition but an explicit list would be good. They say this is a reimplementation of Doom, as opposed to a cross compilation. That makes sense to me. For example, I doubt there's anything like a tree data structure anywhere in the rendering, since that stuff doesn't really translate from programs to circuits. Tree structures work efficiently around the fetch-decode-execute bottleneck, but circuits lack that bottleneck. Also, a "true" quantum implementation of the rendering would struggle to do any kind of truncation of what to render since the camera position can be in superposition. Frustrum culling would implicitly measure the position of the camera, preventing some potential interference effects, and so would be an approximation instead of a pure optimization. From a high level view there's not much point in allowing most of doom's state to be in superposition, since constantly rendering them to the screen measures them preventing interesting interference effects. You could maybe make it so that enemies in rooms not being rendered were undergoing a quantum walk, so their positions behaved sort of analogous to an electron in a potential well. So entering the room at different times would result in different distributions of positions. |
I'm also wondering how much of the computation is really ... quantum? I.e. is anything in superposition, phase shifted, entangled, etc.?
This looks to me like it's entirely relying on reversible classical logic gates. Impressive! But not quantum computing on its own.