Как устроена облачная игровая платформа для b2b и b2c-клиентов. Решения для отличной картинки и борьбы с последней милей +2


Облачный гейминг называют одной из главных технологий, за которыми стоит следить прямо сейчас. За 6 лет этот рынок должен вырасти в 10 раз — с $45 млн в 2018 году до $450 млн в 2024 году. Технологические гиганты уже ринулись осваивать нишу: Google и Nvidia запустили бета-версии своих сервисов облачного гейминга, на сцену готовятся выйти Microsoft, EA, Ubisoft, Amazon и Verizon.

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



Издатели, разработчики, производители ТВ и операторы связи: зачем им всем облачный гейминг


Игровые издатели и разработчики заинтересованы в том, чтобы максимально быстро доставить свой продукт наибольшему количеству игроков. Сейчас, по нашим данным, 70% потенциальных покупателей не доходят до игры — они не дожидаются загрузки клиента и установочного файла весом в десятки гигабайт. При этом 60% пользователей, судя по их видеокартам, в принципе не могут запускать мощные игры (AAA-уровня) на своих компьютерах в приемлемом качестве. Облачный гейминг сможет решить эту проблему — он не только не снизит заработки издателей и разработчиков, но поможет им нарастить платящую аудиторию.

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



Еще один потенциально активный участник экосистемы — операторы связи. Их способ повышать доходы — предоставлять дополнительные услуги. Гейминг — как раз одна из таких услуг, которую операторы уже активно внедряют. Ростелеком запустил тариф «Игровой», Akado продает доступ к нашему сервису Playkey. Речь идет не только об операторах широкополосного интернета. Мобильные операторы в связи с активным распространением 5G тоже смогут сделать облачный гейминг своим дополнительным источником дохода.

Несмотря на радужные перспективы, зайти на рынок не так просто. Всем существующим сервисам, включая продукты технологических гигантов, пока не удалось до конца преодолеть проблему «последней мили». Это значит, что из-за несовершенство сети непосредственно в доме или квартире скорости интернета у пользователя не хватает для корректной работы облачного гейминга.


Взгляните, как затухает WiFi-сигнал, распространяясь от роутера по квартире

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

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


Свою технологию облачного гейминга Playkey начал разрабатывать еще в 2012 году. В 2014 году состоялся коммерческий запуск, а к 2016-му сервисом хотя бы раз воспользовались 2,5 млн игроков. На протяжении всей разработки мы видели интерес не только со стороны геймеров, но и со стороны производителей ТВ-приставок и операторов связи. С NetByNet и «Эр-Телеком» мы даже запустили несколько пилотных проектов. В 2018-м мы решили, что у нашего продукта возможно B2B-будущее.

Разрабатывать для каждой компании свой вариант интеграции облачного гейминга, как мы делали в пилотных проектах, проблематично. Каждое такое внедрение занимало от трех месяцев до полугода. Почему? У всех разное оборудование и операционные системы: кому-то облачный гейминг нужен на приставку на Android, а кому-то — как iFrame в веб-интерфейсе личного кабинета для стриминга на компьютеры. К тому же у всех разный дизайн, биллинг (отдельный дивный мир!) и другие особенности. Стало ясно, что нужно или увеличивать команду разработки в десять раз, или делать максимально универсальное коробочное B2B-решение.

В марте 2019 года мы запустили RemoteClick. Это программное обеспечение, которое компании могут установить на свои сервера и получить работающий облачный игровой сервис. Как это будет выглядеть для пользователя? Он увидит на привычном сайте кнопку, позволяющую запустить игру в облаке. При нажатии игра запустится на сервере компании, а пользователь увидит стрим и сможет играть удаленно. Вот как это могло бы выглядеть в популярных сервисах цифровой дистрибуции игр.





Активная борьба за качество. И пассивная тоже.


Как RemoteClick справляется с многочисленными техническими барьерами, мы сейчас расскажем. Облачный гейминг первой волны (например, OnLive) погубило низкое качество интернета у пользователей. Тогда, в 2010 году, средняя скорость интернет-подключения в США составляла всего 4,7 Мбит/с. К 2017 году она выросла уже до 18,7 Мбит/с, а скоро повсеместно появится 5G и наступит новая эра. Однако несмотря на то, что в целом инфраструктура готова к облачному геймингу, остается уже упомянутая проблема «последней мили».

Одна ее сторона, которую мы называем объективной: у пользователя действительно есть проблемы с сетью. Например, оператор не выделяет заявленную максимальную скорость. Или используется WiFi 2,4 ГГц, зашумленный микроволновкой и беспроводной мышью.

