6.1. Server

6.1.1. Introduction

TeleportServer is a library that provides server functionality in conjunction with a real-time game or simulation engine. The library is usually dynamically-linked, and can be controlled from engine-side entirely by means of the functions that the dll exports. Therefore there is no need to include C++ headers from the server library engine-side, and indeed the engine need not be in C++.

6.1.2. API

The server library’s exported functions are described below. These global functions are declared as exports.

6.1.2.1. Structure

6.1.2.2. Preparation

In order to start a server session, it’s necessary to prepare the data - objects and resources - so it is ready to be streamed to connecting clients. On the engine side there will often be a user interface for this - see for example

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.3. Lifecycle

flowchart TD
        subgraph MainInitialization
                A(Server_Teleport_Initialize)
        end
        subgraph MainLoop
                B(Server_Tick)
        end
        subgraph EndSession
                C(Server_Teleport_Shutdown)
        end
        MainInitialization --> MainLoop("Main Loop")
        MainLoop --> EndSession
        MainLoop ---> MainLoop

The lifecycle of a server session is controlled by these functions:

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenstruct: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.4. State Management

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.5. Axis Conversions

Various axis conventions are used in different applications, game engines and API’s. The reference API defines avs::AxesStandard to represent the possible standards that can be used.

../../_images/AxesStandards.png

The API provides conversion functions to transform between axis systems .. doxygenfunction:: Server_ConvertTransform

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.6. Memory

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.7. Setting Properties

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.8. Setting Delegates

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.9. Video

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.2.10. Audio

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenfunction: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.3. Classes

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenstruct: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenstruct: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

Warning

doxygenclass: breathe_default_project value ‘TeleportXR’ does not seem to be a valid key for the breathe_projects dictionary

6.1.4. Networking

Each client connection contains a pipeline that gathers data for sending to the client, and distributes incoming data from the client. This pipeline is distributed over threads, which communicate using avs::Queue pipeline nodes.

flowchart LR
        subgraph "Network Thread"
                H(Network Sink)
        end
        A(Video Queue) -->|1| H(Network Sink)
        B(Tag Queue) -->|2| H
        C(Audio Queue) -->|3| H
        D(Geometry Queue) -->|4| H
        E(Command Queue) -->|5| H
        subgraph "Geometry Encoding Thread"
                F(Geometry Encoder)
        end
        F(Geometry Encoder) --> D
        H -->I(Message Queue)
        subgraph "Main Thread 2"
                J(Message Decoder)
        end
        I --> J(Message Decoder)
        subgraph "Render Thread"
                K(Video Encoder)
        end
        K --> A
        K --> B
        subgraph "Main Thread 1"
                L(Command Encoder)
        end
        L --> E