HomeLab.net.ua

Твоє залізо. Твої правила. Твоя мова.

Sunshine і Moonlight вдома: запуск і лаг без магії

Опубліковано Оновлено

Sunshine і Moonlight вдома: запуск і лаг без магії

Sunshine – open-source хост для GameStream-сумісного стримінгу, а Moonlight – клієнт для прийому відео, звуку й введення з ігрового ПК. У домашній мережі ця зв’язка дозволяє запускати гру на основному комп’ютері, а грати з ноутбука, mini PC, Steam Deck, телефона або телевізора без окремого ігрового заліза біля екрана.

Sunshine і Moonlight для домашнього стримінгу ігор працюють добре, коли немає вузького місця в трьох вузлах: енкодер GPU на хості, стабільна мережа без стрибків затримки і декодер на клієнті. Для 1080p цього зазвичай достатньо майже без тюнінгу. Для 4K 60 fps дрібні проблеми у Wi‑Fi, роутері або ТВ-приставці видно одразу.

Нижче – короткий запуск, вибір H.264, HEVC або AV1, поведінка контролерів, перевірка лагу і симптоми, за якими видно, де саме ламається стрим.

Що дають Sunshine і Moonlight у домашній мережі

Sunshine захоплює зображення гри, кодує його на GPU і передає клієнту. Moonlight декодує потік, повертає натискання клавіш, мишу, gamepad і синхронізує звук.

Головний виграш вдома – не в економії трафіку. Потужний ПК стоїть в одному місці, а точок доступу до нього кілька. Для сюжетних ігор, емуляторів, RPG, стратегій і більшості аркад цього вистачає навіть через добрий Wi‑Fi. Для шутерів і файтингів межа відчувається раніше: там критичні jitter і рівний frame pacing.

У Sunshine і Moonlight для домашнього стримінгу ігор сильна сторона проста: трафік лишається в локальній мережі. Затримка тут залежить від домашнього заліза, а не від маршруту через зовнішній сервіс.

Який результат реально отримати вдома

Найпростіший робочий режим – 1080p 60 fps на Ethernet або доброму Wi‑Fi 5/6 клієнті. 1440p теж зазвичай не проблема, якщо хост має апаратний HEVC, а клієнт уміє його нормально декодувати. 4K частіше впирається не в пропускну здатність, а в декодер телевізора, Android-приставки або старого ноутбука.

Є ще один неочевидний момент. Локальний стрим прибирає шум і тепло біля телевізора, але не лікує проблеми самої гри. Якщо на хості статери, shader compilation або CPU впирається в 100%, клієнт отримає ті самі ривки ще й з витратами на кодування.

Яка мережа потрібна для Sunshine і Moonlight без помітного лагу

Для стабільного стриму важливі не пікові мегабіти, а рівна затримка. Найкращий сценарій – Ethernet на хості й клієнті. Якщо один із них сидить на Wi‑Fi, дріт краще залишити хоча б на ігровому ПК, щоб бездротовим був лише один сегмент.

У локальній мережі 1 GbE вистачає з великим запасом. Проблема рідко в bandwidth. Частіше заважають стрибки latency, перевантажений роутер, агресивний power saving на Wi‑Fi адаптері або спільний ефір із телевізором, камерами й резервними копіями. Якщо хост ще й качає оновлення або NAS ллє великі файли, QoS уже має сенс. Для MikroTik це зручно закривається через пріоритезування трафіку для ігор через QoS.

Sunshine і Moonlight для домашнього стримінгу ігор нормально переносять високий bitrate, але погано переносять jitter. Саме тому 200-300 Мбіт/с по Wi‑Fi можуть відчуватися гірше, ніж стабільні 80 Мбіт/с по дроту. Якщо на хості досі 1 GbE, міняти її на 2.5 GbE заради самого стриму сенсу мало. При змішаному навантаженні з NAS або копіюванням великих образів допоможе окремий розбір про 2.5GbE мережеву карту для ігрового ПК.

Коли Wi‑Fi ще нормальний, а коли вже ні

