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

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

