Переход с GameLift

Если вы хотите перейти с использования AWS GameLift на Edgegap, следующие простые шаги позволят вам запуститься в кратчайшие сроки. Прежде чем начать, мы предполагаем, что:

  • Вы в настоящее время используете AWS GameLift

  • У вас есть рабочая сборка игрового сервера на GameLift

  • Вы уже создали и развернули приложение на Edgegap

circle-info

Вы получите гораздо больше местоположений с решением Edgegap.

Удалите AWS GameLift SDK

Первым шагом к переходу на Edgegap является удаление кода, который инициализирует AWS GameLift внутри вашего игрового сервера. Это нужно для уменьшения накладных расходов и предотвращения ошибок. Код, который вы собираетесь удалить, вероятно, выглядит следующим образом:

Unity (C#)

using UnityEngine;
using Aws.GameLift.Server;
using System.Collections.Generic;

public class GameLiftServerExampleBehavior : MonoBehaviour
{
    //Это пример простой интеграции с GameLift server SDK, которая сделает процессы игрового сервера активными на GameLift!
    public void Start()
    {
        //Определите номер порта (здесь жестко задан для простоты), на котором игровой сервер прослушивает подключения игроков
        var listeningPort = 7777;

        //InitSDK установит локальное соединение с агентом GameLift для обеспечения дальнейшей связи.
        var initSDKOutcome = GameLiftServerAPI.InitSDK();
        if (initSDKOutcome.Success)
        {
            ProcessParameters processParameters = new ProcessParameters(
                (gameSession) => {
                    //Когда создается игровая сессия, GameLift отправляет запрос на активацию игрового сервера и передает объект game session, содержащий свойства игры и другие настройки.
                    //Здесь игровой сервер должен предпринять действия на основе объекта игровой сессии.
                    //Когда игровой сервер будет готов принимать входящие подключения игроков, он должен вызвать GameLiftServerAPI.ActivateGameSession()
                    GameLiftServerAPI.ActivateGameSession();
                },
                (updateGameSession) => {
                    //Когда игровая сессия обновляется (например, при завершении FlexMatch backfill), GameLift отправляет запрос игровому
                    //серверу, содержащий обновленный объект игровой сессии. Затем игровой сервер может просмотреть предоставленные
                    //matchmakerData и соответствующим образом обработать новых входящих игроков.
                    //updateReason — это причина, по которой предоставляется это обновление.
                },
                () => {
                    //Обратный вызов OnProcessTerminate. GameLift вызовет этот обратный вызов перед выключением экземпляра, на котором размещен этот игровой сервер.
                    //Он дает игровому серверу возможность сохранить состояние, связаться с сервисами и т. д. перед завершением работы.
                    //В этом случае мы просто сообщаем GameLift, что действительно собираемся завершить работу.
                    GameLiftServerAPI.ProcessEnding();
                },
                () => {
                    //Это обратный вызов HealthCheck.
                    //GameLift будет вызывать этот обратный вызов примерно каждые 60 секунд.
                    //Здесь игровой сервер может проверить состояние зависимостей и т.п.
                    //Просто верните true, если все в порядке, иначе false.
                    //У игрового сервера есть 60 секунд, чтобы ответить своим статусом здоровья. Если игровой сервер не ответит вовремя, GameLift по умолчанию примет 'false'.
                    //В этом случае мы всегда здоровы!
                    return true;
                },
                listeningPort, //Этот игровой сервер сообщает GameLift, что будет прослушивать порт 7777 для входящих подключений игроков.
                new LogParameters(new List<string>()
                {
                    //Здесь игровой сервер сообщает GameLift, какие файлы загружать, когда игровая сессия завершится.
                    //GameLift загрузит все указанное здесь, чтобы разработчики могли получить это позже.
                    "/local/game/logs/myserver.log"
                }));

            //Вызов ProcessReady сообщает GameLift, что игровой сервер готов принимать входящие игровые сессии!
            var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters);
            if (processReadyOutcome.Success)
            {
                print("ProcessReady success.");
            }
            else
            {
                print("ProcessReady failure : " + processReadyOutcome.Error.ToString());
            }
        }
        else
        {
            print("InitSDK failure : " + initSDKOutcome.Error.ToString());
        }
    }

    void OnApplicationQuit()
    {
        //Обязательно вызовите GameLiftServerAPI.Destroy() при выходе из приложения. Это сбрасывает локальное соединение с агентом GameLift.
        GameLiftServerAPI.Destroy();
    }
}

Unreal Engine (C++)

Контейнеризируйте ваш игровой сервер

Второй шаг при переходе на Edgegap — контейнеризация вашего игрового сервера. Вы можете следовать следующим руководствам:

  • Unity

  • Unreal

Отправьте ваш контейнер в репозиторий

Вам нужно будет отправить ваш контейнер в репозиторий. Вы можете использовать приватный репозиторий Edgegap или любой другой вариант.

Создайте приложение на Edgegap

Теперь, когда ваш контейнер находится в репозитории, вам потребуется создать приложение на Edgegap. Это приложение будет представлять ваш игровой сервер. С этим приложением вы сможете развернуть ваш сервер.

Теперь вы можете развернуть ваш сервер по требованию для ваших игроков!

Последнее обновление

Это было полезно?