Wi‑Fi 5 у чистому ефірі часто достатній для 1080p і 1440p. Wi‑Fi 6 додає запас по стабільності, якщо клієнтів багато. Найгірший варіант – 2.4 GHz, mesh із бездротовим uplink або телевізор у дальній кімнаті за двома стінами. У таких схемах картинка може лишатися різкою, але керування вже відчувається ватним.

Проблемний симптом впізнається швидко: середня швидкість ніби висока, а раз на 10-20 секунд з’являється мікрофриз або короткий стрибок затримки. Майже завжди це мережевий шум, а не кодек.

Що має вміти роутер

Від роутера не потрібні екзотичні функції. Потрібно, щоб він не задихався під паралельним навантаженням і не мав дивного bufferbloat. Дешеві моделі часто дають нормальний speedtest, але під навантаженням накопичують чергу пакетів. Для відеостриму це виглядає як рівний bitrate з ривками керування.

Як встановити Sunshine на хост і підключити Moonlight на клієнті

Базовий запуск короткий: ставиться Sunshine на ігровий ПК, Moonlight – на клієнтський пристрій, після чого обидва спаровуються по PIN-коду. Для першого старту достатньо, щоб обидва пристрої були в одній мережі і хост не блокував потрібні підключення firewall’ом.

  1. Встановіть Sunshine на хост із офіційного сайту Sunshine.
  2. Запустіть службу і відкрийте веб-інтерфейс Sunshine.
  3. Створіть облікові дані для входу в локальну панель.
  4. Перевірте список застосунків. За потреби додайте гру вручну.
  5. Встановіть клієнт із офіційного сайту Moonlight на ноутбук, handheld, телефон або приставку.
  6. Знайдіть хост у Moonlight, оберіть його і введіть PIN, який покаже клієнт.
  7. Підтвердьте спаровування в Sunshine і запустіть тестову гру.

Якщо хост не знаходиться автоматично, зазвичай проблема в локальному firewall, іншій підмережі або гостьовому SSID, де клієнти ізольовані один від одного. У багатьох роутерах client isolation увімкнена саме для гостьової мережі, і стрим там або не піднімається, або працює криво.

Що виставити в Sunshine одразу після інсталяції

Спершу варто вибрати роздільну здатність і fps під клієнт, а не під максимум хоста. Якщо телевізор реально показує 1080p 60, 4K-потік лише збільшить навантаження на енкодер і декодер. Друга точка – кодек. Для першого запуску H.264 найменш вибагливий. Потім уже можна переходити на HEVC або AV1.

Ще одна корисна звичка – окремий ярлик на Steam Big Picture, Playnite або launcher, а не старт одразу в desktop streaming. Повний десктоп зручний для діагностики, але в ігровому режимі менше шансів зловити дивну поведінку миші, HDR або перемикання дисплеїв.

Як будити хост без походу до столу

Якщо ігровий ПК часто спить, локальний стрим швидко втрачає сенс без нормального пробудження. Тут допомагає Wake-on-LAN сервер для віддаленого ввімкнення хоста. Інакше кожен сеанс починається з ручного вмикання машини, а це ламає весь сценарій диванного доступу.

Коли вибирати H.264, HEVC або AV1 у Sunshine

Вибір кодека залежить від роздільної здатності, декодера клієнта і запасу по latency. H.264 – найсумісніший варіант і добра відправна точка. HEVC зазвичай дає кращу картинку на тому самому bitrate, особливо від 1440p і вище. AV1 має сенс лише тоді, коли і хост, і клієнт підтримують його апаратно без штрафу по затримці.

Для 1080p 60 H.264 часто вистачає повністю. Перехід на HEVC помітний, коли треба зменшити bitrate без мила або підняти роздільну здатність. Для 4K різниця з H.264 видно швидше. Якщо клієнт декодує HEVC або AV1 через CPU, а не через dedicated block, виграш у якості з’їдається лагом і пропущеними кадрами.

