My entry in the Oculus and IndieCade VR Jam is taking shape. I am creating a casual treasure diving game designed specifically for VR.
Here is the official description:
“LOST LOOT: A casual exploration game designed for VR and the Oculus Rift. It combines relaxing gameplay with an interesting environment and a touch of adventure.
Dive for lost treasure! Search submerged ruins and ancient shipwrecks for gold, jewels, and artifacts. Watch your air supply and be careful how deep you go. The sharks are not your friends so be on your guard!
- Explore a beautiful tropical island surrounded by a vast underwater landscape
- Swim and dive among the many reefs and enjoy the interesting landscape and variety of sea life
- Search ancient underwater ruins both in the shallows and out in deeper waters for treasure and artifacts
- Find all the hidden shipwreck sites and plunder their hoards, but watch out as some are guarded by sharks
- Build your wealth and fame with each discovery or lose it when disaster strikes
- Upgrade your equipment for diving, allowing you to swim faster, stay down longer, and fight off those pesky sharks
- Visit the island again, and again, because ruins, shipwrecks, and treasure are randomly altered each time you visit
- Go to http://www.pixelatedramblings.com to read more on the development blog!”
Here are the three official screenshots:
The first week has been spent primarily on the terrain and underwater system, and integrating the character controller system.
I was able to expand upon some of my World Machine terrain generation experience and Tom’s Terrain Tools knowledge from my island work to get a nice underwater environment produced. I worked out a system to generate elevation and noise based seagrass and coral reefs which gave me some nice basic looking underwater scenery. I pulled material from various asset store nature packs to provide textures, trees, bushes, grass, and detail meshes such as the corals.
I had to spend some time on optimization and this involved a combination of a couple of things. Tuning World Machine output to produce maps that were not too sparse or dense was first. Then I had to refine the amount of trees, bushes, grasses, and detail meshes down to a minimum and optimize these by reducing texture sizes. I also had to get the bending correct for the detail meshes which had to be setup properly by editing the alpha color values of the vertices.
The last stage of the environment setup was to prepare the rocks, ruins, shipwrecks, and props, which will be used in smaller detail areas. These detail areas are built by hand in places throughout the generated terrain. For a given game they are turned on or off to provide some random ruins and wrecks to find. There are also sub variations in these areas that are also turned on or off to give an area some randomness.
I primarily used the ruins and rocks from the Ancient Environment Pack on the asset store and adjusted the color of the rocks to suit the setting and tone of the environment. The props such as debris, random items, and skeletons etc. come from a number of different asset packs purchased on the asset store over the last year or two.
Height is important in the design of the areas and as you go deeper there is more of it. The cool aspect of this is that you swim and float around in these large formations and structures. This is a major element of the casual VR experience provided by the game.
The underwater environment provides smoothness and freedom of movement while allowing you to enjoy heights and experience the scale of structures and terrain, all without the intensity of flying and falling. Of course, being hauled off by a shark is intense, but that is the “light” adventure aspect kicking in!
The underwater system itself is pretty simple right now. It mostly comprises turquoise fog, depth of field, and light intensity, all adjusted for depth. It gives a compelling underwater feel, however there is much missing. Floating particle effects are needed and hopefully I will have time for those. Also random god rays with associated light sources and caustic effects would be nice but there isn’t time for these. I also have to deal with seeing through the water plane while on the surface. This is a particularly annoying suspension of belief shattering issue that is hard to solve. And the simple solution of turning on some global fog while close to the surface will not work as it is messed up by the way the shaders work in the Unity Rift integration. I will probably leave it until last.
The last piece that is currently working and that I want to discuss is the character controller system. Luckily the Mecanim Character Controller System done by RobinS was released just in time after the Unity 4.2 update arrived. I have integrated this and it provides a superb starting point for the swimming system.
I have already made a number of modifications to improve it slightly for VR. The changes include adjusting how the camera forward vector impacts the movement and adding influence from the other stick/mouse to control ascent and descent in addition to providing turning. This gives a very natural feeling swim motion and control and also allows you to look around while swimming in a particular direction.
Other VR specific customization involved turning on and off smoothing of the camera mount at proper times in the character controller system. This allows, for example, the view to not be smoothed when the character falls down and goes into ragdoll mode. You experience what it looks like to actually fall. The smoothing is of course turned on when walking, running, swimming, and even idle, otherwise the view would be jumping all over following the bone movement in the animation with head bobbing and swaying. This of course makes you feel sick instantly, but turning it off for short term things like jumping, diving, or falling down as a ragdoll provide another level of interesting VR tailored experience. I have also been experimenting with the flying mode in the character control system. It is quite fun to launch into the air and zoom around the island at high speed like Neo does in the Matrix. Even more fun is to switch into ragdoll mode when flying and see what happens. I may hide an ancient artifact somewhere that gives the player this power, just for fun.
I am currently in the middle of getting the game mechanics working and trying to build some content – a few ruins and shipwreck sites and reusable/randomizing treasure clusters. it is really time consuming building this content so I am concerned how much I can make to give enough material for replay. It may be on the light side as I need to finish the basic mechanics and then spend the entire next week getting the sea life system, specifically the shark simulator working. I am making fantastic progress with everything but I think I may have bitten too much off with this. I am already getting worn out with too many really late nights pulling things together. Let’s hope I can keep it up for two more weeks. Luckily my day work is light these days.
One final note! The news this week of John Carmack joining Oculus as CTO has been simply earth shattering – I feel personally that this has vaulted Oculus and the Rift, and VR into the center when people think about the future of gaming. People listen and follow when John Carmack talks and acts. He is a brilliant individual and a legend in the computer gaming world. Having him involved will undoubtedly increase the momentum and excitement around this technology. These are exciting times indeed!
I will wrap up with this quote from John’s message to the Oculus community:
“Now is a special time. I believe that VR will have a huge impact in the coming years, but everyone working today is a pioneer. The paradigms that everyone will take for granted in the future are being figured out today; probably by people reading this message. It’s certainly not there yet. There is a lot more work to do, and there are problems we don’t even know about that will need to be solved, but I am eager to work on them. It’s going to be awesome!”
John Carmack – 8/7/2013