Gaia / CTS: Controlling the snow value at runtime without the weather manager

Here is a quick way to change the snow value in CTS (Complete Terrain Shader), without installing the weather manager.

GameObject terrainGO = GameObject.Find("Terrain");
Terrain terrain = terrainGO.GetComponent();
Material material = terrain.materialTemplate;
material.SetFloat("_Snow_Amount", 2);

I needed this to be able to add the look and feel of the volcano ashes. This parameter “_Snow_Amount” will be slowly incremented after the eruption phase.

Here is a quick peek at the terrain covered in ashes:

Creating a first VR experience with Unity 3D and Steam VR

Disasters is VR simulation of a volcano eruption. You take the rôle of an international agent working for a volcano hazard agency.

You are transported by helicopter to the volcano island and must follow the central agency instructions. But as you do, the worst happens… the volcano enters its eruption phase. And it is an explosive one.

Will you be able to protect all the citizens?

Challenges

The challenges with this projet are immense… I have to learn C# along the way of learning litterally everything that is required to build a game… but also having to understand the caveats of VR developpement and all of its optimization, requirements and restrictions due to the target Framerate of 90FPS.

ALL IN ONE FIRST GAME PROJECT.

I wanted a technological challenge, I found one.

Lights

VR games must use a minimum of lights sources, Unity light renderer supports 8 realtime lights, every texture and lightning should be baked (a term refering to “cached” as opposed to “realtime computation”). Valve created their own renderer in Unity. They say it is a real process saver and can support up to 18 light source. They have made a tremendous job because the lab is one hell of a well made VR game. It is stable and very confortable. It is one the most liked VR game on Steam of all time. I still play it one year after I first tried it.

So without realtime lights and without atmopheric effects (like a car light that creates a beam of light through the fog…) it will be a real challenge to create a heavy visual atmosphere during the volcano eruption phase. Also out of reach, post-processing effects like HDR filters are out of the loop because they add an extra layer of computing at the very end of the rendering process.

POLYS

Another important way of getting high refresh rates per eye is having less objects  in the game, and the objects that you need must be “Low poly”. A poly refers to a single flat geometric face. 3D models can contain thousands of polys.  The lower the number of faces, the faster the games renders. So, you ask, is your volcano gonna look like a minecraft pyramid? Not at all! In fact, it almost looks the same as real objects. If the artist is a good modeler, his/her work will be very similar either in hi or low poly count. The magic happens with the texturing. VR is the perfect match for PBR textures which are realistic photos in real world placed on  3D models. This picture shows how little you can tell the difference from hi or low poly:

If you have time to spare, look at those models on sketchfab. You will witness the revolution in generating 3D models from pictures. It is a technique called photogrammetry.

The solution to a dark atmosphere in VR?

I think the solution lies in the feelings. VR is about tricking the brain to BELEIVE you are in the place it shows you. Anybody who experienced the Montain in the Lab knows what is feels to stand near the mountain edge. It feels real.

If the VR headset makes you beleive what you see, I think its the sounds that creates the atmosphere. Movies trick us all the time. They raise our stress levels, makes us cry and feel all sorts of feeling by carefully choosing sounds and songs. Listnening to a movie on mute is like eating with your nose pinched… It is fad, it is missing something.

So I will bet BIG on sounds to create an intense atmosphere. It is important to mention that sounds are cheap on processing power. From my perspective, it is a no-brainer to will invest a lot of time searching and digging good sound effects of volcanoes in social medias, blogs, channels and try to capture the essence what this experience should sound like.

First personnal satisfaction!

I would say the most satisfying part of creating this VR game yet is the helicopter ride. It took me several experimentation with different techniques:

  • Simulate a flying controller
    • I did not trust the game to run 100% smooth and it could generate audio dis-synchronization
  • Using motions paths
    • The path was quite complicated to edit. Applying changes was too much time consuming
  • Triggering iTween motions
    • I was not satisfied with the controls on the easing of the motions, but it looked great!
  • Creating a timeline
    • Mixing object animation, triggering character movements and syncing sounds in one linear tool work really well. I mean really, really well.

The choosen option was to create a Unity Timeline. It took me 2 days to adjust all the parameters and it was so worth it. I tried to set every details right, but there is still room for smoother transitions, but for now, it seems pretty convincing.

I am now focussing the teleporting the player, and finding solutions for minimal restrictions and giving the player all the liberty that it wants. I know for sure that the players will want to go the top of the volcano, so I will let them go up there… and mabe they will discover something interesting… who knows? 😉

But it won’t be as easy as clicking and teleporting… I will cook up a little challenge.

Are they not what games are for? Challenging the player and the developper?