I’ve done a lot this past week!
Most my time was spent on the interface and making things very intuitive and quick to build with. I had a bunch of people around the office at StartX as well as my roommates try out some of my builds and got some great feedback.
- Nice looking skybox
- Procedurally generated terrains
- Saving and loading worlds
- A pie menu
- A color mixer
- A painting mode
- Multiple brushes
- A teleport mode for controlerless navigation
- Construction planes now match the normal of the last block face selected
- Fixed a bunch of bugs
In addition to some of these new features I also tried doing endless procedural terrain. While this worked pretty well on the PC, this did not work well on the GearVR.
To to endless terrain you basically create new chunks of blocks at a certain distance as the player moves and remove old ones that are too far away. If blocks were modified, you save the chunks info before deleting it, and whenever you load a new chunk you also load any saved chunks. This all equates to a lot of memory allocations as well as hard drive read and writes. To make things run fast you break up the function so it is only creating or deleting a couple chunks every few frames. Unfortunately in order to get it fast enough to run well on the GearVR I had to stagger this out a lot, meaning once you got to the edge of your map, it would take upwards a minute till the new chunks were all loaded. To load the chunks any faster would cause drops in framerate which luckily aren’t terrible thanks to Carmack’s timewarp, but that’s not acceptable.
So instead of having endless terrain that slowly creates itself I made a design choice to limit the starting map size and create it quickly. While it’s loading there’s a slight framerate drop, but I split the operation accross multiple frames so it’s not too bad. Once the world is loaded though, it’s quite smooth.
Anyways, I’m pretty happy with how VR Vox is turning out, and I’m really excited to actually use the app to build some awesome worlds and see what things other people create!
It’s like MSPaint for VR
Oculus is having a Mobile Game Jam for the GearVR! Of course I couldn’t resist participating.
Wanting to enter as a 1 man show I needed to come up with an idea that would be both fun yet simple(So I can actually do what I intended). Coming up with an idea was tricky, but I knew I wanted to do something that involved being able to create things in VR. After brainstorming hundreds of game ideas, only a few seemed both good and feasible. I ended up deciding to keep things very simple and just do voxel cube building in VR, like MineCraft without the MineCraft. The main problem besides getting a voxel engine to run well on the GearVR is making this an intuitive program to build in using the limited controls of the GearVR’s touchpad. I am of course also providing gamepad support. Once all the basics are done and polished I can add additional features like networked world building and being able to destroy the world using physics objects.
Last Monday, Milestone 1 was due, which was a concept and description of the project. Tomorrow, Milestone 2(Screenshots!) is due. So far I’ve made a great deal of progress!
I’ve created the core Voxel engine! Creating the engine was not terribly difficult, and there’s a wealth of information out there on how to create such an engine. I first built this in Unity 4. Tragedy happened when I built the app and ran it on the GearVR only to find it would freeze every time I added a cube 😦 I guess this is why I haven’t seen any Voxel games for VR yet. I wouldn’t be stopped. Going against the advice that’s been posted from Oculus, I moved the project to Unity 5 to see what kind of luck I would have. Surprisingly Unity 5 works way better on the GearVR! Now my engine was working as intended with no slow-downs. I’m guessing this is because of Unity 4’s physics engine which I’ve read is very slow for non-dynamic mesh colliders.
With it now technically working, I needed to start to refine the interface for building and add some colors. For colors, I am currently using vertex colors so every block can be any color. New blocks are set to random colors. I might eventually use a texture map for the colors, limit it to 16, and add some shading so each cube has some fake AO.
For the interface, I have things working quite well with a bluetooth game controller. The touchpad on the Gear has been more finicky. Trying to detect a swipe, I am tracking the mouse motions over time and the distance of my swipes has ranged from 0.1 to 20, making it hard to determine a good value for detecting swipes. The idea is that you swipe to change between adding and deleting blocks. A single tap adds a block, and if you tap and hold, you can look around to paint blocks on the XYZ plane with matches the view orientation. I’ve also been having some issues with the back button, which will give a buttonDown event, but continues sending this event after the button is released and does not stop until touching the touchpad.
- Adding a pie menu for saving/loading worlds, changing modes between: constructing, painting, building, navigating
- Add a pie menu for selecting colors which are used for creating new blocks and for painting existing ones.
- Add a eyedropper feature for getting the color of blocks.
- Get the DPad on GameController working for changing elevation.
- Make saving/loading work on GearVR(Already works on PC)
- Explore lighting techniques to make look cooler.
- Add a interesting skybox
- Make a intro scene/menu
- Add some music/sounds
- Experiment with adding physics to VR Vox
Since the game currently only works inside of Unity, I decided to record a walkthrough of the game explaining what I made and what went right and wrong
Here are some in-game screens for a game I worked on this semester called Last Days On Mars. I was the art director and created a majority of the art assets. I made the main base, the terrain, the fog and particle effects, the rocket, and the manned rover. Unfortunately the game has a ton of bugs and will only run inside of Unity. I was not in charge of programming unfortunately or else I would post a unity webplayer version here.
Our film is now about 98% done. Will be 100% shortly as our film will be screened on Wednesday at the U’s Machinimafest.
This is a Machinima film I’ve been working on using Source Filmmaker. I modeled the Kitchen Prop, the Salt Shaker, a Candlestick, and Spatula. I created the apartment in Hammer. The animations were done using a Kinect for motion capture and then I go back over to clean them up. This is a beta version of the film and still rough, the final version is coming soon!
Last Days On Mars is a game I am currently working on for my Alternative Game Development Class. I am currently modeling a detailed Spacesuit in Zbrush which I will then retopologize and project the higher res details on to to generating a normal map and textures. I will also be creating the in-game terrain, and whatever else I can.