Aditya's graphics and game related adventures

My ETC Blog

Round 5 - Voxing

Posted by aditya on November 21, 2012 at 1:20 PM

The final BVW round. We could make use of any platform but we needed a game to put on a show.

The voxel scripts are now open-source at


1. The first thing we decided was the art style. It needed to make use of voxels. We could make any game that looked good in voxels.

2. Initially we came up with the concept of doing a game with Construction, destruction and transformation.

Meanwhile, I was prototyping with voxels in Unity to see how well/how many cubes can be handled in unity.

3. With no solid idea for a few days, we eventually decided to make an adam & eve story that took place inside a computer program. BUT soon realized that the gameplay we sketched for that game would be weak. After few more meetings we FINALLY decided to make a ... ... ... 2 player FIGHTING game!

Platform prototyping:

1. We initially prototyped with direct body mapping. 

> We tried mapping the kinect directly with each body part(this was a little glitchy since body parts sometimes got disfugured)

> We triend mapping the PSMove with the hands(this meant no legs)

2. After a few tries with both platforms we decided to go with the Kinect and detect gestures to trigger animations with a minimal lag.

3. We had a lot of gestures such as uppercut, side jab, punch, kick, block for both hands.

Voxel prototyping:

1. I developed a unity script that converted a mesh into a cubes on every vertex point with some given parameters such as cube size, neglect vertex distance, etc...

2. Soon realized that a high-poly model would decrease performance. To overcome this problem I created another script that converted the mesh in voxels but THIS TIME all the cubes were in a single mesh.

What this meant:

> 1 draw call for 1000 cubes instead of 1000 draw calls

> BUT processing each cube would be time consuming since changing the property of 1 cube meant that I need to re-copy all the vertex data into the Big mesh.

3. This problem was overcome by making a hybrid that used more memory. What happens in the game:

> When there is very less processing activate the single mesh voxel object

> Whenever I need to explode or shake or change other properties deactivate(fast one) and activate(dynamic slow one), show the change and then switch back

4. This increased performance and made sure the game ran at an average of 80FPS(update loop)


You need Adobe Flash Player to view this content.


Sound - Brain Kang

2D - Sangyun

3D - Sahana

Programming - Aditya Vijayakumar(me)

Categories: None