Unreal Engine Game Server Client Plugin

This is the Unreal Engine Code Blind Game Server Client Plugin.

Check the Client SDK Documentation for more details on each of the SDK functions and how to run the SDK locally.

SDK Functionality

AreaActionImplemented
LifecycleReady✔️
LifecycleHealth✔️
LifecycleReserve✔️
LifecycleAllocate✔️
LifecycleShutdown✔️
ConfigurationGameServer✔️
ConfigurationWatch✔️
MetadataSetAnnotation✔️
MetadataSetLabel✔️
CountersGetCounterCount
CountersSetCounterCount
CountersIncrementCounter
CountersDecrementCounter
CountersSetCounterCapacity
CountersGetCounterCapacity
ListsAppendListValue
ListsDeleteListValue
ListsSetListCapacity
ListsGetListCapacity
ListsListContains
ListsGetListLength
ListsGetListValues
Player TrackingGetConnectedPlayers✔️
Player TrackingGetPlayerCapacity✔️
Player TrackingGetPlayerCount✔️
Player TrackingIsPlayerConnected✔️
Player TrackingPlayerConnect✔️
Player TrackingPlayerDisconnect✔️
Player TrackingSetPlayerCapacity✔️

Additional methods have been added for ease of use (both of which are enabled by default):

  • Connect
    • will call /gameserver till a succesful response is returned and then call /ready.
    • disabled by setting bDisableAutoConnect to true.
    • An event is broadcast with the GameServer data once the /gameserver call succeeds.
  • Health
    • calls /health endpoint on supplied rate
    • enabled by default with 10 second rate
    • disabled by default by setting HealthRateSeconds to 0.

Both of the above are automatically kicked off in the BeginPlay of the component.

Download

Download the source from the Releases Page or directly from GitHub.

Resources

Unreal is a game engine that is used by anyone from hobbyists all the way through to huge AAA Game Stuidos.

With this in mind there is a vast amount to learn to run a production game using Unreal, even before you get to learning how it integrates with Code Blind. If you want to kick the tires with a starter project you will probably be fine with one of the starter projects out of the box.

However as your Unreal/Code Blind project gets more advanced you will want to understand more about the engine itself and how it can be used to integrate with this project. There will be different ways of interacting via in Play In Editor (PIE) versus running as an actual dedicated game server packaged into a container.

There are few helpful links for latest Unreal Engine 5:

If you use Unreal Engine 4, There are few helpful links for it:

Getting Started

This is a SDK inspired by the REST API to the Code Blind sidecars that allows engineers to communicate with the sidecar from either C++ or Blueprints.

Getting the Code

Easiest way to get this code is to clone the repository and drop the entire plugin folder into your own Plugins folder. This runs the plugin as a Project plugin rather than an engine plugin.

We could however turn this into a marketplace plugin that can be retrived from the marketplace directly into the UE editor.

Using C++ (UE5/UE4)

  • Add Plugin (in your own .uproject file)
  "Plugins": [
    {
      "Enabled": true,
      "Name": "Code Blind"
    }
  ],
  • Add Plugin (in your own *.Build.cs)
PublicDependencyModuleNames.AddRange(
    new[]
    {
        "Code Blind",
    });
  • Add component in header
#include "AgonesComponent.h"

UPROPERTY(EditAnywhere, BlueprintReadWrite)
UAgonesComponent* AgonesSDK;
  • Initialize component in GameMode
#include "AgonesComponent.h"
#include "Classes.h"

ATestGameMode::ATestGameMode()
{
	AgonesSDK = CreateDefaultSubobject<UAgonesComponent>(TEXT("AgonesSDK"));
}
  • Use the Code Blind component to call PlayerReady
void APlatformGameSession::PostLogin(APlayerController* NewPlayer)
{
  // Empty brances are for callbacks on success and errror.
  AgonesSDK->PlayerConnect("netspeak-player", {}, {});
}

Using Blueprints (UE5)

  • Add Component to your Blueprint GameMode component

  • This will automatically call /health every 10 seconds and once /gameserver calls are succesful it will call /ready.

  • Accessing other functionality of Code Blind can be done via adding a node in Blueprints. actions

Using Blueprints (UE4)

  • Add Component to your Blueprint GameMode component

  • This will automatically call /health every 10 seconds and once /gameserver calls are succesful it will call /ready.

  • Accessing other functionality of Code Blind can be done via adding a node in Blueprints. actions

Configuration Options

A number of options can be altered via config files in Unreal these are supplied via Game configuration eg. DefaultGame.ini.

[/Script/Code Blind.AgonesComponent]
HttpPort=1337
HealthRateSeconds=5.0
bDisableAutoConnect=true

Unreal Hooks

Within the Unreal GameMode and GameSession exist a number of useful existing funtions that can be used to fit in with making calls out to Code Blind.

A few examples are:

  • RegisterServer to call SetLabel, SetPlayerCapacity
  • PostLogin to call PlayerConnect
  • NotifyLogout to call PlayerDisconnect

Last modified February 28, 2024: initial publish (7818be8)