A HostSession takes care of the physics, logic and interaction between GameObjects in a Scene. All these changes in the World must get synchronized with the SlaveSession.
All objects in the Guest Session must be assigned to the Host Layer.
The GuestSession is like a dumb client which only receive position and state updates from the HostSession. The GuestSession is mainly responsible for the visuals (displaying a GameObject at a certain place at a certain point in time), audio, controls force feed back (if available) or any other output.
The exception to the above rule are the Experience which must happen at real-time. Experience of Human body part (avatar) calculations and visuals are independant of the HostSession/GuestSession model however an Experience is a child Transform of a Slave. This enables a Master to "move" a Player. The body parts of an Experience are treated like additional "inputs" which the Slave sends to the Master and the Master may or may not react on that.
All objects in the Guest Session must be assigned to the Guest Layer.
The following GameObject types have a special meaning and are only available in a specific Sessions.
|Actor||Host||Responsible for a movable object's logical state, interactions and physics.||A car's RigidBody, scripts and Colliders without the visuals and sound effects.||
|Director||Host||A GameObject that direct (interact) with Actors, but invisible to Guest Sessions.||The check point trigger.||
|Agent||Guest||Responsible presenting Actor's but act like dumb terminals, i.e. contains no state, logic or decision making abilities which are handled by the Actor. Agents are create automatically be the Aw-Sim Framework at runtime.||A dummy that represent where an Actor would have been in the Guest Session.||
|Presentation (Exhibit for external presentations)||Guest||The GameObject that audibly or visually presents the Actor in the Guest Session.||The Renderer, Mesh, Lights, AudioSources and Particle System that presents a car.||Any guest component||
|Static GameObjects||Any||Will be available in both Host- and GuestSession regardless of the Components attached.||The racing track.||Any||Any||Yes|
Example scene hierachy:
Editor Scene (Actors contains previews)
┌─── Game Logic (Director) ├─┬─ Race Track (Static GameObject) │ ├─── Colliders (Static GameObject) │ └─── Decor (Static Presentation) ├─┬─ Car (Actor) │ ├─── Car Colliders │ └─── Car Preview (Non-static Presentation) .
Host Session (A.k.a. "Optimized Scenario" because all previews had been removed except for the static GameObjects)
┌─── Game Logic (Director) ├─┬─ Race Track (Static GameObject) │ ├─── Colliders (Static GameObject) │ └─── Decor (Static Presentation) ├─┬─ Car (Actor) │ └─── Car Colliders .
Guest Session (All logic removed except for the static GameObjects)
┌─┬─ Race Track (Static GameObject) │ ├─── Colliders (Static GameObject) │ └─── Decor (Static Presentation) . ├─┬─ Agents │ └─┬─ Car (Agent) │ └─── Car (Presentation) .
The Components are only allowed on Presentations or static GameObjects:
- Audio Source
- Canvas, Canvas Placer, Canvas Scaler and UI Components
- Particle System
In addition to the above, presentation may also contain the following Components:
- Animations or scripts (that only manipulate the Presentation itself for special effects)
- RigidBodies and Colliders (only for special effects and restricted to the
PresentationLayer so that it won't interfere with the Host Session's physics)