Как работает облачный гейминг? Инженерия игры без видеокарты

· 2 мин чтения · Команда NitroByte

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

Расскажем без преувеличений, чему мы научились, пока разрабатывали Nitrova.

Цикл: ввод, картинка, сеть

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

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

Главный враг — задержка

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

По нашим замерам, на потоке 12 Мбит/с медианная сетевая задержка составила 9 миллисекунд. А когда на той же линии мы подняли битрейт до 15 Мбит/с, разброс подскочил до 65 миллисекунд. Вывод очевиден: больше полосы — не всегда лучше. Плавность сохраняется, когда вы используете ровно столько, сколько тянет линия.

Баланс полосы и качества

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

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

Почему свои серверы?

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

Не только игры

Та же инфраструктура подходит для любой задачи, где нужна видеокарта. Рендер, видеомонтаж или обучение ИИ — удалённой RTX 3090 можно пользоваться как своей машиной. Более того, для некоторых нагрузок не нужно передавать даже картинку: код и данные остаются на вашем компьютере, а на сервер уходят только те байты, которые нужны вычислениям в данный момент.

Честные ограничения

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

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

Следующая статья 7 самых частых технических ошибок в разработке игр (и как их избежать)