Skip to main content

NetClusterStarter

The NetClusterStarter Demo allows you to explore the basic features of NetCluster and can also serve as a template if you're creating a game from scratch.

This demo demonstrates the changes needed to add clustering support and includes:

  • Usage of NetCluster and ClusterServer
  • Basic Player/NPC configuration for inter-server replication
  • Inter-server RPC functionality
  • Simple player migration configuration

Building the Project

Before trying this example, make sure you follow the Installation guide to compile Unreal Engine.

Topology

The demo uses the following server setup:

  • 1 Level Server (required for managing the level)
  • 1 Visibility Server
  • 3 Load Servers (for handling players)

Features

In the demo level, you can test basic inter-server replication and RPC, as well as seamless player migration between the 3 load servers.

NetClusterStarter Demo screen shot

The demo includes a simple map to:

  • Test multiple player logins, with automatic replication across servers.
  • Test player migration. Three collision boxes labeled Luna1, Luna2, and Luna3 trigger migration to the corresponding server when a player collides with them.
  • Test RPC functionality. Left mouse button clicks trigger a test RPC call.

Setup

Before launching the server, you'll need to configure account settings and server configuration files.

Configure Account Settings

Follow the Configure NetCluster section to set up your account information.

Configure Servers

Since this demo uses 5 servers, you'll need 5 configuration files. Following the guidelines in Configure Servers, provide a unique DomainID, ServerUID, and RegionID for each server. Here's a suggested configuration:

  • DomainID: Consider using your project name as the base.
  • ServerUID: Must be unique within the domain; consider using your host server name as the base.
  • RegionID: Also must be unique within the domain; it can be part of the ServerUID's suffix if desired.

Assuming your server hostname is "Luna," the configurations might look like this:

Level Server:

{
"ServerUID": "Luna-LevelServer",
"DomainID": "LyraNetClusterTest1",
"ServerFlags": "LevelServer",
"RegionID": 1
}

Visibility Server:

{
"ServerUID": "Luna-visibility",
"LevelServerUID": "Luna-LevelServer",
"DomainID": "LyraNetClusterTest1",
"ServerFlags": "HostVisibility",
"RegionID": 7
}

Load Server 1:

{
"ServerUID": "Luna1",
"LevelServerUID": "Luna-LevelServer",
"DomainID": "LyraNetClusterTest1",
"RegionID": 2
}

Load Server 2:

{
"ServerUID": "Luna2",
"LevelServerUID": "Luna-LevelServer",
"DomainID": "LyraNetClusterTest1",
"RegionID": 3
}

Load Server 3:

{
"ServerUID": "Luna3",
"LevelServerUID": "Luna-LevelServer",
"DomainID": "LyraNetClusterTest1",
"RegionID": 4
}

You can launch the servers using the run_editor_server.bat included in the project. Be sure to update UNREAL_ENGINE_PATH and CONFIG_FILES_PATH before using this script.

Replication between servers

Replication and RPC setup is straightforward. Open the editor and navigate to Content -> ThirdPerson -> Blueprints to view the character script.

Player Migration

For player migration setup, check Content -> ThirdPerson -> MigrationGate.