Pull to refresh

Практический streaming игр

Reading time 5 min
Views 184K
История о том, как я открыл для себя стриминг игр и что из этого получилось с пошаговой инструкцией.

Посвящается всем, кому интересно эффективное использование имеющихся аппаратных средств.

Введение


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

Но, во-первых, не во все игры удобно играть на телевизоре, в тех же шутерах и RTS мне гораздо удобнее играть сидя за столом.
Во-вторых, очень «удачно» сломался единственный выход с игрового ПК — телевизор.
В-третьих, мой проверенный временем рабочий ПК (ноутбук) уже давно перестал быть топовым и далеко не все игры даже сносно удаётся запустить на нём, а менять только потому что не удаётся поиграть — совершенно не повод.
В-четвёртых, иногда возникает непреодолимое желание поиграть с работы, а там далеко не все порты открыты (да, даже для себя на работе я закрыл практически все порты)…

Была поставлена задача: обеспечить доступ к ресурсам игрового ПК с других компьютеров, в т.ч. удалённых.

Обзор решений


В качестве решений рассматривалось ПО, которое использует аппаратное кодирование видео с помощью видеокарты.

Из доступных и бесплатных решений на сегодня я нашёл только стриминг через Steam и относительно доступное решение – встроенный в Nvidia GeForce Experience – стриминг для консоли Shield.

Чем не устроил стриминг через Steam – это необходимость (на данном этапе) иметь компьютеры в одной широковещательной сети, что не позволяет работать с удалённым ПК через маршрутизируемую сеть. Даже поднятие L2TP туннеля не исправило ситуации – клиенты Steam не видят друг друга. Также обнаружилась проблема со звуком при стриминге через Steam: если в системе нет активных звуковых устройств (у меня, например, единственный вывод звука – HDMI, а если он не подключен – то вывода нет), то некоторые игры или не запускаются (Skyrim) или идут без звука. У Nvidia такой проблемы нет.

Большой плюс стриминга Steam — работа «из коробки». С решением же GeForce Experience пришлось несколько повозиться – оно предназначено только для консоли Shield…

Восстанавливаем справедливость


На просторах интернет был найден интересный проект LimeLight, который добавляет функционал Shield на любые Android устройства, но что более важно – реализует стриминг на Windows, Linux и MacOS X. И даже Raspberri Pi.

Вещание поддерживается с разрешением: 1280x720 (30 или 60 кадров) и 1920x1080 (30 или 60 кадров). Управление поддерживается как с помощь клавиатуры/мыши, так и с помощью контроллера, подключенного к компьютеру-клиенту (возможность организовать стриминг на слабый ПК, подключенный к телевизору и играть с помощью контроллера).

В последней версии GeForce Experience была добавлена возможность добавлять альтернативные (без заявленной поддержки стриминга для Shield) игры, но пока отображение списка игр не реализовано в LimeLight. Поэтому Steam — наше всё, по умолчанию при старте – запускается Big-Picture Steam и уже в нём можно выбрать любую доступную игру или программу.

Переходим к практике


Системные требования:
  • нужно иметь карту серии не ниже 600, также поддерживается мобильная линейка 700M, 800M и некоторые 600M;
  • на компьютере-клиенте (на котором фактически будем играть) должна быть установлена Java (по версии ничего не скажу, у меня работает и на 6, и на 7), жёстких требований иметь на клиенте видеокарту Nvidia нет;
  • на компьютере-хосте (на котором будет фактически запущена игра) должен быть установлен Steam;
  • на компьютере-хосте желательно отключить UAC, т.к. могут быть проблемы с запуском некоторых игр (обычно мультиплеерных);
  • на компьютере-хосте должна быть установлена клиентская ОС (Windows 7, 8), на серверной ОС не получилось запустить из-за внутренних особенностей серверных ОС;
  • если вся работа идёт удалённо – необходимо на компьютере-хосте включить авто-вход в систему.


Шаг 1. Заходим на limelight-stream.com, выбираем нужную платформу, если это ПК — github.com/limelight-stream/limelight-pc/releases и качаем пакет под нужную ОС. Выбор win64 или win32 (или lin32, lin64) зависит от того, какая версия Java будет использоваться.

