Nvidia'nın GameStream'i öldü. Sunshine ve Moonlight harika alternatiflerdir.

 Bir hackathon projesi olarak başlayan şey, artık tam teşekküllü bir akış platformudur.


Nvidia'nın GameStream'inin tek bir işi vardı, kendi adıyla: PC'nizdeki Nvidia grafik kartından TV'nize bağlı Nvidia Shield'e (ya da eskiden bir Shield tablete) oyun akışı yapın. Bu işi oldukça iyi yaptı, kurulumu basitleştirdi ve bazı özel akış yumuşatmalarla oyunları optimize etti. Şimdi Nvidia, GameStream'i Shield cihazlarından kaldırıyor; ancak daha da iyi bir DIY oyun akışı çözümü zaten mevcut. Buna bir göz atalım ve geliştiricilerle bunu neden ve nasıl yaptıkları hakkında konuşalım.
Nvidia'nın GameStream'i, donanım şirketinin Shield ürünleri için satış konuşmasının önemli bir parçasıydı.

Nvidia yerel akışla bitti

Nvidia, bu ay gelen bir Shield güncellemesinin "GameStream özelliği artık uygulamada kullanılamayacak" hale getireceğini söylüyor. Shield güncellemesini atlamaya çalışırsanız, GameStream yine de bir noktada çalışmayı durduracaktır (ve muhtemelen Windows'taki GeForce Experience uygulamasından kaldırılacaktır). Bu arada, bu güncellemeden kaçınmaya çalışmak, Kalkanınızda Nvidia'nın önerilen yedeklerinden biri olan GeForce Now'ı kullanmamak ve sistem güncellemeleriyle birlikte gelen diğer tüm güncelleme düzeltmelerini ve özelliklerini kaçırmak anlamına gelir.

Benim gibi bir Shield sahibiyseniz, bu berbat bir şey. Shield cihazlarının kendilerine has avantajları vardır ve bugüne kadar piyasaya sürülen tüm Android/Google TV cihazları arasında en uzun ve en tutarlı güncelleme akışını alırlar. Akış kutuları olarak hala mükemmel şekilde işlevseldirler (ve Google bir NFL paketi indirirse daha da çekicidir). Ancak hem Shield hem de GeForce grafik kartına sahip olmanın sağladığı büyük fayda kısa süre sonra ortadan kalkacaktır.

Şirketin yerel akış yerine önerdiği Steam Link, oynamak istediğiniz tüm oyunlar Steam'deyse, yeterince iyi performans gösteriyorsa ve sisteminiz için bir istemci varsa oldukça basit bir seçenektir. Steam Link'te çözünürlüklerin ve denetleyici seçeneklerinin ayarlanmasının biraz meşakkatli olduğunu ve ağ güvenilirliğinin (nispeten, sübjektif olarak) yeni alternatiflerden daha az sağlam olduğunu gördüm. Nvidia'nın kendisi, optimum ayarlarla Steam Link'in kendi akış kodlayıcılarının arkasında hala 10 ms gecikme olduğunu kabul ediyor.

Nvidia'nın diğer önerisi ise GeForce Now. Daha yüksek seviyelerinde oldukça etkileyici olsa da, oyun kitaplığınızdan yalnızca sınırlı bir dilim sağlar. Harika bir geniş bant bağlantısı ve aylık abonelik gerektirir ve Moonlight'tan (özellikle Apple TV dahil) çok daha az müşteriye hizmet verir.

Moonlight için Linux yaşamının kanıtı.

Daha iyi akış istemcisi: Moonlight

GameStream, Nvidia ekipmanını zorlamak için tasarlanmış olsa da, aynı zamanda harika Moonlight yazılımının yaratılmasına da yol açtı. Bu ücretsiz, açık kaynaklı uygulama, insanlara 2018'den beri GeForce kartlarının çıktılarına her tür ekrandan erişme olanağı sağladı. Marvel's Midnight Suns'ı kanepemde bir iPad'de ve odamda bir Windows dizüstü bilgisayarda Elden Ring'i böyle oynadım. kanunların yeri, kendi evimden akış.

Moonlight ile, bir Windows PC içindeki bir Nvidia kartından bir Windows/Mac/Linux bilgisayara, Chrome OS, iOS ve Android ve Amazon FireOS cihazlarına, bir Raspberry Pi 4'e ve isterseniz tamir etmeye istekli olabilirsiniz. , PlayStation Vita, Wii U, LG WebOS ve diğer tek kartlı bilgisayarlarda homebrew uygulamaları. Moonlight, bu sisteme bir Linux uygulaması olarak oldukça kolay bir şekilde kurulduğundan, Steam Deck ile de çalışır. Belirtildiği gibi, oyun akışı PC'nizi ve ağınızı bu şekilde kurduysanız, bu cihazın ev ağınızda olması bile gerekmez.

Tüm bu çabalar, Nvidia GameStream'i bir hizmet olarak kullandığında boşa gidebilirdi. Şans eseri Moonlight, farklı ve daha esnek bir sunucu olan Sunshine ile de sorunsuz çalışır.

GameStream'in size yeterli seçenek ve ayar vermediğini düşünüyorsanız, Sunshine ... bu sorunu yaşamayacak.

Daha iyi akış sunucusu: Sunshine

Moonlight ekibi ve diğer geliştiriciler, Nvidia'nın GameStream'in kullanımdan kaldırılması için zaten bir yedek plana sahipti. Sunshine, açık kaynaklı, uygun şekilde adlandırılmış alternatif GameStream benzeri bir sunucudur. Kurulumu biraz daha zahmetli olsa da, GameStream'den çok daha kapsamlı ve kullanışlıdır:

  • Windows, Mac ve Linux'ta çalışır
  • Nvidia ile birlikte AMD ve Intel GPU'ları destekler
  • Gerekirse yazılım kodlaması ile de çalışabilir
  • GameStream'den çok daha fazla yerel çözünürlük seçeneğini destekler (özel dahil)
  • Bir web sayfası aracılığıyla yönetilir ve eşleştirilir
  • Birden fazla istemciye akış yapabilir

Sunshine ve Moonlight'ı ayarlama

Birçok kişi için Sunshine'ı kurmak, onu kurmak kadar basit olabilir. Minimum gereksinimleri okuyun, tüm belgeleri inceleyin, en son sürümü alın ve kurun. Windows ve Mac'te, sisteminiz muhtemelen bu uygulamanın bilinmeyen bir geliştiriciye ait olduğu konusunda sizi uyaracaktır; Bunda sorun yoksa yüklemek için tıklayın. Şu anda her sistemin belirli kurulumlar için üstesinden gelmesi gereken birkaç ekstra adımı vardır (Windows'ta oyun kumandaları, Mac'te ses, Linux'ta giriş); onları okuduğunuzdan emin olun.

Sunshine için yapılan işlerin çoğu bir web tarayıcısında gerçekleşir. Uygulama yüklendikten ve hizmet başlatıldıktan sonra, bir tarayıcı açın ve localhost:47990 adresine gidin (geçmek için tıklayabileceğiniz bir sertifika/güvenlik uyarısı alabilirsiniz). Bu web konsolu, Sunshine'ı bir Moonlight istemcisiyle eşleştirmek için bir PIN oluşturabileceğiniz, oyunlarınız için kısayollar oluşturabileceğiniz (bir sihirbaz aracılığıyla veya bir JSON dosyasını düzenleyerek), yapılandırmada ince ayar yapabileceğiniz (özel çözünürlükler ve FPS seçenekleri ekleme dahil) ve durdurabileceğiniz yerdir. / yeniden başlatın ve Sunshine ile ilgili sorunları giderin. Seyrek bir arayüz, ancak oldukça basit. İlk önceliğiniz yönetici şifrenizi değiştirmek olmalıdır.

Ağınızın dışından Sunlight sunucunuzda oyun oynamak istiyorsanız, Moonlight İnternet Barındırma Aracını alın. Windows PC'nizde çalıştırın ve Moonlight'ın dışarıdan bağlanmasına izin veren yönlendiriciniz aracılığıyla otomatik olarak güvenli UPnP bağlantısını oluşturmalıdır. Uzaklaşmadan önce Moonlight'ı aynı ağ üzerindeyken Sunshine sunucunuza bağlarsanız çalışmasını sağlamak daha kolaydır. Bunu yapamıyorsanız, genel IP adresinizi öğrenmenin iyi bir yolunu bulmak isteyeceksiniz (ve muhtemelen bir VNC bağlantısının hazır olmasını isteyeceksiniz).

GameStream veya Steam Link'e karşı Moonlight ile ilgili not edilmesi gereken bir şey, bağlantı kalitenizi ve hızınızı ince ayar yapmak için size çok daha fazla seçenek sunmasıdır. Uygulamanın oyun akışı sırasında tam olarak ne kadar bant genişliği kullanmayı amaçlamasını istediğinizi ayarlayabilir, kare hızı yerine kaliteye öncelik verebilir ve diğer seçenekleri belirleyebilirsiniz. Ayarlarda dolaşın ve Goldilocks bağlantı kurulumunuzu anlamak için biraz zaman ayırın.

Sunshine kullanarak oyunlarımı doğrudan Moonlight'ın arayüzünden başlatırken bazı sorunlar yaşadım; Görünüşe göre "Ayrılmış Komutlar" kutusuna her zaman doğru komutları girmiyorum. Ancak, yalnızca varsayılan "Masaüstü" kısayolunu çalıştırabilseniz bile, bunun da işe yaradığını belirtmekte fayda var. Bir masaüstüne geçerseniz, oyununuza gitmek ve onu başlatmak için dokunmatik ekranınızı veya fare imlecinizi (oyun kumandalarında başlat/menü/artı düğmesini basılı tutarak açılır) kullanabilirsiniz. Gecikme cezası yoktur; Sunshine ve Moonlight, üzerinde oyun oynamanız için gerçekten hiper-optimize edilmiş bir VNC bağlantısı açıyor.

Ay ışığı nasıl yapıldı

Moonlight, 2013 yılında Michigan Üniversitesi'nde bir hackathon olan MHacks'te bir grup Case Western Reserve Üniversitesi öğrencisi tarafından geliştirildi. Bu öğrencilerden biri olan Cameron Gutman, beklenmedik bir yerden ilham aldı: bir OUYA kutusu. Gutman'ın "birçok iyi oyunu" olmayan bir OUYA'sı ve bir Nvidia Kalkanı vardı. Gutman, Ars'a "SHIELD'e özel GameStream işlevini OUYA'da çalıştırmanın harika bir proje olacağını düşündü" dedi.

Gutman ve ekibi başladığında, GameStream protokolünün "çok daha basit" olduğunu yazdı. Şifreleme yoktu ve her protokol (oturum, video, ses, giriş) farklı bir bağlantı noktasına eşlenmişti. GameStream ayrıca istemci ve sunucu tarafında "oldukça ayrıntılı" oturum açarak öğrenme sürecini daha da hızlandırır. Gutman ve takım arkadaşı Diego Waxemberg, trafiği izlemek için Wireshark'ı çalıştırabilir ve ardından çeşitli oyun kumandası düğmelerinden sonuçları haritalandırabilir. Bu günlerde giriş şifrelidir; benzer bir hafta sonu tersine mühendislik oturumu çok daha hileli olurdu. Moonlight, MHacks ve HackCWRU (Case Western) gibi hackathon'larda ve ardından açık kaynaklı bir GitHub deposu olarak geliştirilmeye ve genişletilmeye devam etti.

Geliştirme ekibi için farklı nedenlerle üç büyük baş ağrısı vardır: Android, iOS ve gömülü istemciler.

Gutman, Android ekosisteminin "kabus gibi bozuk donanım kod çözücüleriyle dolu" olduğunu yazdı. Çipler üzerinde sistem (SoC'ler) tabanlı bazı aygıtlar, "yüzlerce milisaniye gecikme olmaksızın" kare çıktısı alabilmek için video bit akışlarının manuel olarak düzeltilmesini gerektirir. Aynı düzeltmeler gecikmeyi artırabilir veya tamamen başarısız olabilir. Moonlight Android'in decoder-errata.txt dosyasında, Pixel C içindeki Tegra X1'deki HEVC kod çözücünün belirli akışlarda nasıl gecikebileceği, ancak 2019 Shield TV'deki aynı Tegra X1'in nasıl olduğu gibi en dikkate değer kabuslardan bazılarını okuyabilirsiniz. Olumsuz.

Bu arada, iOS istemcisi tamamen farklı (ancak alışılmadık olmayan) bir sorunla kuşatılmış durumda: App Store incelemesi. Başlangıçta, Apple, işlevlerini doğrulamak için Moonlight akışının bir videosunu kabul etti, ancak gözden geçirenler sonunda uygulamayı kendileri test etmek istedi. GameStream veya Moonlight'ı kurmak, sunucu ile istemci arasında ekranda PIN doğrulaması gerektirdiğinden, Gutman'ın "eşleştirme gerektirmeyen tamamen güvenli olmayan bir sunucuyu taklit edecek ve bunu soran herhangi bir istemciye akış sağlayacak aktarma yazılımı yazması" gerekiyordu.

Ardından Uzak Masaüstü İstemcileri için App Store İnceleme Kılavuzu 4.2.7 geldi. Gutman, ekibinin Apple ile ileri geri gittiğini ve bir keresinde Moonlight'a izin verilmeyeceğinin söylendiğini söyledi. Ekip, sorunun Moonlight'ın bağlanmak için varsayılan bir uygulama olan Steam'i içermesi olduğunu sezmek zorunda kaldı. Apple'ın görüşüne göre Gutman, Steam'e bir Moonlight istemcisi aracılığıyla uzaktan bağlanmanın, "mağaza benzeri bir arayüz" veya "yazılımlara göz atma, seçme veya satın alma yeteneği" içeren 4.2.7(d)'yi ihlal etmiş olabileceğini tahmin etti. Bu kutucuğu iOS istemcisinden kaldırmak, Moonlight'ı mağazaya geri getirdi.

Karşılaştırıldığında, Moonlight'ın Raspberry Pi, Rockchip, Amlogic, i.MX, Tegra ve diğer SoC tabanlı cihazlarda çalışmasını sağlamanın zorlukları, gizemli olsa da daha basittir. Gutman, Ars'a, her üreticinin "kendi kod çözme API'sini yuvarladığını" söyledi, çoğu yetersiz belgelendi ve hatta bazıları aynı satıcının diğer ikili dosyalarıyla çelişiyordu. Çoğu, yavaş yavaş Video for Linux API'ye (V4L2) doğru ilerliyor, ancak bunun bile zorlukları var. Gutman ve ekibinin, her kartın çalışmasını sağlamak için her biri kendi benzersiz ağaç dışı çekirdek yamalarına sahip farklı FFmpeg çatallarıyla çalışan istemciler oluşturması gerekiyor.

Sunshine nasıl devreye girdi?

ReenigneArcher adlı bir geliştirici, orijinal geliştirici Loki'nin (aka loki-47-6F-64) devam edemeyecek kadar meşgul olmasının ardından Aralık 2021'de Sunshine'ın bakımını üstlendi. Başlangıçta mevcut projeleri RetroArcher'a çoklu platform desteği eklemenin bir yolu olarak Sunshine ile ilgilendiler, ancak Sunshine kısa süre sonra onların zamanını ve odak noktasını devraldı.

Yine de bu sadece - hatta çoğunlukla - onların işi değil. Bir Discord röportajında "Katkıların çoğu topluluktan geldiği için Sunshine muhtemelen biraz benzersiz bir açık kaynaklı projedir" diye yazdılar. Özellikle, Cameron Gutman, brad-richardson, psyke83 ve TheElixZammuto ağır katkıda bulunmuştur.

ReenigneArcher, Sunshine'ı canlı tutmanın en zor kısmının, genişleyen ekosistemdeki tüm olası senaryoları test etmek olduğunu yazdı. "Yalnızca Linux'ta, donanıma ve masaüstü ortamının türüne bağlı olarak 30'a yakın olası yakalama senaryosuna sahibiz. Ayrıca Windows ve MacOS'a sahibiz. Hem Linux hem de MacOS, x86_64'e ek olarak arm64'ü de destekler. ezici."

ReenigneArcher'a diğer Moonlight/Sunshine hayranları gibi neden Steam Link ile yetinemediklerini sordum. Steam Link, Parsec ve diğer sistemleri test ettiklerini ancak Moonlight ve GameStream'in en düşük gecikme sürelerini sunduğunu belirttiler. Sunlight genellikle Steam Link ve Parsec'ten daha iyi performans göstermiştir, ancak yine de GameStream'in biraz gerisindedir. Kararsız sürümlerde ilerleyen iyileştirmelerle, Sunshine ve Moonlight yakında GameStream ile aynı seviyeye, hatta bazı kurulumlarda onun önüne geçecektir. [Güncelleme 17:25 ET, 4 Nisan: ReengineArcher, gecikme eşlik iyileştirmelerinin artık kararlı sürümde mevcut olduğunu belirtti].

Moonlight ve Sunshine, daha büyük bir şirketin özel ancak küçük bir pazara olan ilgisini kaybetmesinden doğan bir başka odaklanmış, etkileyici açık kaynaklı projedir. İşte PC'nizden uzaktayken kendi PC oyunlarınız için bu çifti yararlı bulabileceğinizi umuyoruz.
Daha yeni Daha eski