Другая сторона, которую мы называем субъективной: пользователь даже не подозревает, что у него есть проблемы с сетью (не знает, что не знает)! В лучшем случае он уверен, что раз оператор продает ему тариф на 100 Мбит/с, у него интернет 100 Мбит/с. В худшем — понятия не имеет, что такое роутер, а интернет делит на синий и цветной. Реальный случай из касдева.


Синий и цветной интернет.

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

Активные механизмы


1. Эффективное помехоустойчивое кодирование пересылаемых данных a.k.a избыточность (FEC — Forward Error Correction)

При передаче видеоданных от сервера к клиенту используется помехоустойчивое кодирование. С его помощью мы восстанавливаем исходные данные при их частичной потере из-за проблем в сети. Что делает наше решение эффективным?

  1. Скорость. Кодирование и декодирование выполняются очень быстро. Даже на «слабых» компьютерах операция занимает не более 1 мс для 0,5 МБ данных. Таким образом, кодирование и декодирование почти не добавляют задержки при игре через облако. Важность трудно переоценить.
  2. Максимальный потенциал восстановления данных. А именно, соотношение избыточного объема данных и потенциально возможного для восстановления объема. В нашем случае соотношение = 1. Допустим, нужно передать 1 Мб видео. Если мы при кодировании добавим 300 Кб дополнительных данных (это называется избыточность), то в процессе декодирования для восстановления 1 исходного мегабайта нам понадобится всего лишь любой 1 Мб из суммарных 1,3 Мб, которые отправил сервер. Другими словами, мы можем потерять 300 Кб и все равно восстановить исходные данные. Как видно, 300 / 300 = 1. Это максимально возможная эффективность.
  3. Гибкость в настройке дополнительного объема данных при кодировании. Мы можем настраивать отдельный уровень избыточности для каждого видеокадра, который нужно передать по сети. Например, замечая проблемы в сети, мы можем повысить или понизить уровень избыточности.  


Играем через Playkey в Doom на Core i3, 4 GB RAM, MSI GeForce GTX 750.

2. Досылка данных

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

3. Индивидуальная настройка передачи данных

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

Он смотрит:

  • тип подключения (Ethernet, WiFi, 3G и т.д);
  • используемый диапазон частот WiFi — 2,4 ГГц или 5 ГГц;
  • силу сигнала WiFi.

Если ранжировать подключения по потерям и задержке, то надежнее всех, конечно, провод. Через Ethernet потери редки, а задержки на «последней миле» крайне маловероятны. Затем идет WiFi 5 ГГц и только потом WiFi 2,4 ГГц. Мобильные подключения вообще хлам, ждем 5G.



При использовании WiFi система автоматически настраивает адаптер пользователя, переводя его в наиболее подходящий для использования в облаке режим (например, отключение энергосбережения).

4. Индивидуальная настройка кодирования

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

H264 — самый популярный. Аппаратно работу с ним поддерживают все основные производители видеокарт уже на протяжении десятка лет. H265 — дерзкий молодой преемник. Аппаратно его начали поддерживать лет пять назад. Кодирование и декодирование в H265 требует больше ресурсов, зато качество сжатого кадра заметно выше, чем на H264. И без увеличения объема!



Какой кодек выбрать и какие параметры кодирования выставить для конкретного пользователя, исходя из его «железа»? Нетривиальная задача, которая решается у нас автоматически. Умная система анализирует возможности оборудования, выставляет оптимальные параметры кодировщика и выбирает декодер на стороне клиента.

5. Компенсация потерь

Не хотели это признавать, но даже мы не безупречны. Некоторые данные, потерянные в недрах сети, восстановлению не подлежат и дослать мы их не успеваем. Но и в этом случае есть выход.

Например, регулировка битрейта. Наш алгоритм постоянно контролирует объем пересылаемых данных от сервера к клиенту. Он фиксирует каждую недостачу и даже предсказывает возможные будущие потери. Его задача — вовремя заметить, а в идеале и предсказать, когда потери достигнут критического значения и начнут создавать заметные пользователю помехи на экране. И скорректировать в этот момент объем пересылаемых данных (битрейт).



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

6. Распределённая отправка

Распределенная по времени отправка данных тоже повышает качество стриминга. Как именно распределять, зависит от конкретных показателей в сети, например, наличия потерь, пинга и других факторов. Наш алгоритм анализирует их и выбирает оптимальный вариант. Иногда распределение в промежутке нескольких миллисекунд уменьшает потери в разы.

7. Уменьшение задержки

Одной из ключевых характеристик при игре через облако является задержка. Чем она меньше, тем играть комфортнее. Задержку условно можно поделить на две части:
  • сетевую или задержку на пересылку данных;

  • задержку системы (снятие управления на стороне клиента, захват изображения на сервере, кодирование картинки, вышеперечисленные механизмы адаптации данных к отправке, сбор данных на клиенте, декодирование изображения и его отрисовка).

