After 28 years, id Software’s classic Doom has finally been voxelized. The 2D sprite graphics were given an extra dimension in space thanks to modder Daniel Peterson – aka Cheelio – giving us another excellent excuse to relive one of the greatest titles in gaming history.
In recent times, various source code ports have become the method of choice to play the game on modern hardware, and one of the most notable features, alongside the visual overhaul, is the inclusion of mouse look around. The original Doom was a 3D game that effectively played out on a 2D plane with no ability to look up or down. When shooting at enemies that are high up, you have a hard time seeing them and the game will automatically target them. This can be a little frustrating for someone who plays more modern first-person shooters, but it’s also annoying as Doom’s auto-aim system often had odd ideas about what you were actually trying to shoot at.
This new voxelized mod not only gives the 2D sprites a welcome 3D look, but also helps make the more modern version of the game, which allows mouse-swiping, even better. If you face an enemy you are about to shoot, you will get a perspective correct representation of that enemy. Additionally, the overall sense of “credibility” is improved as orbiting around enemies or objects no longer provides the same flat view as the sprites are given 3D dimensions. This applies to all of the original game’s camera-facing sprites, so the health packs no longer just rotate towards the camera, but have the top, bottom, sides and more of what such a box should have in a 3D environment. Enemy sprites? They required a bit more work.
As you can imagine, it took a bit of creative thinking to make this even possible. Doom’s original art never showed the sides, tops, or backs of many objects, so Daniel Peterson had to be creative here, imagining what those objects would look like in 3D and “modeling” them accordingly while following the original art’s vision remained faithful. The end result is that the objects really do look like they belong in the pixelated world: many objects, including weapons, rotate like in an arena shooter of yore, something flat 2D sprites would never do.
The situation is different for enemies though, as the original Doom used different sprites for viewing enemies from different angles. Moving around them you can see them changing perspective, but every 45 degrees or so you can see the really hard transition to a new sprite. Peterson did something really cool here: the voxel models are based off of these older sprites, so when you’re at those key angle pivot points, the voxel model looks almost identical to the old graphic, but when you’re rotating around an enemy , these hard transitions no longer exist. Of course, the enemy looks different at angles that are not divisible by 45 degrees, but that’s the point of voxels.
Getting this to work as well as it does is not trivial. Nash Muhandes, who helped Daniel Peterson render his cool voxel modes in GZDoom, gave me a few details on how it works. Voxel Doom requires the GZDoom source code, which uses a voxel loader borrowed from the Build Engine and licensed by inventor Ken Silverman himself. In this case, the voxels look very similar to those seen in build engine games like Blood. In other words: excellent.
From there, the voxels are rendered in one of two ways depending on the renderer you choose. The hardware renderer uses your GPU and OpenGL, converting the voxel geometry into a mesh of triangles that is rasterized on the GPU and rendered natively as a 3D geometry. The second rendering method is the software path that constructs the voxel models in real-time, just as GZDoom would construct the sprites, using span-based rendering. Here each tiny little voxel unit is rendered as if it were a billboard sprite.
The differences are striking: if you want the game to look as clunky and like OG Doom, use software rendering. However, if you want the game to run as fast as possible at high resolutions with optional MSAA and no mouse gaze distortion, you should normally choose hardware rendering. In general, any modern GPU and CPU should run this mod very well, but watch out for the MSAA option in GZDoom. It makes the game much smoother, but cranking it up to 32x can cause framerate issues even on an RTX 3090, so be sensible.
Ultimately, this mod is based on a simple idea as far as how it works, but the in-game results are amazing. While it may seem simple from the outside, after speaking to Daniel Peterson and Nash Muhandes, it’s obvious that the process of building and embedding it into GZDoom wasn’t an easy task. But I’m grateful for the hard work, and I suspect you will be too if you’re interested in the evolution of this gaming legend. you can use the mod download here and try it yourself.
Originally written by Alex Battaglia, Video Producer, Digital Foundry