Как использовать облачные технологии в игровой индустрии. Часть первая

Хранить терабайты графики, доставлять контент игрокам без задержек и создавать диалоги персонажей без помощи сценаристов — всё это можно делать на платформе Yandex Cloud. Тимур Баязитов рассказывает, как облачные технологии помогают GameDev‑компаниям.

Ещё в 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.

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

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

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

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

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

Промт

Привет!

Мы разрабатываем игру про школу чародейства и волшебства, где главному герою нужно выполнять разные задания: сражаться с врагами, искать разные предметы, учить магические заклинания, варить зелья. Игрок может выбирать свой факультет и посещать занятия в школе, а также исследовать открытый мир. Действия сюжета разворачиваются в конце XIX века.

Придумай диалог героя с неигровым персонажа для такой сцены:

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

Результат

Персонаж: Добрый день! Чем могу вам помочь?

Герой: Здравствуйте! Я ищу новую волшебную палочку.

Персонаж: О, вы пришли в нужное место! У меня есть несколько прекрасных вариантов. Вот, например, эта палочка из ольхи с сердцевиной из пера феникса. Она идеально подойдёт для тех, кто предпочитает быстрые и прямые заклинания.

Герой (примеряет палочку): Неплохо, но мне кажется, она немного тяжеловата.

Персонаж (пробует другую палочку): Тогда как насчёт этой? Это граб, и он известен своей прочностью и гибкостью. Сердцевина из волоса единорога делает эту палочку идеальным выбором для тех, кому нужна гибкость в заклинаниях.

(Герой примеряет палочку и кивает в знак одобрения.)

Персонаж (достает третью палочку): Эта палочка из дуба с сердцевиной из драконьего зуба. Она отлично подходит для мощных, разрушительных заклинаний.

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

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

DDoS‑атаки приводят к отключениям игр, появлению задержек и лагов.

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

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

Выводы

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

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

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

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

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

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

Напишите нам

Начать пользоваться Yandex Cloud

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
Как использовать облачные технологии в игровой индустрии. Часть первая
Войдите, чтобы сохранить пост