Check the Client SDK Documentation for more details on each of the SDK functions and how to run the SDK locally.
Area | Action | Implemented |
---|---|---|
Lifecycle | Ready | ✔️ |
Lifecycle | Health | ✔️ |
Lifecycle | Reserve | ✔️ |
Lifecycle | Allocate | ✔️ |
Lifecycle | Shutdown | ✔️ |
Configuration | GameServer | ✔️ |
Configuration | Watch | ✔️ |
Metadata | SetAnnotation | ✔️ |
Metadata | SetLabel | ✔️ |
Counters | GetCounterCount | ❌ |
Counters | SetCounterCount | ❌ |
Counters | IncrementCounter | ❌ |
Counters | DecrementCounter | ❌ |
Counters | SetCounterCapacity | ❌ |
Counters | GetCounterCapacity | ❌ |
Lists | AppendListValue | ❌ |
Lists | DeleteListValue | ❌ |
Lists | SetListCapacity | ❌ |
Lists | GetListCapacity | ❌ |
Lists | ListContains | ❌ |
Lists | GetListLength | ❌ |
Lists | GetListValues | ❌ |
Player Tracking | GetConnectedPlayers | ✔️ |
Player Tracking | GetPlayerCapacity | ✔️ |
Player Tracking | GetPlayerCount | ✔️ |
Player Tracking | IsPlayerConnected | ✔️ |
Player Tracking | PlayerConnect | ✔️ |
Player Tracking | PlayerDisconnect | ✔️ |
Player Tracking | SetPlayerCapacity | ✔️ |
Additional methods have been added for ease of use:
The client SDK code can be manually downloaded and added to your project hierarchy.
It can also be imported into your project via the Unity Package Manager (UPM). To do that, open your project’s manifest.json
file, and add the following line to the dependencies section:
{
"dependencies": {
"com.googleforgames.agones": "https://github.com/googleforgames/agones.git?path=/sdks/unity",
...
If you want a specific release, the dependency can be pinned to that version. For example:
"com.googleforgames.agones": "https://github.com/googleforgames/agones.git?path=/sdks/unity#v1.38.0",
Download the source directly from GitHub.
Import this script to your unity project and attach it to GameObject.
To begin working with the SDK, get an instance of it.
var agones = agonesGameObject.GetComponent<Code Blind.AgonesSdk>();
To connect to the SDK server, either local or when running on Code Blind, run the async Connect()
method.
This will wait for up to 30 seconds if the SDK server has not yet started and the connection cannot be made,
and will return false
if there was an issue connecting.
bool ok = await agones.Connect();
To mark the game server as ready to receive player connections, call the async method Ready()
.
async void SomeMethod()
{
bool ok = await agones.Ready();
}
To get the details on the backing GameServer
call GameServer()
.
Will return null
if there is an error in retrieving the GameServer
record.
var gameserver = await agones.GameServer();
To mark the GameServer as Reserved for a duration call
Reserve(TimeSpan duration)
.
ok = await agones.Reserve(duration);
To mark that the game session is completed and the game server should be shut down call Shutdown()
.
bool ok = await agones.Shutdown();
Similarly SetAnnotation(string key, string value)
and SetLabel(string key, string value)
are async methods that perform an action.
And there is no need to call Health()
, it is automatically called.
To watch when
the backing GameServer
configuration changes
call WatchGameServer(callback)
, where the delegate function callback
will be executed every time the GameServer
configuration changes.
agones.WatchGameServer(gameServer => Debug.Log($"Server - Watch {gameServer}"));
The Player Tracking feature is currently Alpha, not enabled by default, and may change in the future.
Use the FeatureGate PlayerTracking
to enable and test this feature.
See the Feature Gate documentation for details on how to enable features.
To use alpha features use the AgonesAlphaSDK class.
var agones = agonesGameObject.GetComponent<Code Blind.AgonesAlphaSdk>();
This method increases the SDK’s stored player count by one, and appends this playerID to GameServer.Status.Players.IDs. Returns true and adds the playerID to the list of playerIDs if the playerIDs was not already in the list of connected playerIDs.
bool ok = await agones.PlayerConnect(playerId);
This function decreases the SDK’s stored player count by one, and removes the playerID from GameServer.Status.Players.IDs. Will return true and remove the supplied playerID from the list of connected playerIDs if the playerID value exists within the list.
bool ok = await agones.PlayerDisconnect(playerId);
Update the GameServer.Status.Players.Capacity
value with a new capacity.
var capacity = 100;
bool ok = await agones.SetPlayerCapacity(capacity);
This function retrieves the current player capacity GameServer.Status.Players.Capacity
.
This is always accurate from what has been set through this SDK, even if the value has yet to be updated on the GameServer status resource.
long capacity = await agones.GetPlayerCapacity();
Returns the current player count
long count = await agones.GetPlayerCount();
This returns if the playerID is currently connected to the GameServer. This is always accurate, even if the value hasn’t been updated to the GameServer status yet.
bool isConnected = await agones.IsPlayerConnected(playerId);
This returns a list of the playerIDs that are currently connected to the GameServer.
List<string> players = await agones.GetConnectedPlayers();
The following code causes deadlock. Do not use a Wait
method with the returned Task.
void Deadlock()
{
Task<bool> t = agones.Shutdown();
t.Wait(); // deadlock!!!
}
The properties for the Unity Code Blind SDK can be found in the Inspector.
5
)true
)false
)Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.