Voxel Doom brings 3D enemies to the classic id shooter - and it's brilliant
Adding a new dimension to the game, while respecting the original art.
After 28 years, id Software's classic Doom has finally been voxelised, its 2D sprite graphics given an extra dimension in space thanks to modder Daniel Peterson - aka Cheelio - providing us with another excellent excuse to revisit one of the greatest titles in gaming history.
In recent times, various source ports have become the method of choice in playing the game on modern hardware and one of the key features over and above the visual overhaul is the inclusion of mouse look. Original Doom was a 3D game effectively playing out on a 2D plane with no ability to look up or down. If you are shooting enemies that are elevated above, you have a hard time seeing them and the game just chooses to automatically aim vertically for you. This can be a bit frustrating to someone with modern sensibilities for first person games but it can also be annoying as Doom's auto-aim often had strange ideas on what it is you're actually looking to shoot.
So this new voxelised mod not only looks to add a welcome 3D look to the 2D sprites, it also helps to make the more modern 'mouse look' enabled version of the game even better. If you're looking up at an enemy you're about to shoot, you'll get a perspective-correct rendition of the enemy in front of you. On top of that, the overall sense of 'believability' is enhanced as circling enemies or objects doesn't give the same flat view any more as the sprites are given 3D dimensions. This applies to all camera-facing sprites from the original game so health packs no longer just rotate to face the camera, but instead have tops, bottoms, sides and more that such a box should have in 3D space. Enemy sprites? Those required a bit more work.
As you can imagine, making this possible at all required a bit of creative thinking. Doom's original art never showed the sides, tops, or back sides for many objects so Daniel Peterson had to be creative here, envisaging how those objects would look in 3D and 'sculpting' accordingly, while remaining true to the vision of the original artwork. The end result is that objects really look like they belong in the pixelated world, with the scope for enhancement too: many objects, including weapons, rotate like an arena shooter of old, something that would never work with flat 2D sprites.
The situation is different for enemies though, as the original Doom used various sprites for viewing your opponents from different angles - when you rotate around them, you can see them changing perspective, but every 45 degrees or so you can see the really harsh transition to a new sprite. Peterson did something really cool here: the voxel models are modelled based around those older sprites, so when you are at those key angle rotation points, the voxel model looks near-identical to the old art, but as you rotate around an enemy, you no longer get those harsh transitions. Obviously, the enemy looks different at angles not divisible by 45 degrees but that is the point of voxels in the first place.
To get this working as well as it does is not insignificant. Nash Muhandes, who helped Daniel Peterson get his cool voxel modes rendering in GZDoom gave me some details on how it works. Voxel Doom requires the GZDoom source port, which uses a voxel loader, borrowed from Build Engine and licensed from creator Ken Silverman himself. That being the case, the voxels look a lot like those you may have seen in Build Engine games like Blood - so excellent, in other words.
From here, the voxels are rendered one of two ways depending upon the renderer you choose. The hardware renderer uses your GPU and OpenGL with voxel geometry is converted into a mesh made of triangles rasterised on the GPU and drawn natively as 3D geometry with very basic hidden surface removal. The second method of rendering is the software path, which constructs the voxel models in real-time just like GZDoom would construct the sprites, using span-based rendering. Here each tiny little voxel unit is rendered as if it were a billboarded sprite.
The differences are intriguing: if you want the game to look chunkiest and most 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 with no distortion with mouse look, you should usually choose hardware rendering. In general, any modern GPU and CPU should run this mod very well, but do watch out for the MSAA option in GZDoom. It makes the game look a lot smoother for sure, but when jacked up all the way to 32x, it can even cause frame-rate issues on an RTX 3090, so be reasonable.
Ultimately, this mod is based around a simple idea in terms of what it does, but the results are incredible in-game - and while it seems simple on the outside, it is obvious from talking to Daniel Peterson and Nash Muhandes that the creation process and hooking it up into GZDoom was not a simple job. But I'm grateful for the hard work and suspect you will be too if you're interested in the evolution of this gaming titan. Find the mod here and give it a go!