Sunshine і Moonlight для домашнього стримінгу ігор з AV1 виглядають привабливо, але саме тут часто ховається зайвий тюнінг. Підтримка може бути формальною, а реальний декод на конкретній Android-приставці або старому mini PC виявляється нестабільним. Для живого ігрового сеансу HEVC частіше дає кращий баланс сумісності й якості.

Що вибрати для 1080p, 1440p і 4K

Режим Оптимальний старт Коли міняти
1080p 60 H.264 На HEVC, якщо хочеться нижчий bitrate або менше артефактів у темних сценах
1440p 60 HEVC На H.264, якщо клієнт погано декодує HEVC
4K 60 HEVC На AV1 лише з гарантованим апаратним декодом на клієнті

Де AV1 ламається частіше за інші кодеки

Проблемні місця тут типові: старі телевізори, дешеві Android-box і тонкі клієнти без нормального hardware decode. Симптоми впізнавані: звук іде, інтерфейс Moonlight живий, а відео сиплеться, чорніє або йде ривками при нормальній мережі. У такому разі краще одразу повернутися на HEVC, а не шукати проблему в роутері.

Як працюють контролери, звук і введення через Moonlight

Moonlight передає gamepad, клавіатуру, мишу і аудіо назад на хост як віддалені пристрої введення. У нормальній схемі це прозоро для гри: контролер видно як локальний, звук повертається без додаткових дій, а миша поводиться майже як напряму підключена. Проблеми з’являються на стику драйверів, overlay і нестандартних розкладок введення.

З контролерами найменше клопоту з типовими XInput-сумісними моделями. Exotic gamepad, Bluetooth-ланцюжок через телевізор і ще одна прокладка у вигляді стороннього remapper часто створюють дубльоване натискання або дивну мертву зону. Якщо кнопки спрацьовують двічі, спершу краще прибрати всі емулятори контролерів на хості.

З мишею типова історія інша: у desktop режимі курсор може поводитися нормально, а в грі камера обертається ривками або не ловить relative input. Це трапляється в іграх, які мають окрему логіку raw input, fullscreen exclusive і античит. У таких випадках запуск через launcher або Big Picture працює стабільніше, ніж стрим у голий робочий стіл.

Що часто стається зі звуком

Розсинхрон звуку зазвичай не живе окремо. Якщо аудіо відстає або хрипить, спершу треба дивитися на перевантаження декодера клієнта, packet loss або піки затримки в мережі. Чисто аудіопроблеми без відеосимптомів трапляються рідше.

Як перевірити затримку, втрати пакетів і реальну якість стриму

Щоб знайти вузьке місце, треба відокремити три етапи: захоплення і кодування на хості, передача мережею та декодування на клієнті. Якщо картинка чітка, але керування запізнюється, це не завжди мережа. Якщо фризи повторюються через однакові проміжки, винен може бути power saving, scan на Wi‑Fi або фонове навантаження на GPU.

Швидка перевірка без інструментального зоопарку

  1. Запустіть гру на хості локально і переконайтеся, що без стриму вона йде рівно.
  2. Підключіть клієнт по Ethernet, якщо це можливо, і порівняйте поведінку з Wi‑Fi.
  3. Перемкніть кодек на H.264. Якщо проблема зникла, вузьке місце в декодері або енкодері HEVC/AV1.
  4. Зменште роздільну здатність або fps. Якщо лаг зменшився різко, клієнт не тягне декод.
  5. Запустіть безперервний ping до хоста з клієнта і дивіться не лише на середнє значення, а й на стрибки.
ping 192.168.1.10

Якщо ping рівний, а фризи лишилися, дивитися треба в бік GPU encode, frame pacing гри або декодера клієнта. Якщо середня затримка мала, але раз на кілька секунд є сплески, мережа вже під підозрою. Sunshine і Moonlight для домашнього стримінгу ігор часто ламаються саме на цих коротких сплесках, а не на середньому RTT.

За якими симптомами видно конкретну проблему

