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

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

