Стриминг игр с PC на телевизор

Исходные данные

Не так давно я закончил ремонт в квартире и обзавелся новым телевизором Samsung 2022 года с Tizen на борту. Телевизор весит на стене в гостиной, а компьютер на базе Gentoo Linux с 1070ti на борту стоит в кабинете. Между ними стена.

Моя девушка спросила, можем ли мы вместе играть во что-то на телевизоре и я задумался об этом. Если купить геймпады не проблема, то что делать с трансляцией игр на телевизор. Я уже думал было, что можно купить сосноль какую-нибудь и не париться, но сильно уж меня задушила жаба огромного количества игр в steam/egs/gog, чтобы потом их еще покупать на сосноль по текущим ценам. Да и проблемы с оплатой на соснолях тоже делают больно. Так что я начал изучать тему стриминга игр с компа на телевизор.

Возможные варианты стриминга

HDMI кабель

Самый очевидный вариант - кабель. Но из-за планировки моей квартиры, мне бы пришлось тянуть по полу ~8 метров кабеля, который никуда не спрячешь и который, более того, постоянно придется убирать/доставать для игры. Такой вариант я решил рассматривать в худшем случае. Есть hdmi-etherner и hdmi-wifi удлинители. Но, для 4к, они стоят совсе не дешево, особенно вторые(по 300$), которые поддерживают декодирование. А про ethernet удлинители у меня возникал вопрос с интернетом на PC - пришлось бы покупать wifi модуль на него, как я понял(хотя возможно я и не прав)

Я даже начал грешным делом рассматривать вариант проделать в стене дырку для прокидывания кабеля, но это вообще было из области помутнения разума.

Steam Link

Самым первым мне в голову, конечно же, пришел Steam Link. К сожалению, коробка устарела. Максимум 1080p. Плюс еще и не развивается и не обновляется больше. Я из Беларуси и нашел на вторичке ее за ~50 баксов. Но нахрена нужен 4к телек, на котором нельзя играть в 4к! Дальше я узнал про возможность поставить steamlink приложение на raspberry pi 3/4. Тогда открываются возможности для 4k гейминга, но отзывы на инпут лаг еще более низкие, так же жалуются на периодически ломащие все обновления. Цена вопроса становится где-то в 100$ за малинку и время на установку всего и вся. Потом я догуглился до варианта приложения steam link, которое есть под android/samsung tizen/lg/etc. Но, так как у меня телевизор samsung 2022 года, а это приложение для него доступно только в моделях до 21 года включительно, то и здесь меня ждало фиаско, братан.

