Переход с 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 отправляет запрос на активацию серверу игры и передает объект игровой сессии, содержащий свойства игры и другие настройки.
                    //Здесь сервер игры должен предпринять действия на основе объекта игровой сессии.
                    //Когда сервер игры готов принимать входящие подключения игроков, он должен вызвать GameLiftServerAPI.ActivateGameSession()
                    GameLiftServerAPI.ActivateGameSession();
                },
                (updateGameSession) => {
                    //Когда игровая сессия обновляется (например, в результате бэка Fill FlexMatch), 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

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

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

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

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