Skip to content
This repository has been archived by the owner on Aug 19, 2018. It is now read-only.

ArbiterClientView

David Daeschler edited this page Jan 10, 2017 · 5 revisions

The Arbiter ClientView Object

Halcyon contains what is known as a ClientView object that processes messages from the simulator and is responsible for general communication between a client program and the simulator.

To reduce the responsibility of the Halcyon server to perform message fan-out, we will create virtual client instances for each user connected to the simulator via an arbiter. This will require a higher level protocol between the simulator and arbiter that tags the clients that should receive a message as part of the message body.

We will send messages in batches at a specified rate (30 hz?). This will ensure that if there are multiple (even dozens of) clients requiring the same message, they are queued together within the same quantum of time and sent out as a single flatbuffer.

Initial message support

We will begin by supporting the ObjectUpdate (full update), KillObject, and the TerseUpdate (movement) messages. This will allow users to see the objects in a scene being streamed live to their view as well as view objects moving around the scene.

ObjectUpdate

The UDP ObjectUpdate describes nearly the entire state of a primitive object existing inside a simulator. Much of this data is not really required to display an object, and so when we create a flatbuffer serialized version of this message, we will strip out unnecessary fields

Minimally to support conversion to a babylon flatbuffer, we will require the following: