Server Architecture

uSuite/UnityPark is a very flexible and extensive suite of tools for making multiplayer games. It can however be difficult to first envision how to use these tools in concert to build complete server systems. On this page you find example server architectures for a couple of different types of games, to give you a starting point for your own architectural designs.

FPS Server Architecture

In the diagram above, you see the client side at the top, and the server side at the bottom. The figure shows all the various components that make up UnityPark Suite and how they interact with each other. Arrows indicate communication paths.

  1. The Client is an instance of the Unity Engine, either as a standalone player, a web player or a mobile phone player.
  2. The Server is also an instance of the Unity Engine. uLink is the most powerful network framework extension for the Unity Client and the Server, in terms of features as well as of usability.
  3. uLobby is a complete lobby solution, which thousands of players can connect to in order to socialize and team up before selecting a game instance. You may use this with either uGameDB or a custom SQL backend.
  4. uGameDB is a database server layer for Riak that integrates with uLink and uLobby in Unity to provide a powerful, reliable and scalable solution to store game data.
  5. uTest is a distributed system test framework for Unity, suitable for functionally testing your entire system's behavior at the same time (including both servers and clients).
  6. Load Tester is an automatic load testing tool that helps you analyze how your servers stand up during heavy pressure, while scaling over multiple cores. It enables reuse of your Unity code through a Unity emulation layer.

Authentication is not included in this picture, but you may of course let uLobby and/or uLink connect to external payment/customer verification system.

Zoned MMO Server Architecture

In the diagram above, you see the client side at the top and the server side at the bottom . The figure shows all the various UnityPark Suite components and how they interact with each other. Arrows indicate communication paths.

  1. The Client is an instance of the Unity Engine, either as a standalone player, a web player or a mobile phone player.
  2. The Server is also an instance of the Unity Engine with uLink, each individual server handling one in-game zone. Servers connect using uLink P2P to handover players and objects between zones.
  3. Several server instances can run on the same uZone2 node (machine) to exploit multiple cores. The node is monitored by a uZone node process.
  4. uZone2 is an instance manager that automatically starts and stops zone instances as needed, and keeps track of available nodes.
  5. uLobby is a complete lobby solution, which thousands of players can connect to in order to socialize and team up before selecting a game instance. You may use this with either uGameDB or a custom SQL backend.
  6. uGameDB is a database server layer for Riak that integrates with uLink and uLobby in Unity to provide a powerful, reliable and scalable solution to store game data.
  7. uTest is a distributed system test framework for Unity, suitable for functionally testing your entire system's behavior at the same time (including both servers and clients).
  8. Load Tester is an automatic load testing tool that helps you analyze how your servers stand up during heavy pressure, while scaling over multiple cores. It enables reuse of your Unity code through a Unity emulation layer.

Connection Sequence for FPS and Zoned MMO Server Architecture

Above, you can see a sequence diagram of how the different UnityPark components communicate over time. Clients begin by connecting to uLobby, which provides a list of all available and running game or chat servers. The client chooses a game server to connect to, for example, and starts gameplay. The different game servers all store persistent data using uGameDB, a scalable database solution based on Riak tailored for use in large scale online games.

Seamless MMO Server Architecture

In the diagram above, you see the client side at the top, and the server side at the bottom. In the middle of between uPikko is acting as an application level gateway. The figure shows all the various components that make up UnityPark Suite and how they interact with each other. Arrows indicate communication paths.

  1. The Client is an instance of the Unity Engine, either as a standalone player, a web player or a mobile phone player.
  2. The CellServer is also an instance of the Unity Engine with uLink, each individual CellServer dynamically handling a part of the world. Clients and objects are load balanced by PikkoServer and seamlessly handed over between available CellServers, preventing scaling problems that typically plague zoned MMOs.
  3. PikkoServer is an advanced MMO backend that enables seamless worlds with tens of thousands of game objects and players, employing sophisticated spatially aware load balancing technology to minimize network communication while distributing high bandwidth and CPU loads.
  4. uLobby is a complete lobby solution, which thousands of players can connect to in order to socialize and team up before selecting a game instance.
  5. uGameDB is a database server layer for Riak that integrates with uLink and uLobby in Unity to provide a powerful, reliable and scalable solution to store game data.
  6. uTest is a distributed system test framework for Unity, suitable for functionally testing your entire system's behavior at the same time (including both servers and clients).
  7. Load Tester is an automatic load testing tool that helps you analyze how your servers stand up during heavy pressure, while scaling over multiple cores. It enables reuse of your Unity code through a Unity emulation layer.