when I was talking to a Youtuber a few days ago, he asked me about our voxel engine and this sort of stuff. And then, at the very end, he asked: Well, but what is a "voxel" anyway? We started to laugh. So let's talk about voxel basics.
A "voxel" is basically a "3D dot", a value in a 3D grid -- a term of computer graphics (i.e. "volume graphics" and a "3D discrete topology") much like "pixel" (picture), "texel" (texture), "maxel" (material) or "resel" ("resolution element" in image analysis). As you see above, a voxel can, but doesn't need to be used in a Minecraft game. It is only a data representation, a data structure, or to make it easier, the way how you store data. And you can do the opposite too, like "voxelizing" a vectorized data to voxel data and vice versa.
So how do you render that voxel data in the end? Because so far we just had blocks or clouds of data (depending on your representation).
The groundbreaking Outcast (1999) rendered landscapes with a voxel engine. It was pretty blocky, but the landscape was not Lego-alike like in Minecraft years later, right? Master of Orion 3 (2003) used voxel graphics to render space battles and solar systems. And Sid Meier's Alpha Centauri (1999) used it for the unit model rendering. The CryEngine uses a mix of voxel data and a height map for its impressive terrain engine, in order to not be as boring as the terrain engines of Unity or Unreal. "Volume rendering" itself is even older, not only is it used when they scan your skull with X-rays, it’s also a common tool in scientific visualization. In fact, volume rendering and the whole concept of “voxelization” has deep medical foundations, which we you can see below.
Rendering voxel data like in Minecraft is basically this: You make polygons out of voxel data, because our current graphic cards base on that; so it is true that if you would have a voxel graphic card, it would be faster. For us, today, it is much like drawing by numbers, with tons of calculations if you want your model to be smoother than a cubic voxelization like in Minecraft. In games like Minecraft where you handle "cubes" instead of a smooth terrain with overhangs like in Proven Lands (or much better engines such as C4 or Voxel Farm), you can already guess that you safe time if you “just” render cubes. The guy behind the C4 engine wrote the very first dissertation on this topic in 2012, on huge voxel terrain landscapes, which means that working on a voxel engine that renders a huge landscape is pretty state-of-the-art today, due to a number of performance issues the higher the rendering resolution and the view distance.
In fact, you can say that on the left side you have "voxel engines" like Minecraft -- and on the right side revolutionary "voxel engines" like Atomontage. Proven Lands is somewhere in the middle, more to the left than to the right, and of course less impressive than the voxel engine of EverQuest Next (Voxel Farm by Miguel Cepero), which has, well, more than one engineer *cough* and an incredibly higher budget. So as a tiny game developer you make tradeoffs all the time when you’re basically not a game engine company like Unity. But if you don’t need to compete with EverQuest Next, there’s no shame about that, if you look at the success of Minecraft.
Okay, so I hope you enjoyed the little lecture even if it was a bit techie. Soon, we’ll talk about the famous Marching Cube and similar algorithms in voxel engines, so that we’ll be able to talk about voxel engine optimization and level-of-detail issues, which is crucial if you want to render higher view distances.
Oh, yes. I just had to add that creepy bug anim. ;)