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

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

Введение Так уж получилось, что жена мне подарила «приставку» к телевизору в виде мощного игрового ПК. ПК был успешно подключен к телевизору и до последнего времени приносил много приятных минут игры на большом экране.Но, во-первых, не во все игры удобно играть на телевизоре, в тех же шутерах и 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.Вещание поддерживается с разрешением: 1280×720 (30 или 60 кадров) и 1920×1080 (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.jar3f16fbe336671e84bf77e4c1085b2c22.png

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

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

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

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

На клиенте: d0eb6a925cfb981f711adfd7acc8188f.png

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

Развиваем тему Как запустить, например, танки, которых нет в Steam. Запускаем Steam и добавляем новую игру. Я таким же образом в Steam импортировал IPTV Player чтобы получить единую точку входа своего «медиацентра» для просмотра IPTV.5782ba30cc67ac5cfec9ebea45421f6d.png8afcfe106cfd905ffa0f9b1a5a2ede38.pngДалее нажимаем «Обзор» (Browse) и выбираем в каталоге танков файл, который запускает игру, именно игру, а не загрузчик и т.п., для танков это WorldOfTanks.exe, это важно, т.к. через WOTLauncher.exe не запускается.1502b6ee9dbe4567b15ce2732475315a.png

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

Заключение После вышеописанных действий стриминг должен заработать и можно спокойно поиграть в танки. По локальной сети (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) могут быть проблемы в виде широкой чёрной рамки. Решается масштабированием к наиболее подходящему разрешению через панель управления.aed964aeae989a3b5352162ba2f755a4.png3. Иногда выбивает Steam, после этого помогает только перезагрузка.Ссылки 1. LimeLight2. GeForce Experience3. Загрузка Java

© Habrahabr.ru