Сетевая зависит от инфраструктуры и бороться с ней проблематично. Если провод сгрызли мыши, танцы с бубном не помогут. А вот задержку системы можно сократить в разы и качество облачного гейминга для игрока изменится кардинально. Помимо уже упомянутого помехоустойчивого кодирования и персонализированных настроек мы используем еще два механизма.

  1. Быстрое получение данных с устройств управления (клавиатура, мышь) на стороне клиента. Даже на слабых компьютерах для этого хватает 1-2 мс.
  2. Отрисовка системного курсора на клиенте. Указатель мыши обрабатывается не на удаленном сервере, а в клиенте Playkey на компьютере пользователя, то есть без малейших задержек. Да, на реальное управление в игре это не влияет, но главное здесь — человеческое восприятие.  


Отрисовка курсора без задержки в Playkey на примере Apex Legends

С использованием нашей технологии при сетевой задержке 0 мс и работе с видеопотоком в 60 FPS задержка всей системы не превышает 35 мс.

Пассивные механизмы


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

Однако некоторые технические моменты все-таки важно донести, чтобы игрок мог самостоятельно убрать барьеры на своей стороне. И мы ему помогаем.

1. Индикация поддержки WiFi 5 ГГц

Выше мы писали, что видим стандарт Wi-Fi — 5 ГГц или 2,4 ГГц. А еще мы знаем, поддерживает ли сетевой адаптер пользовательского устройства саму возможность работы на 5 ГГц. И если да, то рекомендуем использовать этот диапазон. Самостоятельно поменять частоту пока не можем, так как не видим характеристики роутера.

2. Индикация силы сигнала WiFi

У некоторых пользователей сигнал WiFi может быть слабым, даже если интернет работает хорошо и, кажется, на приемлемой скорости. Проблема вскроется именно при облачном гейминге, который подвергает сеть реальным испытаниям.

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

3. Индикация потребителей трафика

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


Страхи из прошлого — развенчиваем мифы о клаудгейминге


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

Миф 1. Картинка в облаке хуже, чем в оригинале — будто бы играешь по YouTube


Сегодня в технически продвинутом облачном решении картинки оригинала и облака практически идентичны — невооруженным глазом отличия не найти. Индивидуальная настройка энкодера под оборудование игрока и комплекс механизмов для борьбы с потерями закрывают этот вопрос. На качественной сети нет ни размытия кадров, ни графических артефактов. Мы даже принимаем в расчет разрешение. Нет смысла стримить картинку в 1080p, если игрок использует 720p.

Ниже два видео Apex Legends с нашего канала. В одном случае — это запись геймплея при игре на PC, в другом — через Playkey.

Apex Legends на PC

Apex Legends на Playkey


Миф 2. Нестабильное качество


Состояние сети действительно непостоянно, но эта проблема решена. Мы динамически меняем настройки энкодера под качество сети пользователя. А постоянно приемлемый уровень FPS поддерживаем особыми приемами захвата изображения.

Как это работает? У игры есть 3D-движок, с помощью которого строится 3D-мир. Но пользователю показывается плоское изображение. Чтобы он видел его, для каждого кадра создается картинка памяти — своеобразная фотография, как этот 3D-мир видится из определенной точки. Эта картинка в закодированном виде хранится в буфере видеопамяти. Мы захватываем ее из видеопамяти и передаем в энкодер, который уже расшифровывает ее. И так с каждым кадром, друг за другом.

Наша технология позволяет захватывать и декодировать картинку в одном потоке, что и повышает FPS. А если эти процессы вести параллельно (довольно популярное на рынке облачного гейминга решение), то энкодер постоянно будет обращаться к захвату, забирать новые кадры с задержкой и, соответственно, передавать их с задержкой.


Видео в верхней части экрана получено с использованием технологии захвата и декодирования в одном потоке.

Миф 3. Из-за лагов в управлении буду «раком» в мультиплеере


Задержка в управлении в норме составляет несколько миллисекунд. И обычно она незаметна для конечного пользователя. Но бывает виден крошечный разлад между движением мышки и перемещением курсора. Он ни на что не влияет, но создает негативное впечатление. Описанная выше отрисовка курсора непосредственно на устройстве пользователя устраняет этот недостаток. В остальном общая задержка системы в 30-35 мс настолько мала, что ни игрок, ни его соперники по матчу ничего не замечают. Исход боя решают только навыки. Доказательство ниже.


Стример нагибает через Playkey

Что дальше


Облачный гейминг — уже реальность. Playkey, PlayStation Now, Shadow — это работающие сервисы со своей аудиторией и местом на рынке. И как многие молодые рынки, облачный гейминг будет стремительно расти в ближайшие годы.

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




К сожалению, не доступен сервер mySQL