When I first started creating Engineer Alpha I was unsure about how a lot of things would be implemented in their final form. One of those things was actually the voxel world. If you are unfamiliar Voxel is the technical term for a "block" in the game, it simply gives a defined section of the world a set "material" be it dirt, stone or whatever.
There are many ways to do a voxel world and one that I wanted to look into in the beginning is something called "marching cubes" which essentially lets you shrink the area the voxel takes up based on its neighbors by making all the voxels "push" on each other. Using this method you can approximate other shapes beyond cubes. But early on in the development I realized two problems with this method and the game I wanted to create.
First was building placement. when you have voxels that do not take up a predefined space because their neighbors are pushing on them you can't know where a building is to be placed before hand so it has to be "off grid" and and I was trying to think of a situation where you would want to build off grid and I couldn't come up with any reasonable answer.
The second problem was placing new voxels. Because a voxel could not take up its entire space it becomes very difficult to translate them into items which I wanted to keep as integer values (e.g. you can have 1 or 2 dirt not 1.462) for their movement by machines. As well as when placing you essentially have to do a push/pull style of addition which just didn't feel like it would fit.
So because of these reasons I decided to go with a cubically rendered world for my game. Now the default for voxel world is 1-meter per voxel which is very easy to wrap the brain around and just makes sense. But I didn't want to go with what everyone else does just because I wanted to make my own game so I cut the voxel size in half.
When I did this It just felt right and things started to fall into place.
But it comes with it a problem as voxels are volumetric they scale with the cube of size. So by cutting their size in half I increased the number of voxels in the world by a factor of eight! This means anything you want to do will take eight times as long if you are doing it one voxel at a time such as building or mining. For mining I wasn't overly worried about it as by the time you reached the point you wanted to remove massive amounts of voxels you should have machines that do it for you. But building is another question.
For building I knew there needed to be a way to place a significant number of voxels at once. While this feature was needed in my mind I ran into a few problems and decided to table it for a little while but it will be coming in 0.3 if all goes according to plan.
I plan to add reasons for you to build in the future. I am aware there really aren't any at the moment. some will be buildings that require specific land formations like the windmill and others could be defensive of enemies. But before I can really do that building need to feel quick and easy. If you can't throw up something of reasonable size in a matter of a couple minutes I would not call it easy.

I built this in under a minute 9 blocks at a time.
"So how will it work?" you may ask. The plan as of right now is that when want to place down a voxel you will have the option to change the size of the area you are building e.g. you could do a 2x2x2 or a 3x3x1 you will have full freedom up to the max your current character allows. An engineer (your base character) will likely be limited to about 3 or 4 in ay dimension while a crane will have a bigger maximum.
But it gets even better. As you increase size precision can be a bit more difficult so it will not be required for the entire volume you want to place to be empty. If any voxels are full when placing they will simply be skipped over and you will only use the number of items out of your inventory that were actually placed.

a completely valid voxel placement.
The only real question that remains is UI for how you will choose the size you want to build with. What form exactly that will take is going to require some testing be it a radial interface or just a menu with the integer inputs. If there is something you think would work great let me know and I will consider it.
