Editor’s Note: In this weekly column, David Robustelli will breakdown the latest rapid prototype he and his team at CapitolaVR have created for VR and/or AR. They are responsible for games like Duckpocalypse as well as prototype projects such as HoloLens Golf, Gear VR Mirroring, and Pokemon GO for HoloLens. Check back each weekend for new prototypes! You can see the previous entry here.
VoxelVaders is a game where the player has the ability to draw and shape his own objects to use as weapons and shields. These objects are used in the game as defensive items against hordes of cube-like invaders. The player can smash practically everything in the game from throwing their own creations to smashing drones together.
The concept started with a basic voxel engine. The engine was created without a specific goal and just to do some testing at first. Later when it worked quite well we started to think about the game design, which is never easy especially when you only have one week from scratch.
The initial concept was about building your own imagination which unintentionally looked way too much like SculptVR with a bit of Minecraft. The following concept was a “build and destroy” game; the player starts in a voxel city and has to build and destroy as much as possible in a very short time. With this concept performance played a very big role as every destroyed block was flying around in the game. After some brainstorming and tweaking we came to the current concept where building, destroying, and defending played a big role. The final game concept looks very much like the first concept but by adding some logic to the waves of enemies the game now has an actual beginning and ending.
For the drawing, a custom voxel engine is used. This basically means every creation has a 3D grid (array) of values determining whether it is solid (drawn) or not. This is instated every time the player draws a new object. When drawing, the affected positions are calculated in the grid and changed to be solid. Then the objects generate a procedural mesh based on the info of the grid. This is done by checking each cube in the grid and looking at whether or not its neighbors are solid. When needed it adds a face (quad) to the mesh info. When the player stops drawing it no longer affects the created chunk, however it remains a voxel grid so it can still be changed.
All other objects in the game do not use voxels. The invaders are created in Unity with a lot of different cubes, then combined to a single mesh which is the moving enemy. When the enemy is destroyed it’s deleted and then spawns the non-combined object which contains a bunch of separate cubes. All the cubes have a rigid body making it fall and travel with the velocity it had when it was destroyed, creating a nice effect. We expected the performance to be fairly bad because of the amount of actual flying cubes, but it all turned out pretty well and runs very smooth.
Future plans for this game would be structured levels introducing new enemies as well as different objectives ranging from bosses to a hive which has to be destroyed. Another idea is to make the drawing system better in the form of shape recognition so you can actually draw different objects with different behaviors like boomerangs, guns etc.
This is a guest contribution by David Robustelli, Head of Digital at CapitolaVR.