Шаг 2. Создаём ярлык: «Путь\к\Яве\java.exe –jar “Путь\к\limelight-win64.jar”», например, «C:\Program Files\Java\jre6\bin\java.exe» -jar C:\Users\User\Desktop\limelight-win64.jar


Шаг 3. Запускаем утилиту созданным ярлыком.


Шаг 4. Из компьютера-клиента и компьютера-хоста (на котором будут запускаться игры) нужно сделать пару хост-контроллер. Для этого нужно указать IP-адрес хоста и нажать кнопку Pair. После этого на компьютере-хосте появится сообщение о том, что новое устройство Shield хочет подключиться.

Кнопку надо нажать именно на хосте, в активной пользовательской сессии. Пробовал подключаться через RDP к этой сессии пользователя – там сообщения показано не было, так же исчезло и упоминание о Nvidia Shield в оснастке GeForce Experience. Поэтому можно воспользоваться любым Remote Administrator, TeamViewer, Ammyy Admin и т.п. продуктами, если нет физического доступа к консоли хоста (например, с работы).

На хосте нажимаем зелёную кнопку «Подключить» (Connect):


На клиенте:


Собственно на этом всё. Теперь можно нажать кнопку «Start Streaming» и подключиться к игровому компьютеру. К сожалению, после каждой перезагрузки компьютера-хоста приходится восстанавливать подключение.

Развиваем тему


Как запустить, например, танки, которых нет в Steam. Запускаем Steam и добавляем новую игру. Я таким же образом в Steam импортировал IPTV Player чтобы получить единую точку входа своего «медиацентра» для просмотра IPTV.



Далее нажимаем «Обзор» (Browse) и выбираем в каталоге танков файл, который запускает игру, именно игру, а не загрузчик и т.п., для танков это WorldOfTanks.exe, это важно, т.к. через WOTLauncher.exe не запускается.


И добавляем в библиотеку.

Заключение


После вышеописанных действий стриминг должен заработать и можно спокойно поиграть в танки. По локальной сети (1Гбит/с) работает отлично на 1920х1080х60Hz, удалённо через VPN L2TP удаётся поиграть на 1280х720х30Hz.

Что мы имеем в результате:
  • мощный медиацентр поключенный к ТВ с возможностью играть на большом экране во всякого рода слешеры (или наоборот слабый медиацентр и стриминг с мощного ПК на телевизор);
  • независимость от других членов семьи – хочешь поиграть – не обязательно занимать телевизор;
  • использование старого железа, играть можно на всём, что может нарисовать 1280х720;
  • можно играть в одни игры на ТВ, в другие – на ПК за столом, можно вообще на любом планшете, если управление позволяет;
  • разделение ресурсов между членами семьи — каждый может играть на своём ПК, используя мощь семейной игровой станции, не нужно каждому покупать топовое железо.


К сожалению ничего не могу сказать по поводу версии для Android, т.к. есть только планшет на нём. Было бы интересно — стриминг на андроид-приставку к телевизору. Если у кого-то есть возможность проверить — буду признателен.

Надеюсь, статья была интересна и/или полезна, спасибо за уделённое время!

Обнаруженные «особенности»


1. Не работают игры Left 4 Dead 2, Portal 2, возможно, другие производства Valve, с другими производителями проблем не замечено. При чём не работает как в стриминге через GeForce Experience, так и в родном Steam.
2. Утилита пытается выставить значение разрешения максимально близкое к выбранному формату вещания (например, выбрано вещания 1280х720). Но на некоторых мониторах (с соотношением сторон, отличающимся от 16:9) могут быть проблемы в виде широкой чёрной рамки. Решается масштабированием к наиболее подходящему разрешению через панель управления.

3. Иногда выбивает Steam, после этого помогает только перезагрузка.

Ссылки


1. LimeLight
2. GeForce Experience
3. Загрузка Java
Tags:
Hubs:
+21
Comments 20
Comments Comments 20

Articles