Сохранение состояния
Узнайте, как управлять постоянными мирами с круглосуточными развертываниями 24/7 на Приватные флоты.
Многие жанры (MMO, песочницы, социальные игры) используют постоянные миры, чтобы позволить игрокам:
встречаться и общаться с новыми друзьями; развивать органические сообщества игроков,
исследовать живой открытый мир, заполненный пользовательским контентом, размещённым игроками,
участвовать в эпических рейд-боях, длящихся часами, с большими группами или целыми гильдиями.
Изучите стратегии по обеспечению наилучшего игрового опыта, контролю затрат и устранению разочарования игроков из‑за простоев или откатов. Улучшите традиционную модель серверов, привнеся преимущества edge‑вычислений, упакованные для простого использования разработчиками игр.
✔️ Подготовка
Чтобы обеспечить постоянные, непрерывные развертывания 24/7:
создайте новую (или обновите существующую) версию приложения через наш API,
укажите
"max_duration": -1чтобы предотвратить автоматическое завершение через 24 часа,
Используйте API развертывания приватного кластера чтобы запустить стендбай-серверы на Сохранение состояния.
Выберите между виртуальными машинами (Performance) или конфигурациями Bare Metal (Overdrive).
Протестируйте масштабирование серверов и процесс завершения чтобы проверить надёжность контроля затрат. Состояние сервера, хранимое в памяти, будет потеряно после остановки развертывания, см. Сохранение состояния.
🔑 Владение сервером
Изучите плюсы и минусы современных и традиционных моделей владения с особенностями edge‑вычислений.
Хостинг студии
Хостинг серверов традиционно управляется студией, которая покрывает стоимость хостинга из доходов от игры.
👍 Преимущества
прозрачное ценообразование продукта — стоимость хостинга покрывается лицензией/подпиской игрока,
сильная совместимость клиент/сервер с слабо связанными клиентами, сервисами и масштабированием,
более устойчивая к мошенничеству и реверс‑инжинирингу благодаря закрытой природе серверного кода.
👎 Недостатки
поддержка моддинга сообщества ограничена для обеспечения целостности и стабильности сервера.
Сообщественные серверы
Позвольте вашим игрокам размещать и финансировать собственные серверы и устраните необходимость в аренде у третьих лиц. Направляйте доход через вашу студию вместо третьих сторон, не имеющих понимания качества пользовательского опыта.
👍 Преимущества
расширенная поддержка моддинга через кураторский список модификаций Приложения и версии,
улучшенная обратная связь от игроков благодаря более тесному сотрудничеству с сообществом,
снижение финансовых рисков за счёт того, что игроки покрывают затраты на хостинг.
👎 Недостатки
больше операций для студии — модерация запросов игроков и сбор платежей,
слабее совместимость клиент/сервер из‑за увеличения числа модифицированных версий,
склонность к мошенничеству из‑за распределённой кодовой базы и возможности реверс‑инжиниринга.
🥛 Ёмкость и масштабирование
Изучите продвинутые методы оптимизации доступности серверов, стоимости хостинга и качества обслуживания.
Ёмкость
Развёртывания не отслеживают и не управляют активными соединениями игроков после вас Развертывания чтобы дать вам полный контроль и свободу реализации любой архитектуры.
Реализуйте управление ёмкостью, чтобы обеспечить, чтобы ваши серверы:
максимально экономили средства — проводили бенчмаркинг и эффективно использовали ресурсы сервера,
обеспечивали плавный игровой процесс — предотвращали перегрузку серверов слишком большим числом одновременных игроков,
избегали плохих отзывов из‑за падений — обнаруживали и обрабатывали неожиданные исключения.
Чтобы обеспечить эффективное управление ёмкостью серверов:
освобождайте слоты для игроков, если игроки, сопоставленные с игровым сервером, не подключаются в течение нескольких секунд,
чаще отправляйте минимальное сообщение heartbeat от клиентов на сервер для отслеживания активности,
отключайте клиентов и освобождайте слоты игроков, если в течение нескольких секунд не обнаружена активность,
предотвращайте добавление игроков на серверы с полной загрузкой и отсутствием доступных слотов.
См. для автоматизированной обработки ёмкости с нашим управляемым сервисом.
Масштабирование вверх
Масштабирование постоянных серверов не требует «угадывания» регионального трафика или стоимости серверов. Резервируйте Приватные флоты ёмкость для мертвого периода и автоматически переполняйтесь в облако во время неожиданных пиков.
Реализуйте стратегии масштабирования серверов, чтобы:
обеспечивать крупномасштабный хостинг при тщательной защите от злоупотреблений,
минимизировать трату средств на простои резервных серверов,
предотвращать длительные очереди, быстро реагируя на рост спроса игроков.