Crhomcast/Miracast/*cast/SteamLink for Android

Следующим вариантом были различные трансляции экрана на телевизор. Но для всех них пришлось бы покупать, в моем случае, приставку на android, потому что samsung. Лучшим вариантом для этого дела считается Amazon Fire TV Stick 4K, который дает самые низкие задержки и лучшее латенси среди таких приставок. Его цена на вторичке у меня ~ 70$. Так как я не горел желанием покупать смарт-приставку на новый телевизор со смарт тв(да и вообще тратить на это деньги мне сильно не хотелось) , то я продолжил искать дальше.

Nvidia Shield

Судя по отзывам, даже несмотря на то, что приставке уже 4 года, она показывает лучшие результаты для стриминга игр по отзывам всех, кого я нашел. Но у нее есть 2 минуса: 4 года и цена. Цена за эту приставку почти 250$+ у нас. Такая цена меня вообще не устраивала, если честно. Если на стик или бокс я бы еще раскошелился, то это уже был перебор. Более того, я не мог поверить, что нет в 2023 году способа стримить бесплатно и качественно. В одном из тредов по шилду я узнал о nvidia gamestream, который они закрыли в 2023 году и о том, что появились опенсорсные реализации этой технологии: sunshine(сервер) и moonlight(клиент) .

Sunshine + Moonlight

Sunshine - опенсорсная cерверная часть, которая устанавливается на комьютер, с которого вы планируете стримить игры.

Sunshine - это хостинг игровых стримов для Moonlight. Он предлагает возможности облачного игрового сервера с низкой задержкой и поддержкой графических процессоров AMD, Intel и Nvidia для аппаратного кодирования. Также доступно программное кодирование. Подключиться к Sunshine можно с любого клиента Moonlight на различных устройствах. Веб-интерфейс позволяет выполнять настройку и сопряжение клиентов через любимый веб-браузер. Сопряжение может осуществляться с локального сервера или с любого мобильного устройства

Moonlight - опенсорсная клиентская часть, которая устанавливается на устройство, на котором вы планируете играть. Его можно, как я понял, использовать даже с GeForce Experience в качестве сервера, но так как меня инетерсовал linux-хост, то этот вариант мне не подходил

Moonlight позволяет играть в компьютерные игры практически на любом устройстве, независимо от того, находитесь ли вы в другой комнате или за много километров от своей игровой установки.

Судя по отзывам, это решение имеет все плюсы Nvidia Gamestream + активная разработка и улучшение. Поэтому я решил попробовать запустить это все у себя. И оно еще и бесплатное - если бы не пошло, то все равно было бы все ок.

Установка Moonlight на Samsung 2022 с Tizen

Первым делом я решил попробовать установить виджет на свой телевизор. Если бы это не прошло, то дальше бы и нечего было пытаться. Но все оказалось просто безумно просто:

https://github.com/OneLiberty/moonlight-chrome-tizen

Полностью по инструкции из этого репозитория и через пару минут у

меня на телевизоре стоит виджет мунлайт, который запускается. Первый этап прошол успешно, поэтому я перешел к более серьезному, как мне казалось, вопросу - установке сервера.

Установка Sunshine на Gentoo Linux

Первой проблемой стало то, что для sunshine нет ebuild'ов(инструкция для сборки) под мою Gentoo. Они есть для Fedora/Ubuntu/Debian/Flatpak/AppImage и так же есть инструкция для docker(решение, которое не рекомендуется использовать как отдельный self-host). Очевидно, что меня это все не устраивало. Я боялся, что использование контейнеров можно сказаться на производительности видеокарты, а остальные пакеты не установились бы у меня. Тогда я решил попробовать собрать приложение из исходников.

Ничего сложного в этом не оказалось. Для начала я выкачал репозиторий:

git clone [email protected]:LizardByte/Sunshine.git cd Sunshine git submodule update --init --recursive

Затем я поробовал собрать проект, но мне не хватало библиотек, поэтому я установил их:

sudo emerge intel-mediasdk numactl avahi libappindicator

а затем собрал Sunshine.

cd Sunshine mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<PathToDirectory> .. make make install

В итоге у меня появилась директория с установленным Sunshine.

Попытка запустить его увенчалась успехом, но я не мог пройти веб авторизацию, потому что не работали никакие скрипты, а веб страничка выглядела как просто текст. Я изучил код и понял, то не хватает модулей node. Так как я не знал, какие нужны, а в репозитории их не было, то я выкачал портабл версию для Windows, где была директория node_modules, скопировал ее к себе в тоже самое место и все заработало - веб страница стала работать отлично. Я прошел авторизацию. Затем связал moonlight и sunshine, указав на телевизоре ip адрес сервера(тут я столкнулся с проблемой, что для ввода адреса не открывалась виртуальная клавиатура и я воспользовался приложением для пульта на телефоне. Хотя, сейчас, я понимаю, что нужно было попробовать вызвать меню цифр на пульте самсунга - может быть оно сработало бы).

После подключения в moonlight появляется сопряженный компьютер и возможность настройки качества трансляции/частота и еще несколько настроек, которые, судя по моему опыт, лучше не включать. Но, наверное, у каждого будет по-разному.

В Sunshine можно добавлять приложения, которые будут отображаться как ярлыки в Moonlight. По умолчанию там добавлен стим и десктоп в обычном и низком разрешении. Я, конечно же, запустил стим, который запускается в режиме big picture. У меня есть геймад проводной и я его подключил к One Connect Box (внешний блок моего телевизора для подключения перефирии) и он сразу заработал. Так как карта у меня не самая топовая и очень требовательных игр у меня нет, поэтому протестировал я все это на Rayman Origins, Dishonored RHCP, Atom RPG и Raise of the Tomb Raider, которая запущена из EGS, который запускается через стим.

Поиграл немного в Rayman в 4к - все супер. Не заметил никаких лагов или проблем с картинкой.

В Dishonored и Tomb Raider при трансляции в 4к сверху экрана у меня появлялась тонка черная линия и было видно, что немного плывет кадр там же, но я думаю, что тут дело в моей видеокарте. Я даже на компе в томб райдер играю меньше, чем в 4к. Атом - все идеально.

Я не проверял игру на требовательных к латенси играх: файтингах/fps, потому что я почти не играю в это. Но учитывая, что вся установка и настройка заняла у меня порядка пары часов и нуль финансовых вложений, то кто-нибудь может проверить это сам, кому данный вопрос интересен. Судя по отзывам на reddit, связка sunshine + moonlight дает лучшие показатели по производительности и латенси после Nvidia Shield.

Звук тоже транслируется на телевизор, так что этот вопрос тоже решен отлично

При использовании карты nvidia, в инструкции к sunshine рекомендуется наложить на нее патчи. Я этого не делал, потому что и так пока доволен результатом. Возможно с ними будет еще лучше. На данный момент я хочу купить себе какое-то видео лучше моего, чтобы точно не париться в игре в 4к и купить беспроводные джойстики для игры вдвоем в удобстве.

Надеюсь, что кому-то будет полезна эта статья. Всем спасибо. Все свободны.

4.2K4.2K показов
6.7K6.7K открытий
76 комментариев

Тонна пердолинга вместо:
проделать в стене дырку для прокидывания кабеля

Ответить

да. linux-way же

Ответить

Я тоже не люблю провода, в 2023 херачить стены надо прокладки кабеля моветон

Ответить

Респект за такой подробный лонг.

Ответить

Спасибо

Ответить

Нужно установить докер почитав статьи по установки на нужную операционную систему. потом скачать Dockerfile из репозитория и выполнить эту команду

Ответить

Спустя 3 дня и много часов поиска, изучения материала я понял, что если бы хоть в одной инструкции было сказанно "для установки вам понадобиться установить докер на компьютер, открыть командную строку (я просидел в докере 2 часа и совершенно случайно понял, что вводить то надо в консоль НЕ в докере) и ввести команды по очереди", я бы вообще не имел ни одной претензии. А так инструкция эта и все ей подобные составлены для людей как минимум со знаниями в сфере программирования и знакомыми с терминами. И ни одной инструкции в интернете на языке, понятном любому)
Вопрос закрыл буквально минут 30 назад, очень жаль, что ваш ответ не был со мной 3 дня назад, но в любом случае благодарю за попытку помочь)

Ответить