Блог: Облачный гейминг — уже можно?

Прошло десять лет с момента запуска (и пять с момента закрытия) крайне амбициозного облачного игрового сервиса Onlive. Основными проблемами технологии были, требования к определенной ширине пропускного канала и возникающий за счет отдаленности от сервера "лаг" при управлении. Тогда в системных требованиях значилось интернет-соединение со скоростью 5 Мбит/сек и рекомендовалось быть не далее чем в полутора тысячах километрах от сервера. Кроме того, до аппаратного декодинга силами видеокарты, в Onlive использовались запатентованные чип и кодек, обрабатывающие 30 кадров видео потока в разрешении 720p за несколько миллисекунд.

В момент запуска Onlive предоставлял доступ к бесплатным 30 минутным игровым сессиям. Благодаря этому в далеком 2010 я и ознакомился с облачным геймингом. На тот момент требование 5 Мбит/сек было довольно средней скоростью интернета в той части Украины, где я жил. А вот удаленность от серверов, оказалась гораздо важнее. Тогда я не проводил никаких тестов, но помню что задержка не позволяла эффективно играть в соревновательные игры, вроде Unreal Tournament 3. При этом лаг все еще был приемлем для прохождения одиночных игр. Уже тогда, в интернете, некоторые предвещали следующее поколение консолей как последнее в классическом понимании. А дальше — только облако. Прошло десять лет, а облачные сервисы так и остаются нишевым сегментом, несмотря на появление множества конкурентов. Даже покупка Onlive Sony не привела к массовому распространению PS Now, несмотря на возможность играть в PS4-эксклюзивы.

Сегодняшний день

За прошедшие 10 лет облачные сервисы не умерли, как некоторые краткосрочные технологии, однако развитие их оказалось неспешным. Лишь в 2019 году Google Stadia и Microsoft XCloud, внезапно привлекли к теме интерес мейнстрима.

Если брать минимальные требования к скорости интернета для просмотра видеопотока в 1080p, то миллионы людей уже сейчас могут позволить облачный гейминг. В отличие от абсолютно устаревшего h.264, кодек VP9 в YouTube, и конкурент h.265 у всех остальных (google отказалась от лицензирования данного обновления кодека), позволяют сохранить около 50% битрейта, не снижая качества картинки. Или наоборот за счет большей эффективности сжатия, улучшить качество видео при одинаковом битрейте. Если скорость интернет-соединения уже можно отодвинуть на задний план, то задержка в управлении все еще остается камнем преткновения на пути к облачному геймингу. Но так ли велик этот камень?

Для начала разберемся с задержкой управления вне облаков. В одном из видео Digital Foundry, была затронута тема консольных версий игр с не очень отзывчивым управлением. Так, например Metro Exodus на Xbox One реагирует на нажатие кнопки геймпада только через 167мс (в секунде 1000 миллисекунд). Это более 1/10 секунды. Результат был получен на OLED ТВ без включения "игрового режима". Можно сказать этот тест вдохновил меня проверить все самому.

На своем PC (i3 6100, Gtx 950), с самым простым FullHD монитором без игровых режимов я получил схожие результаты. Задержка между нажатием кнопки и самим действием в играх может разниться, в зависимости от анимации выполняемого действия. На моем мониторе в Metro Exodus Артем стреляет из оружия через 167мс после нажатия триггера. А прыжок начинает через 183мс. В Halo: Reach выстрел, прыжок и поворот камеры происходят с одинаковой задержкой, через 100мс. В первом случае, управление кажется вязким но приемлемым для одиночной игры. Во втором трудностей не возникает даже в мультиплеере. Эта задежка — локальный лаг до отображения действий на моем мониторе. 

Переходим к облакам, отдалив "мой" PC на расстояние свыше тысячи километров в далекую Беларусь. Для передачи видеопотока и команд между компьютерами использовалась программа Parsec. К локальной задержке добавилось приблизительно 40мс, для передачи данных с моего PC. Плюс, в среднем 1-2мс на рендер кадра аппаратным кодировщиком в h.265. Правильно было бы использовать те же игры, для проверки степени "играбельности". Но зная точную задежку между нашими PC в 40мс, я решил опустить этот момент. И сразу перейти к играм где скорость реакции будет иметь решающий фактор. В запущенной на стороне "сервера" Tekken 7, анимация удара на моем мониторе начинается с задержкой в 167мс. Это уровень локально запущенной Metro Exodus. Но как оказалось есть способ уменьшить это значение. 

В настройках драйверов AMD и NVIDIA есть две одинаковые функции: "Anti-Lag" и "Ultra low Latency". Основной принцип работы — снижение локальной задержки ввода, путем уменьшения количества заранее обработанных процессором кадров. После активации на компьютере-сервере Tekken 7 стал откликаться через 133мс. Можно ли еще быстрее? Да, но примером опять станет другая игра. В Tekken 7 фреймрейт заблокирован на 60 fps, потому далее я перейду к другой игре.

Digital Foundry предположили, что для снижения задержек в XCloud, Microsoft запускает игры с избыточным количеством кадров в секунду. Например, 120 fps. Но клиенту отправляется поток в 60 fps. Так, задержка в управлении снижается еще больше и на стороне сервера, и на стороне клиента. Это можно проверить в "домашних" условиях в дополнение к включению "Ultra low Latency". Для теста я выбрал DOOM (2016). Игра, способна работать с нужной частотой кадров, в данном случае только на стороне сервера (i5 8400, GTX 1060). Но не на стороне клиента. При 120 fps, задержка между нажатием кнопки и анимацией составила 83мс. Субъективно, совсем неплохо для расстояния в 1000 километров.

Визуальное качество картинки зависит от битрейта. При нормальном зрении, сложно спутать потоковое видео и реальный геймплей. Улучшения в этом направлении может привнести новый кодек с более эффективными алгоритмами сжатия. Например, AV1 который "вынашивается" инженерами YouTube уже дольше года. Эффективность сжатия по сравнению с VP9 и h.265 обещают поднять почти на 30%. Но уже сейчас при домашнем стриминге в Steam, с высоким битрейтом я ловлю себя на мысли, что старый ноутбук не должен так хорошо тянуть запущенную "на нем" игру.

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