Ключевые моменты интеграции
Клиенты интегрируют Scaling Authority — Подбор матчей, Браузер серверов, или кастомное решение.
Обнаруживайте других игроков, резервируйте ёмкость на работающих серверах или запрашивайте новые серверы при необходимости.
Scaling Authority назначает работающие серверы или запускает новые для обслуживания игроков.
Сервер в реальном времени уведомляет Scaling Authority о старте/остановке сервера и изменениях подключений игроков.
Scaling Authority удаляет (истекает) устаревшие записи об неотзывчивых (упавших) серверах.
Клиенты подключаются и устанавливают игровые сессии напрямую с сервером, переходя к игровому процессу.
Мы настоятельно рекомендуем масштабировать на основе количества подключений вместо физической загрузки (CPU и RAM), поскольку мгновенные колебания физической нагрузки могут привести к непредсказуемой доступности.
Масштабирование вниз
Эффективные политики уменьшения масштаба важны для оптимизации затрат, но выключение серверов без осторожности может негативно повлиять на игровой опыт. Учтите эти факторы и протестируйте изменения перед выпуском:
Надёжно ли определение активности/отключения игрока?
Означает ли отсутствие ввода надёжно отсутствие активности игрока? Игроки часто используют ботов, макросы и другие приёмы, чтобы имитировать активность и поддерживать активное подключение, чтобы избежать очередей.
Есть ли действия, которые активные игроки совершают часто и которые трудно подделать?
Является ли использование ботов или макросов проблемой или особенностью для Сохранение состояния серверов?
Легко ли и быстро ли обратимо выключение серверов (восстановление масштаба вверх)?
Достигнув Развертываниявашему серверу может потребоваться дополнительное время для инициализации движка и Сохранение состояния (восстановления состояния). Возникают ли у вас дополнительные расходы на вычисления или передачу данных с игровыми сервисами? Влияет ли время ожидания на игровой опыт?
Можете ли вы скрыть загрузку сервера сценой загрузки, мини‑игрой, лобби или другими средствами?
Привязаны ли игроки к конкретным экземплярам серверов или они могут легко мигрировать?
Как подключение к другому серверу влияет на учётную запись игрока, историю покупок, социальный опыт, прогресc, инвентарь и другие аспекты игрового процесса?
Проверьте ваши Сохранение состояния и убедитесь, что критические данные не теряются.
Реализуйте автоматизированные методы или инструменты для игроков для восстановления критических данных.
Обеспечьте человеческую поддержку и информируйте ваше сообщество о простоях и проблемах.
🔎 Обнаруживаемость
Чтобы найти активные серверы, принимающие новых игроков, реализуйте один или несколько методов обнаружения:
Позвольте игрокам просматривать серверы и выбирать из списка с Браузер серверов.
Запускайте новые игры, когда собирается достаточное количество игроков Подбор матчей.
Добавляйте игроков, чтобы замещать ушедших в существующих матчах с помощью бэкфилла.
💭 Конфигурация и состояние
Интегрируйте сервисы для задания начальных требований к серверу и управления состоянием игроков и серверов.
Управление конфигурацией
Конфигурация относится к начальным данным, передаваемым вашему серверу при развертывании:
переменным, внедряемым для определённой среды:
например, данные совместимости клиент/сервер,
параметры интеграции третьих сторон, ключи и секреты.
Конфигурация неизменяема — она читается один раз после запуска сервера и не меняется далее.
Управление состоянием
Состояние относится к данным, описывающим результат серии предыдущих действий игроков и событий сервера:
подключение игрока, изменения состояния, контролируемые игроком (например, Pawn),
изменения, связанные с объектами, содержащимися в уровне/сцене (например, Actor, Игровой объект),
изменения, связанные с режимом игры, состоянием игры, или игровой сценой информацией.
Данные состояния часто меняются. Клиенты выборочно обновляются релевантной информацией серверной авторитетностью.
Выполняйте частые резервные копирования состояния, чтобы предотвратить потерю данных в случае неожиданных проблем клиента или сервера:
асинхронно в реальном времени с использованием стороннего сервиса, например, Nakama от Heroic Labs,
при запуске или остановке клиента/сервера, в виде десериализованных файлов состояния в облачном объектном хранилище.
Игровые объекты обычно имеют владельца, который ими управляет; это может быть либо сервер, либо игрок.
Объекты, принадлежащие серверу
Объектами, принадлежащими серверу, можно управлять только с сервера. Подключённые игроки имеют ограниченный доступ на чтение к объектам сервера. Обычно объекты сервера не разделяются с другими серверами.
Объекты, принадлежащие серверу, могут быть загружены заменяющим сервером в случае неожиданного сбоя сервера. Используйте ID развертывания для идентификации вашего нового файла сохранения при первом запуске и для хранения состояния объектов, принадлежащих серверу.
Объекты, принадлежащие игрокам
Объектами, принадлежащими игрокам, могут управлять и игроки, и сервер. Назначение владения постоянными объектами игрокам облегчает их миграцию на другие серверы в будущем.
Резервируйте состояние объектов, принадлежащих игроку, на устройстве игрока или на бэкенде игры между игровыми сессиями.
Предотвращайте мошенничество, проверяя изменения через серверную авторитетность. Авторитет и владение могут быть разделены.
Цели восстановления
В случае проблем некоторые категории данных могут быть более чувствительны к потерям, например:
данные учётной записи, подписки, покупок и микротранзакций — критические,
данные прогресса, достижений, таблиц лидеров и инвентаря — важно,
данные обнаружения мошенничества, модерации, производительности и отслеживания ошибок — важно,
данные о поведении игроков, социальные, чат‑данные — низкая важность.
Реализуйте восстановление покупок из независимого источника истории транзакций для лучшего опыта.
Мы настоятельно рекомендуем обсудить следующее внутри вашей команды:
категории данных, обрабатываемых в ваших игровых клиентах и серверах,
важность и чувствительность каждой категории для вашего бизнеса и игроков,
Recovery Point Objective (RPO) — допустимый объём потери данных до возникновения серьёзного ущерба,
Recovery Time Objective (RTO) — допустимое время простоя до возникновения серьёзного ущерба.
👀 Наблюдаемость
Долговременные постоянные серверы порождают новые проблемы наблюдаемости, в частности обнаружение аномалий в мониторинге, логировании и отслеживании багов.
Мы настойчиво рекомендуем реализовать оповещения о перезапусках серверов чтобы получить большую видимость проблем.
Наш Хранилище конечных точек интеграция логов только передаёт логи после Развертывания, добавьте пользовательские логи и отслеживание ошибок (например, Sentry) для устранения частичных сбоев и ошибок.
Рассмотрите резервирование Приватные флоты резервной ёмкости для игр с предсказуемыми шаблонами трафика.
Последнее обновление
Это было полезно?

