Steam In-Home Streaming — или уберите свой игровой компьютер на балкон
21 мая, Valve объявили что Steam In-Home Streaming (далее — стриминг) выходит из статуса закрытого бета-тестирования и готов к использованию.
Я очень ждал релиза данной технологии так как она позволяет реализовать давнюю мечту — убрать шумящий игровой компьютер подальше от ушей. Но участвовать в бета-тесте было лень, так что я ограничивался просмотром видеообзоров с нелестными отзывами.
До этого я, ради интереса, пробовал играть с помощью разных программ, но максимум, на что они годились — неспешные квесты, так как качество динамичного изображения, лаг, да и вообще поддержка устройств ввода были никудышными. Была надежда что Microsoft RemoteFX позволит использовать видеокарту даже нескольким людям (для multiseat) но у него с поддержкой игр все плохо, к тому же проблемы с мышью (которые, правда, решаются пробросом USB).
Так что так или иначе, рабочих решений для удаленной игры в динамичные игры я так и не нашел и вся надежда была на Steam.
Вообще, Valve, молодцы, так или иначе, много игроков делит игры на ПК на «достимовые» и «стимовые». Когда он только появился, в России им пользоваться было проблематично из-за необходимости подключения к интернету и выкачивания многомегабайтных апдейтов. Помню как записывали резервные копии игр на DVD, так и распространяли апдейты. Тогда было принято ругать Steam.
Позже интернет стал быстрым, более доступным и тут пришло осознание, насколько удобным все-таки является Steam. В далекое прошлое ушли патчи, директиксы, различные библиотеки, лаунчеры, русификаторы, поцарапанные диски, и, самое главное, технологии защиты. Ну кто не помнит необходимость держать жужжащий диск в приводе. Сейчас это вспоминается как ночной кошмар. Не только глючность, ресурсоемкость этих «защит» (привет, старфорс!) но и вообще дисков. Лично у меня они уже на том же забытом уровне, что и дискеты, хотя многие люди продолжают фанатеть по этим ненадежным оптическим носителям (ОС я устанавливаю с Zalman VE-300). Так или иначе, Steam привнес на ПК консольную легкость установки, цифровую дистрибуцию и универсальную технологию защиты. Стоит сказать, что DRM незаметный и заключается только в необходимости держать запущенным сам Steam. Все! Никаких системных драйверов с руткитами, никаких дисков из далекого прошлого.
Конечно, «минусом» тут было то, что игры таки приходилось покупать, причем часто цены достаточно высокие. Я решаю эту проблему покупками только в сезоны скидок.
Смешной случай: хотел дать жене поиграться в The Sims 3, пошел на торренты, скачал, прочитал инструкцию на пару страниц в каком порядке надо ставить патчи, поставил — не взлетело. Требует диск, хоть ты тресни. После убитых пары часов решил пойти в Steam и купить. Одна загрузка (кстати Steam использует технологию торрентов для загрузки) и все работает. А смешнее всего было то, что версия Sims для Steam’а вообще лишена DRM и работает без установки на любом компьютере даже без Steam’а.
Ладно, хвалебную оду заканчиваю, хотелось выговориться, надеюсь простите.
В какой-то момент где-то в Valve поняли что по масштабности Steam уже представляет собой этакую ОС для игр и выкатили Steam OS на основе linux, параллельно развивая и подталкивая разработчиков на портирование игр (за что им отдельный низкий поклон). Но проблема курицы и яйца (мало пользователей linux -> мало игр для linux) все еще стояла остро (на 24.05.2014 1229 из 11414 портированы), поэтому как временное решение Valve решили запилить стриминг с Windows ПК. Идея простая: можно купить (пока еще официально не вышедшие) маломощную безшумную приставку к ТВ и играть в любые игры с клавиатуры/мыши либо со специального контроллера.
Посмотрим что же из этого получилось.
Для теста установил Windows 7.
Для запуска не надо делать почти ничего: запускаем Steam на компьютере с Windows и в той же локальной сети — на любом другом компьютере-клиенте. Клиент автоматически подключится к серверу, о чем будет соответствующее уведомление.
В настройках есть новый раздел, но на сервере там настраивать особо нечего. Галочка аппаратного кодирования уже стоит:
Для теста я использовал свой обычный компьютер, характеристики такие: Core i5-2500, GeForce GTX780 и 12 ГБ ОЗУ, о котором Windows 7 думает вот так:
Клиент — дремучий ноутбук hp nc4200, процессор — Pentium M 2ГГц, Intel GMA 915 (в последних версиях драйвера заработали все OpenGL-эффекты в KDE! вау!) 2 ГБ ОЗУ. kubuntu 13.10 и макбук air late 2010.
Коротко: работает хорошо, но не со всеми играми. В большинстве случаев задержку незаметно вообще, нет ощущения «удаленного дислея» или «видеопотока».
А теперь замерим то, что можно замерить.
Для начала я проверю насколько дополнительно нагружает процессор стриминг.
Вывод диспетчера задач при запуске игры без стриминга:
Очевидно, по каким-то причинам аппаратное кодирование не работает на моей системе, так как его включение/отключение ни на что не влияет.
Как видно, стриминг процессор все же нагружает. Но если вы читали мой предыдущий пост про multiseat, то знаете что этого процессора достаточно для работы 2 экземпляров доты. Так что я бы не считал это проблемой. Да и процессор у меня далеко не самый быстрый.
Далее: стриминг на максимальном качестве при динамичной картинке полностью загружает слабенький процессор ноутбука:
что вызывает неиграбельные лаги. Макбук прекрасно справляется с картинкой на максимальном качестве.
Удивительно, но на должной скорости принимать стрим Half-Life мой ноутбук не смог, хотя с Dota 2 справлялся отлично:
А вот Метро оказалось неиграбельным: выпадения кадров и общая большая задержка. Похоже, Valve еще применяют какую-то оптимизацию для своих игр. К сожалению, на макбуке мне проверить не удалось, так как я удалил Метро, чтобы освободить место для проверки других игр. Возможно на нем ситуация была бы лучше, но врядли.
Подытоживая можно сказать что стриминг работает. Работает на абсолютно играбельном уровне даже для FPS.
Я незаметно пропустил вопрос о сети. Хоть и ноутбуки показывают полный сигнал, но скорости беспроводной сети им в дальних уголках все равно не хватает. Битрейт потока в большинстве случаев не менее 10 МБит. Так что здесь нужна хорошая антенна, удачное расположение либо проводное соединение.
Очевидным кажется запускать игру на сервере в headless-режиме, то есть без окна, чтобы она только потребляла ресурсы ПК, но не мешала работе на нем, а также позволить множественные подключения. Тогда с помощью одного мощного компьютера где-нибудь на балконе удастся удовлетворить геймерский интерес всей семьи. Но таких функций пока нет. С другой стороны можно же в Linux запустить несколько X.org, в них также по Steam’у и подключать хоть 10 клиентов, но это уже тема следующей статьи.
P.S. я все-таки решил попробовать АСТЕР для организации Multiseat. Легко устанавливается, легко настраивается, буквально за 5 минут. Но больше одного Steam’а запустить не получается. С другими сетевыми играми тоже проблемы. Вникать не стал, хотя конечно для игры в не-Steam игры не по сети пойдет.
UPS: Как-то упустил возможность добавления сторонних игр/программ. Так что транслировать можно что угодно, вплоть до рабочего стола полностью. Но по какой-то причине скорость (количество FPS) и отклик значительно хуже чем в играх от Valve, так что теория «особой обработки» игр подтверждается. Из стороннего пробовал даже очень простые игры, на подобие Crimsonland — низкое количетво FPS. Некоторые игры транслировались с артефактами. Рабочий стол тоже транслируется на уровне RemoteFX. Так что универсального ответа «будет ли работать игра/программа Х» нет, проверяйте индивидуально.
How to Create Your Own “Home Media Streaming Server” Using Plex with FreeNAS – Part 3
Everyone have there own collections of Movies, Songs, Video Songs, Pictures etc. Many of them wonder how we can stream to all of our home devices. Here is the solution we can use Plex Media Server to stream our videos over LAN network in our home using devices such as Smart TV, iPad, Mobiles, Tablet, Laptops etc..
Plex media available for some of the smart TV’s, Xbox One too. If our home devices have the feature of Digital Living Network Alliance (DLNA) we can use Plex in it.
In our previous articles, we’ve seen how to Install FreeNAS and how to configure Storage shares. Now in this post, we will show you how to setup a home based streaming server using Plex Media Server Plugin in FreeNAS.
Requirements
My Server Setup
Hardware : Virtual Machine 64-bit Operating System : FreeNAS-9.2.1.8-RELEASE-x64 IP Address : 192.168.0.230 8GB RAM : Minimum RAM 1 Disk (5GB) : Used for OS Installation 8 Disks (5GB) : Used for Storage
Step 1: Creating a Volume for Plex Installation
1. Back in part I and II we have seen how to install FreeNAS and configuring Storage. Here we can see how to install plex media server for setting up a volume.
For this setup, I have used total 3 disks in my server. My first disk holds the FreeNAS installation and other two disks are used for Storage purpose. Here I’m going to configure Plex Using RAID1 Mirror method. Data’s will be safe and performance will be good.
- Volume name I’m going to use in this article is “tecmint_vol“.
- Dataset name I have choose as “tecmedia“.
- Dataset for jails as tecmint_jails.
- Sharing name for CIFS Dataset will be tecmint_broadcast.
2. Now login into the FreeNAS Dashboard, click on Storage from the top menu, then click on ZFS Volume Manager to create a new Volume for our media server.
3. Next, we need to define our Volume name, Here we going to use “tecmint_vol” as our volume name. Under available disks we can see + sign click it to add the available disks for our Plex storage.
While adding FreeNAS storage, it will ask you to define RAID level for our added disks, here we are using two disks for FreeNAS, so choose Mirror Option and click on Add volume to add our new volume.
Step 2: Creating a Dataset for Plex Storage
4. After creating a new volume, now we need to define a dataset. Dataset it just like a folder with advance options such as compression, Quota, Share type, Reduplication, Record size and much more.
To create a Dataset in our new volume choose the volume, Now we will get the menu in bottom click on “Create ZFS dataset“. In the POPup window we have to define our dataset name as “tecmedia” don’t change any other settings than providing a name to our data-set.
5. Now from the “Active Volumes” tab, select the tecmedia data-set to grant correct permissions. choose Change Permission and change the permissions, Our media need to stream to every (Anonymous) user.
So, set the permissions has READ, WRITE, EXECUTE for Other. If we need to get the same privileges for every files which ever dropped into our data-set we have to choose Recursively and then click on Save to save the changes.
6. Next, we need to create a Dataset for Jails. Again for creating a Jails we have to choose our volume and create a Dataset. The use of this data-set is to store the plugins, So while we downloading the plugins for FreeNAS every plugins will be pulled into this data-set (Folder).
For creating a data-set, we have to choose our volume tecmint_vol and click Create ZFS data-set from bottom. Give the Dataset name as tecmint_jails and click on Add Dataset as shown in the below picture.
7. Before configuring Jails directory, make sure to check default network route. We need to configure the IPv4 Default Gateway under Network TOP Menu, Global Configuration. Here my default gateway is my Router IP 192.168.0.1.
8. Then choose Jails TAB and choose the dataset directory which we have created for Jails and save the changes.
9. Next, define the Jail Root for FreeNAS to store downloaded plugins, select Jails from the top menu and then go to the Configuration under Jails Menu and add the path of dataset directory i.e. “tecmint_jails“.