Стриминг игр с 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 git@github.com: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к и купить беспроводные джойстики для игры вдвоем в удобстве.

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

2323
79 комментариев

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

5
Ответить

да. linux-way же

3
Ответить

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

1
Ответить

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

3
Ответить

Спасибо

Ответить

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

Ответить

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

6
Ответить