I'm extremely interested in the shadow-casting algorithm. I've been trying to get my shadows working, and even in the semi-static environment my voxel engine's working with, I can't get it working fast enough. Obviously a single, static directional lightsource affords some optimisation, but I still end up casting and checking over a million rays :(
I found about you and this game from wikipedia :))
i searched for info about voxel tech for games and here i am.
It looks absolutely fantastic.
if you could integrate the destruction into the gameplay your game should be an instant classic and you a millionaire... maybe
(some people don't have good taste).
I check in occasionally also.  Just remembered that you are based in Japan and New Zealand.  Hoping you are alright with the recent events in Japan.  Wish you and your loved ones the best.
MisterCat, I went through the same process as you. The voxel renderer started off as a by-product of a raytracer using a regular occupancy grid for optimisation. That was about 6 years ago on a 600MHz cpu, and I couldn't get more than 5 fps out it for a 64^3 scene at 640x480. If you don't want to do any fancy reflections etc., just brute force it with polygon rasterization! For typical gamey world scenes it's not as expensive as you might imagine.
MIK3K, thanks for your concern. We're in Tokyo so got off pretty lightly. I certainly know a lot more about iodine-131 and weather patterns than I did a month ago though!
I don't have a date for an alpha release yet -- my plans are still up in the air. I'm quite keen to get something out early though (along with Linux versions of my other games), so hopefully can announce something soon.
Everything is on the grid -- objects are first blitted to a voxel buffer and then the whole buffer is drawn to the screen at once. So it's not possible to move anything less than a voxel or to rotate it -- basically the 3d version of a low resolution pixel game.
yes, there's a level & voxel designer built in.
the editor feels a little bit like a sandbox mode.. you can throw in a bunch of items and play with them in god mode. Over time I'll add more stuff to play with which isn't relevant to the main arcade game side of things.
Transparent surfaces are fun but slightly slow and not as useful as I imagined. The only variation in surface material I'm using so far is a reflective one, just by flipping all the voxels and tinting them (click for a larger version)
Level and Voxel designer built in . . . . SOLD!!!!
Actually, I was sold with the first video, but whatever.  The excitement is renewed.
Please, where do I insert the money for this?  I cannot seem to find the buy button anywhere.  Hurry please, playstation network had my credit card information and I don't know how much longer I will have money in my bank account.
@macattack It's written in C with a software renderer. I'll post some details on the workings of the engine closer to release
The 3d models are stored just with a simple raw dump of colour values, much the same way raw 2d image formats do. In fact, internally I represent a voxmap as a vertical stack of 2d images.
I have a compressed version of the file format too for sharing user-made levels, which is encoded in the form of a .PNG file with a thumbnail.
Alright, I wonder that you might have tried to use RGBA then, for transparency, on those 2D images you stack.
Older games didn't have  transparency, though, so I think it would add to the charm not having it here either.
Do you think you could release a new demo video soon..? I'm so eager to get this game!
Wow! I spent over a year working on a voxel engine (and the associated gameplay). In the end I abandoned it because I couldn't get the performance to an acceptable level. Here's the dev blog if anyone is interested
First off, this looks great, awesome job! Secondly, I'd like to see if I could pick your brain without revealing to much of your implementation.
You said that each scene you are calculating whether a voxel is on the "surface" or rather if it has an empty neighbor cube. You also stated that each map is basically a stack of PNG images. So does that mean you are using array based indexing to find neighbors.
The reason I am asking is I am tinkering around with a voxel based engine. I store my data in an octree so I can merge voxels an octree node either has all or no voxels. My huge bottleneck is walking the octree each pass, so I am very interested in other people's approaches to this problem. http://www.youtube.com/watch?v=wzelLGZ7W0s&feature=related
Wow, this thread is fully of really interesting technical discussion! I'm totally amateur so even this basic stuff is almost too much for me, but it's still really cool to read all of this.
Zep, I hope you consider talking a little bit about the behind-the-scenes aspect of this before it comes out. I know you don't want to spend a long time writing up stuff, and you also don't want to give away all your trade secrets ;) but, even if it's just simple stuff, we'd love to hear about it!