Skip to content

Synchronization

Dominik Winkelbauer edited this page Jun 21, 2017 · 2 revisions

Overview

Concept

Synchronization is one of the major issues when you try to run a Unity project on a CAVE. To get an idea of how our Unity package tries to overcome those problems, we provide a detailed description of our synchronization concept.

More...

Synchronized modules

Each of the following sites describes the synchronization process of one central topic and how you have to adjust your code to get it ready for CAVE.

Input

The primary idea of our concept is to synchronize user inputs across the cluster. We provide information about Axis, Buttons and Keys in the same way as you are used to in classic Unity.

More...

Time

As the time used for rendering can be different across multiple machines, we provide synchronized values for e.q. deltaTime or totalTime.

More...

Physics

One the major issues you run into when trying to do synchronization in Unity is keeping physical objects in sync. So this chapter explains how to synchronize transformations.

More...

Collision & Trigger

As we have to synchronize transformations we also need to synchronize collision- and trigger events to make sure they all get activated in the same frame on every slave/master

More...

Particles

If you are using particles in your scene, their states should also be synchronized. Read this chapter about how our package provides particle synchronization.

More...

GUI

The default GUI of Unity is not often used in virtual reality, but nevertheless we provide a few basic methods to synchronize GUI events.

More...

Animations

Similar to particle animations our package also support basic synchronization of animations.

More...

What does not work in general?

  • Switching between multiple scenes might not work. So far we only tested one scene applications.
  • Never use FixedUpdate() as those are called by the non-deterministic Unity physics engine.

Read the documentation of the above mentioned module to learn more about what our package does not support.

Clone this wiki locally