Как работать с терабайтами анимации и синхронизировать игроков со всего мира — советы для GameDev-компаний. Часть первая

Где хранить терабайты игрового контента, как расположить гейм-серверы на одинаковом расстоянии от всех пользователей и прокачать диалоги персонажей — рассказывает Тимур Баязитов, директор по работе с индустрией Media&Entertainment Yandex Cloud.

Тимур Баязитов
Директор по работе с индустрией Media&Entertainment Yandex Cloud

Ещё в 2022 году Россия вошла в топ-5 стран по потреблению игрового контента, при этом к 2026-му аналитики прогнозируют рекордное увеличение рынка — до $205,4 млрд. Вместе с потреблением игр растут и требования к ним: пользователям важно не только высокое качество, но и скорость загрузки, отсутствие лагов и задержек.

Построить масштабируемую и отказоустойчивую систему помогают облачные сервисы — с их помощью можно хранить игровой контент без ограничений, вовремя доставлять его до всех игроков и защищать данные от хакерских атак. В этой статье в двух частях расскажу подробнее о задачах, которые игровые компании могут решать с помощью облаков.

Как хранить неограниченный объём игрового контента

Контент игры — анимацию, видео, графику — нужно где-то хранить, и лучше всего для этого подходит внешний облачный хостинг. Облако поддерживает доступность игры вне зависимости от количества и местонахождения пользователей, позволяет совместно разрабатывать продукт и надёжно хранить учётные записи геймеров.

Чтобы иметь достаточный объём хранилища и оплачивать его по мере необходимости, в зависимости от нагрузок, клиенты Yandex Cloud используют облачный сервис Yandex Object Storage. Это объектное хранилище (S3), в котором можно хранить любые объёмы данных в течение длительного времени, а также создавать резервные копии информации и мультимедийные библиотеки.

Многие крупные GameDev-компании хранят контент игр именно в S3. Среди них PUBG Studios (PUBG: Battlegrounds), Epic Games (Fortnite), Mojang Studios (Minecraft).

Как доставлять игровой контент всем пользователям без задержек

Для пользователей онлайн-игр важно, чтобы отправленный с устройства запрос достигал гейм-сервера и возвращался обратно за минимальное количество времени. Каким будет это время, так называемый пинг, зависит от многих параметров: технических характеристик самого устройства, скорости интернета и провайдера, загруженности интернет-канала. Но один из важнейших факторов — расстояние между игроком и сервером.

Представим, что сервер расположен во Владимире. Один из геймеров также живёт во Владимире, второй — во Владивостоке. Если первый нажмёт кнопку атаки в игре, информация дойдёт до сервера и вернётся на устройство, например, за 10 миллисекунд. Игроку из Владивостока потребуется больше времени, чтобы нанести ответный удар: скажем, 50 миллисекунд. В результате у первого пользователя будет преимущество в игре только из-за того, что он находится ближе к серверу.

Чем ближе сервер к пользователю, тем выше скорость передачи данных

Чтобы скорость загрузки игр была одинаковой для всех игроков, компании стараются расширять географию дата-центров и располагать серверы ближе к пользователям. Но это не решает проблему до конца — кто-то из геймеров так или иначе будет ближе к серверу. Разместить необходимый контент максимально близко ко всем игрокам позволяет CDN (Content Delivery Network).

CDN, или распределённая сеть серверов, хранит весь контент игры. Когда к ней подключается пользователь, данные загружаются на устройство не с дата-центра, который может находиться далеко, а из ближайшей точки присутствия CDN

Такой продукт есть и у Yandex Cloud — в нём CDN интегрирована в другие решения платформы. Так, сама CDN отвечает за доставку контента, а прочие сервисы — Object Storage и GeeseFS — обеспечивают хранение данных и позволяют удобно с ними работать. Процессы идут параллельно, асинхронно, и поэтому — в несколько раз быстрее. CDN-серверы Yandex Cloud расположены по всему миру — в целом их больше 140.

Среди наших клиентов CDN использует студия Axlebolt. Не так давно компания перенесла в Yandex Cloud игру Standoff 2.

Антон Донской
СТО Axlebolt

У нас широкая география игроков: СНГ, Турция, Германия, Польша и даже Бразилия. Чтобы доставлять игровой контент до всех пользователей в одно и то же время, мы используем CDN. Эта сетевая инфраструктура помогает нам эффективнее распределять нагрузку на серверы и ускоряет раздачу как тяжёлого контента, так и легковесных аватарок игроков. С помощью распределённой сети мы анализируем метрики загруженного и отправленного трафика, замеряем среднее время доставки контента — в норме этот показатель не превышает 400 миллисекунд — и следим, чтобы вход в игру не был слишком долгим.

Как автоматизировать создание текста для игр

Речь о диалогах героя с неигровыми персонажами (NPC). Бывают диалоги линейные, в которых игрок не влияет на ход разговора и развитие сюжета, бывают экспозиционные — в них геймер выбирает тему для разговора с персонажем или определяет миссию, которую будет выполнять. Наконец, в некоторых играх работают диалоговые древа — цепочки реплик, в которых пользователь определяет ход диалога и его результат.

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

YandexGPT предложила диалог под заданное описание

Как защитить игры от DDoS-атак

DDoS-атаки приводят к отключениям игр, появлению задержек и лагов. Согласно исследованию Storm Wall, в третьем квартале 2023 года число таких атак в гейм-индустрии выросло на 117% по сравнению с третьим кварталом 2022 года. Главной целью нападений было вымогательство: злоумышленники создали сеть компьютеров, заражённую несколькими вредоносными программи, атаковали множество игр, в том числе Destiny 2, Diablo 4, Minecraft, а после требовали деньги, чтобы вернуть разработчикам доступ к играм.

В Yandex Cloud есть два сервиса, которые защищают от DDoS-атак: DDoS Protection и Smart Web Security. С их помощью можно определять показатели нагрузки на игровые серверы и параметры атак, блокировать нелегитимные автоматизированные запросы, определять нормальный профиль трафика для каждого ресурса и обнаруживать DDoS-атаки практически в реальном времени.

Выводы

✅ Хранить любые объёмы данных лучше на облачном сервере — в любое время к нему могут подключиться разработчики, которые работают удалённо.

✅ Облачный CDN помогает геймерам по всему миру синхронизироваться — вне зависимости от близости к дата-центру у всех пользователей будет одинаковый пинг.

✅ Для развития неигровых персонажей в играх и создания динамического контента можно использовать текстовые генеративные нейросети.

✅ Anti-DDoS-сервисы в облаке защищают игроков и сами GameDev-компании от кибератак — игра работает стабильно и доступна всем. Следовательно, её аудитория не уменьшается.

Во второй части статьи расскажу, как с помощью облаков ускорить создание 3D-моделей, проводить киберспортивные матчи и поддерживать крупные сезонные обновления игр.

Подписывайтесь на Telegram-канал Yandex Cloud, чтобы узнавать ещё больше новостей и историй о команде.

Другие истории наших партнёров и клиентов, которые активно читают наши подписчики:

0
Комментарии
-3 комментариев
Раскрывать всегда