Історія про те, як я відкрив для себе стрімінг ігор і що з цього вийшло з покроковою інструкцією.
Присвячується всім, кому цікаве ефективне використання наявних апаратних засобів.
Введення
Так вже вийшло, що дружина мені подарувала «приставку» до телевізора у вигляді потужного ігрового ПК. ПК був успішно підключений до телевізора і до останнього часу приносив багато приємних хвилин гри на великому екрані.
Але, по-перше, не в усі ігри зручно грати на телевізорі, в тих же шутерах і 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Гбіт/с) працює відмінно на 1920x1080x60Hz, вилучено через VPN L2TP вдається пограти на 1280x720x30Hz.
Що ми маємо в результаті:
- потужний медіацентр поключений до ТБ з можливістю грати на великому екрані у всякого роду слешери (або навпаки слабкий медіацентр і стрімінг з потужного ПК на телевізор);
- незалежність від інших членів сім'ї - хочеш пограти - не обов'язково займати телевізор;
- використання старого заліза, грати можна на всьому, що може намалювати 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