To avoid the motion sickness that often occurs when using virtual reality devices, many VR games place the player inside a cockpit or some kind of vehicle that gives the brain an explanation for the fact that the body is sitting in a chair while things seem to be moving around him. We thought that this might also work for underwater diving scenarios, where the player holds a diving “torpedo” that drags him. In the end, this worked remarkably well, none of our test users experienced motion sickness.
To limit the effort we had to put in the world design, we made a cave diving simulator where the goal is to find an exit out of the cave.
The game can be controlled with a Wii remote control, where the Nunchuck device controls the player movement and the Wii remote itself is used as a flashlight.
All code in the game was written from scratch, only some basic libraries were used, like OpenGL and a library for the Wii control support.
Other notable features of the diving simulator are:
- Precomputed global illumination
- Swarm simulation for fishes
- A custom underwater post-process that creates a grainy depth-of-field effect
- Triplanar-projection texturing and lighting of the cave walls
- A really nice “dirty lens” post-process shader
- Smooth terrain level of detail with tessellation
I worked primarily on the rendering effect and overall structure of the software. The development was done by a team of five people. We met once every two weeks and developed everything in a quick-and-dirty fashion, which lead to great results with relatively little time spent.