Симптом Ймовірна причина
Мило без фризів Замалий bitrate або невдалий кодек для цієї роздільної здатності
Ривки кожні 10-20 секунд Jitter, перевантажений Wi‑Fi, bufferbloat на роутері
Звук іде, відео сиплеться Клієнт не тягне декод HEVC або AV1
Локально гра плавна, у стримі ні Encode/decode bottleneck або мережеві стрибки
Чорний екран після старту гри Проблема з fullscreen, HDR, overlay або перемиканням дисплея

Чому Sunshine і Moonlight лагають навіть у сильній домашній мережі

Сильна мережа ще не гарантує хорошого стриму. Лаг часто з’являється через фактори, які speedtest не показує: стрибки затримки, захаращений ефір, невдалий кодек, overlay, HDR, variable refresh rate або гру, що поводиться дивно в borderless fullscreen. Фраза «роутер швидкий» тут майже нічого не пояснює.

Чорний екран після запуску гри

Часто це конфлікт між захопленням кадру, fullscreen exclusive, HDR або перемиканням на інший дисплей. Деякі ігри після старту міняють режим виводу, і Sunshine втрачає стабільне джерело картинки. Найшвидший тест – вимкнути HDR, спробувати borderless window і запустити гру через launcher, а не з desktop streaming.

Фризи при нормальному bitrate

Якщо bitrate тримається, а картинка підвисає, винен зазвичай не канал, а нерівномірна доставка пакетів або проблеми на клієнті. Часто так поводяться ТВ-приставки з агресивним thermal throttling. Перші хвилини все добре, далі декодер починає пропускати кадри. На ноутбуках схожий ефект дає battery saver.

Звук відстає від зображення

Тут краще шукати не в аудіодрайвері, а в загальному ланцюжку затримки. Якщо клієнт перевантажений декодом, звук накопичує буфер і їде слідом. Якщо проблема з’являється лише на телевізорі, а на ноутбуку її немає, винен клієнтський пристрій або його аудіотракт.

Керування ватне, хоча картинка рівна

Такий симптом часто дає телевізор із важкою постобробкою зображення. Навіть ідеальний стрим псується, якщо на екрані ввімкнені motion smoothing, noise reduction або інші «покращувачі». Для стриму потрібен Game Mode. Інакше частина боротьби за мілісекунди в мережі просто втрачає сенс.

Коли Sunshine і Moonlight вже не підходять і що міняти далі

Якщо після дроту, адекватного кодека і базової перевірки лаг лишається, проблема вже не в дрібних налаштуваннях. Найчастіше впирається один із чотирьох компонентів: клієнтський декодер, Wi‑Fi сегмент, енкодер GPU або сам екран. Далі краще міняти слабку ланку, а не безкінечно крутити bitrate.

Типовий глухий кут – спроба отримати 4K 60 HDR через телевізор із посереднім Wi‑Fi і слабким декодером. У такій схемі перехід з H.264 на HEVC або AV1 не рятує. Раціональніше знизити режим до 1440p, підключити зовнішній клієнт по Ethernet або перейти на mini PC біля ТВ. Ще один частий випадок – handheld або тонкий ноутбук, який добре тягне 1080p, але сиплеться на 4K через обмеження декодування.

Коли треба грати поза домом, домашній стрим уже залежить не лише від локальної мережі. Тоді доводиться окремо вирішувати доступ до LAN через VPN, і для цього корисне порівняння Tailscale чи WireGuard для доступу до домашньої мережі. Локальна зв’язка може бути ідеальною, а інтернет-маршрут зіпсує все за межами квартири.

Для дому ця зв’язка закриває сценарій дуже добре, якщо дивитися на неї як на ланцюжок конкретних вузлів. Спершу тюнінгується не картинка, а шлях сигналу: хост по дроту, клієнт із нормальним декодом, Game Mode на екрані, H.264 або HEVC без фанатизму. Якщо лаг лишається і після цього, межа вже в залізі або бездротовому сегменті.

Офіційні сайти: Sunshine і Moonlight.

Коментарі

Коментарів ще немає. Обговорення - у Telegram.