Strix Architecture Overview

Strix is built out of several components:

  1. Strix Server: The server-side application.

  2. Strix Cloud: The cloud solution to use Strix Servers as a service, accessible through the Strix Cloud web interface.

  3. Strix Net/Strix Client: The C# client libraries that provide in-game functionality.

  4. Strix Unity SDK: A plugin for Unity game engine to use STRIX features.

Strix Server and the Strix Cloud

After you have created a new application on Strix Cloud, you can add clusters of servers. Clusters are groups of room servers connected to a central Master Server.

Master Servers

Servers in Strix can be of two types: Master and Room. Master servers contain the current information of each connected Room Server, and the rooms on those servers. The master acts as the entry point for a given cluster; clients can perform search operations on it to look for specific rooms or Room Servers.

Room Servers

Room Servers run rooms that players can join. They are responsible for routing communications between members in rooms and holding information on each room member and room properties. Room Servers each can contain many different rooms. The creation/deletion of rooms is handled by your application, and Room Servers can be configured to limit room counts or messages per second through the Strix Cloud interface.

Rather than running an instance of a given map or game, Room Servers maintain lists of players and handle messages between them. Every individual client has their own game state, which is updated by different messages from other players, routed through the servers. Strix servers handle permissions, connections, routing, and room/client property management.

Note

Master Servers can also be Room Servers, useful for simple test clusters.

Strix Net/Strix Client

The client-side libraries for STRIX that provides functionality to its Unity SDK. These libraries send and receive messages to and from the Strix Servers. They also include some specific functionality for in-game features such as matchmaking, movement interpolation, and replica synchronization.

Strix Unity SDK

We provide an SDK for Unity game engine so that developing with STRIX is simple and easy and fits into your specific development process, without the need to learn any new tools or languages. The Strix Unity SDK interfaces lower-level C# classes in Strix Net/Strix Client and the higher-layer Unity components. Most of the SDK functions are exposed through a StrixNetwork singleton and the StrixBehaviour abstract class.

Network transport

STRIX supports several network transports. The most common transport is TCP, which provides a bidirectional reliable communication channel with minimum overheads.

Through the server-side configuration, STRIX supports some other transports. The most significant one may be WebSocket, which is a web-friendly bidirectional protocol. Unity SDK uses WebSocket to support WebGL platforms (HTML5 clients). (See How to Create an HTML5 and WebGL Client for details on WebGL support.)