rymder 0.8.0

Unofficial agones client SDK
Documentation
// Copyright 2020 Google LLC All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package agones.dev.sdk.alpha;
option go_package = "alpha";

import "google/api/annotations.proto";

// SDK service to be used in the GameServer SDK to the Pod Sidecar.
service SDK {
    // PlayerConnect increases the SDK’s stored player count by one, and appends this playerID to GameServer.Status.Players.IDs.
    //
    // GameServer.Status.Players.Count and GameServer.Status.Players.IDs are then set to update the player count and id list a second from now,
    // unless there is already an update pending, in which case the update joins that batch operation.
    //
    // PlayerConnect returns true and adds the playerID to the list of playerIDs if this playerID was not already in the
    // list of connected playerIDs.
    //
    // If the playerID exists within the list of connected playerIDs, PlayerConnect will return false, and the list of
    // connected playerIDs will be left unchanged.
    //
    // An error will be returned if the playerID was not already in the list of connected playerIDs but the player capacity for
    // the server has been reached. The playerID will not be added to the list of playerIDs.
    //
    // Warning: Do not use this method if you are manually managing GameServer.Status.Players.IDs and GameServer.Status.Players.Count
    // through the Kubernetes API, as indeterminate results will occur.
    rpc PlayerConnect (PlayerID) returns (Bool) {
        option (google.api.http) = {
            post: "/alpha/player/connect"
            body: "*"
        };
    }

    // Decreases the SDK’s stored player count by one, and removes the playerID from GameServer.Status.Players.IDs.
    //
    // GameServer.Status.Players.Count and GameServer.Status.Players.IDs are then set to update the player count and id list a second from now,
    // unless there is already an update pending, in which case the update joins that batch operation.
    //
    // PlayerDisconnect will return true and remove the supplied playerID from the list of connected playerIDs if the
    // playerID value exists within the list.
    //
    // If the playerID was not in the list of connected playerIDs, the call will return false, and the connected playerID list
    // will be left unchanged.
    //
    // Warning: Do not use this method if you are manually managing GameServer.status.players.IDs and GameServer.status.players.Count
    // through the Kubernetes API, as indeterminate results will occur.
    rpc PlayerDisconnect (PlayerID) returns (Bool) {
        option (google.api.http) = {
            post: "/alpha/player/disconnect"
            body: "*"
        };
    }

    // Update the GameServer.Status.Players.Capacity value with a new capacity.
    rpc SetPlayerCapacity (Count) returns (Empty) {
        option (google.api.http) = {
            put: "/alpha/player/capacity"
            body: "*"
        };
    }

    // Retrieves the current player 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.
    //
    // If GameServer.Status.Players.Capacity is set manually through the Kubernetes API, use SDK.GameServer() or SDK.WatchGameServer() instead to view this value.
    rpc GetPlayerCapacity (Empty) returns (Count) {
        option (google.api.http) = {
            get: "/alpha/player/capacity"
        };
    }

    // Retrieves the current player count. 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.
    //
    // If GameServer.Status.Players.Count is set manually through the Kubernetes API, use SDK.GameServer() or SDK.WatchGameServer() instead to view this value.
    rpc GetPlayerCount (Empty) returns (Count) {
        option (google.api.http) = {
            get: "/alpha/player/count"
        };
    }

    // Returns if the playerID is currently connected to the GameServer. 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.
    //
    // If GameServer.Status.Players.IDs is set manually through the Kubernetes API, use SDK.GameServer() or SDK.WatchGameServer() instead to determine connected status.
    rpc IsPlayerConnected (PlayerID) returns (Bool) {
        option (google.api.http) = {
            get: "/alpha/player/connected/{playerID}"
        };
    }

    // Returns the list of the currently connected player ids. 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.
    //
    // If GameServer.Status.Players.IDs is set manually through the Kubernetes API, use SDK.GameServer() or SDK.WatchGameServer() instead to view this value.
    rpc GetConnectedPlayers(Empty) returns (PlayerIDList) {
        option (google.api.http) = {
            get: "/alpha/player/connected"
        };
    }
}

// I am Empty
message Empty {
}

// Store a count variable.
message Count {
    int64 count = 1;
}

// Store a boolean result
message Bool {
    bool bool = 1;
}

// The unique identifier for a given player.
message PlayerID {
    string playerID = 1;
}

// List of Player IDs
message PlayerIDList {
    repeated string list = 1;
}