1 puan yazan GN⁺ 3 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Moonshine, PC oyun görüntüsünü Moonlight istemcisine ileten ve klavye, fare, kontrolcü girişlerini host’a geri göndererek uzaktan oynamayı destekleyen bir Linux host’udur
  • Her stream için ayrı bir Wayland compositor kullanarak masaüstünden izole eder; stream sırasında host PC kullanılmaya devam edebilir ve monitörsüz sunucularda da çalışabilir
  • GPU üzerinden H.264, H.265 ve AV1 kodlama, 10 bit HDR, hareket, touchpad ve haptic dahil girişler ile Opus tabanlı düşük gecikmeli 5.1/7.1 kanal ses desteği sunar
  • Linux ve systemd, Vulkan video kodlaması yapabilen NVIDIA RTX, AMD RDNA2+ veya Intel Arc GPU, ayrıca Moonlight v6.0.0 veya üzeri gerekir
  • GameStream protokol trafiği uygulama katmanında tamamen şifrelenmediğinden portlar doğrudan internete açılmamalı; dış erişim için Tailscale, WireGuard veya ZeroTier gibi bir VPN gerekir

İzole oyun streaming’i

  • Her uygulama, host masaüstünden ayrı kendi streaming oturumunda çalışır
    • Stream sırasında host PC başka işler için kullanılabilir
    • Aktif masaüstü oturumu, monitör veya HDMI dummy plug olmadan headless sunucuda çalışır
  • GPU’nun Vulkan video kodlamasıyla H.264, H.265 ve AV1 işler
  • Desteklenen oyunlarda gerçek 10 bit HDR streaming sunar
  • Fare, klavye ve gamepad’i destekler; gamepad’in hareket, touchpad ve haptic girişlerini de işler
  • Ses, düşük gecikmeli Opus kodlaması kullanır ve stereo ile 5.1/7.1 surround desteği sunar

Çalıştırma gereksinimleri

  • Şu anda yalnızca Linux içindir; Arch Linux’ta test edilmiştir ve diğer Linux dağıtımlarında da çalıştığına dair örnekler vardır
  • Uygulama süreçlerini çalıştırmak ve yönetmek için systemd gerekir
  • Vulkan video kodlamasını destekleyen NVIDIA RTX, AMD RDNA2 veya üzeri ya da Intel Arc GPU gerekir
  • İstemci Moonlight v6.0.0 veya üzeri olmalıdır; eski sürümler veya resmi olmayan portlar için uyumluluk garanti edilmez

Kurulum ve çalıştırma

  • Arch Linux’ta AUR üzerinden yay -S moonshine ile kurulabilir
  • Kullanıcı oturum kapatmış olsa bile uygulamaları çalıştırmak için sudo loginctl enable-linger $USER kullanılır
    • Stream sırasında kullanıcı her zaman oturum açmış durumdaysa bu adım atlanabilir
  • sudo systemctl enable --now moonshine@$USER ile servisi açılışta başlatır ve hemen çalıştırırsınız
  • Kaynaktan derleme için clang, CMake, Rust, Wayland ve Vulkan header’ları, shaderc, Mesa, Opus, PulseAudio ile ilgili kütüphaneler vb. gerekir
  • Derlemeden sonra cargo run --release -- /path/to/config.toml ile çalıştırılır

Yapılandırma ve istemci bağlantısı

  • Belirtilen yolda dosya yoksa yapılandırma dosyasını otomatik oluşturur
    • AUR paketinin varsayılan yolu $XDG_CONFIG_HOME/moonshine/config.toml şeklindedir
  • Moonlight ilk bağlantıda bir PIN gösterir; host bildiriminden veya http://localhost:47989/pin adresinden eşleştirme yapılabilir
  • /submit-pin endpoint’ine uniqueid ve pin POST edilerek komut satırından da eşleştirme yapılabilir

Uygulama yapılandırması

  • config.toml içindeki her [[application]], izole oturumda çalıştırılacak programı tanımlar
    • title: Moonlight’ta gösterilecek ad
    • boxart: isteğe bağlı kapak görseli yolu
    • command: çalıştırılacak dosya ve argüman listesi
  • pre_command, uygulama başlamadan önce komutları sırayla senkron çalıştırır ve hepsi bitene kadar oturum bekler
  • post_command, streaming bittikten sonra komutları sırayla senkron çalıştırır ve hepsi bitene kadar sunucu bekler
  • Bu sayede çakışan servisler durdurulabilir veya streaming öncesi/sonrası GPU durumu değiştirilebilir

Otomatik uygulama keşfi

  • Steam scanner, belirtilen Steam kütüphanesinde kurulu oyunları bulur ve oyun ID’sini içeren çalıştırma komutunu oluşturur
  • Desktop scanner, belirtilen dizindeki .desktop dosyalarından uygulamaları bulur
    • Terminal uygulamalarının dahil edilip edilmeyeceği ve ikon yollarının çözümlenip çözümlenmeyeceği yapılandırılabilir

Sunshine ile farkları ve sınırlamalar

  • Sunshine daha fazla platformu ve genel olarak daha fazla özelliği destekler, ancak Moonshine yalnızca Linux içindir
  • Moonshine’ın ayırt edici yanı, streaming oturumunu masaüstünden izole ederek host’un kullanılmaya devam edebilmesi ve aktif masaüstü olmadan da çalışabilmesidir
  • İki istemciye eşzamanlı streaming şu anda desteklenmez ve projenin odağı da değildir

Ağ güvenliği

  • Moonshine genel ağlar için tasarlanmamıştır
  • Altta yatan GameStream protokolünün sınırlamaları nedeniyle trafik uygulama katmanında tamamen şifrelenmez
  • İnternet üzerinden streaming için Tailscale, WireGuard veya ZeroTier gibi bir VPN kullanılmalı; Moonshine portları doğrudan açılmamalıdır

Temel alınan projeler

  • Moonlight: Moonshine için istemci sağlar
  • Sunshine: Host API’sinin temelini sağlar
  • Inputtino: Giriş cihazı uygulamasının temelini sağlar
  • magic-mirror: Vulkan ve Wayland compositor kullanarak headless streaming için ilham vermiştir

1 yorum

 
GN⁺ 3 시간 전
Hacker News görüşleri
  • Özetle Nvidia GameStream tescilli bir teknolojiydi, sonra Nvidia bunu sonlandırdı; ardından Sunshine ve Moonlight tüm platformlarda düşük gecikmeli yayın desteği sunan açık kaynak sunucu/istemci olarak ortaya çıktı
    Game on Whales, çok kullanıcılı yayın ve sanal ekran ekleyerek mevcut oturum açılmış oturumları etkilemeyen, kendi kendine barındırılan bir Stadia/GeForce Now çözümüne daha yakın; Steam, Firefox vb. seçilmiş konteynerlerde çalıştırıyor
    Sonrasında Apollo ve Artemis sanal ekran yayını kurmayı basitleştirdi, ancak Apollo'nun sanal ekranı fiilen yalnızca Windows'a özel ve Moonshine bunu Linux sunucuda uyguluyor
    Apollo'dan ayrılan Vibepollo neredeyse tamamen vibe coding ile yapılmış geliştirilmiş bir sürüm olduğu için kişisel olarak kullanmayı düşünmüyorum; bu soy ağacında eksik kalan başka bir şey olup olmadığını merak ediyorum

    • Steam Link de eksik kalmış. Donanım satışı bitti ama Android uygulaması vb. sayesinde yazılım tarafı yaşamaya devam ediyor
      Steam, Google'ın aksine zaten bir müşteri tabanına sahip olduğu için, yarın tüm donanımlarda sahip olunan oyunları çalıştıran Stadia benzeri bir hizmet duyursa hiç şaşırmazdım
    • Tüketici GPU'larını birden fazla sanallaştırma ana makinesinin paylaşması hâlâ fiilen imkânsız, bu yüzden kullanım alanı sınırlı. İdeal kurulum, güçlü bir sunucuya thin client'lar bağlayıp eski COD gibi oyunları oynamak olurdu
    • Moonshine'ın Linux'ta headless Sunshine gibi çalışıp çalışmadığını merak ediyorum
      Sunshine yayın sırasında oyunu ana makinenin ekranında da gösteriyor; Moonshine'ın ise fiziksel ekran olmadan çalışabildiği ya da aynı anda birden fazla oyunu çalıştırabildiği mi kastediliyor, bunu netleştirmek istiyorum
    • Proxmox içindeki Fedora açılırken gerçek monitör özelliklerini taklit eden bir sahte ekran oluşturması için çekirdek parametreleri ayarladım
      Sunshine bunu gerçek ekran olarak algılıyor, bu yüzden yalnızca güç ve LAN kablosu bırakmak yetiyor; HDMI dummy plug veya sanal ekran sürücüsü olmadan Linux oyun sunucusu gayet iyi çalışıyor
    • Sunshine ve Moonlight yeniden aktif biçimde geliştiriliyor gibi görünüyor ve Apollo ile Artemis'ten daha yeni sürümleri de çıkmış
      Windows'ta uzaktan oyun oynanırken başka birinin sunucuyu kullanıp kullanamayacağını merak ediyorum. Baktığım sanal ekran çözümlerinin çoğu sunucu ekranını kapatıyor
  • Moonshine'ın geliştiricisiyim. Temel fikir Sunshine'a benziyor, ama farkı mevcut masaüstü ortamına bağlı olmadan kendi compositor'ünü oluşturması
    Masaüstü ortamı olmadan headless çalışabilir, dummy plug olmadan keyfi çözünürlükler ve yenileme hızları oluşturabilir, monitör desteklemese bile HDR kullanabilir. Mevcut masaüstünü kullanırken aynı anda oyun yayını yapmak da mümkün
    Teknik olarak kasıtlı olarak dar bir kapsam seçtim: tek Vulkan encoder, tek Linux, GUI yok, eski Moonlight istemcileri desteklenmiyor; böylece kod tabanı hafif kalıyor. Bunun karşılığında nispeten yeni GPU/sürücüler ve yeni Moonlight istemcileri gerekiyor
    2022'den beri üzerinde çalıştığım bir hobi projesi; başta Sunshine'dan daha kötü olduğu için README'de kullanılmamasını öneriyordum, ama ayırt edici özellikler eklenince bu ifadeyi kaldırdım
    Yeni kullanıcılara önce Sunshine'ı tavsiye ediyorum, çünkü daha çok kaynak var ve sorunsuz çalışma ihtimali daha yüksek; ama yeni şeyler denemeyi seviyorsanız Moonshine da iyi bir seçenek

    • Aylık 20 dolarlık Claude veya Codex aboneliği bile Linux'la uğraşmanın giriş eşiğini ciddi biçimde düşürdü. Eskiden saatler ya da günler süren tıkanmaları artık bir kahve içerken çözmek mümkün; bu yüzden Bazzite makinede denerken biraz pürüzlü yanlar eskisi kadar engel olmayabilir
    • Bence bunu fazla mütevazı anlatmışsın. Linux'ta Sunshine'da keyfi çözünürlük kullanılamaması çok büyük bir fark
    • Sunshine'ın Linux'taki çeşitli sorunları yüzünden bunalmışken dün gece Moonshine'ı keşfettim ve şu ana kadar oldukça memnunum
    • Yaklaşık 10 dakika kullandım ve etkileyiciydi. VS Code'u çalıştıramadım ama uzaktan çalışma modu olduğu için çok önemli değil; sonra başka bir uygulamayla tekrar deneyeceğim
      Kendi compositor yapısı nedeniyle tam bir masaüstü ortamı çalıştırmak zor görünüyor, ama Linux'ta uygulamaları tek tek de olsa uzaktan ve kararlı biçimde çalıştırmanın bir yoluna gerçekten ihtiyaç var. KDE ve GNOME'un yerleşik sunucularında genel olarak sorun var ve monitörün de açık olması gerekiyor
  • Sunshine ve Moonlight ile masaüstünde emüle edilmiş ve upscale yapılmış PS2 oyunu SSX Tricky'yi 7 yıldan eski bir Android set-top box'a çok akıcı biçimde yayınlayabildim
    Ancak oyun masaüstü ekranında da aynen göründüğü için başkası oyun oynarken ana makineyi kullanamıyordum; Moonshine bunu çözüyor gibi görünüyor. Zaten harika olan bir kombinasyona son dokunuşu eklemiş gibi

    • SSX serisini özlüyorum. EA Big'in kapanıp başka bir şirketin de bunu devralmaması üzücü; içlerinde en sevdiğim de Tricky idi
  • MacBook'a DualSense bağlayıp Moonlight'ı açıyor, oyun masaüstüme tam ekran bağlanıyor ve Steam'deki AAA oyunları çalıştırıyorum; bu şekilde Moonlight ve Apollo kullanıyorum
    Wi‑Fi 7'de hissedilir bir gecikme neredeyse yok ve büyük TV'ye bağlı Minisforum'a da DualSense'in farklı bir tuş kombinasyonuyla bağlanabiliyorum. Apollo ayarları kaydettiği için iki cihaz arasında geçiş neredeyse sorunsuz

    • Android telefonda da denemeye değer. Kontrolcü takılı 6.7 inç OLED 2340×1080, 120Hz HDR ekranda yatakta Diablo 2 Remastered oynamak Steam Deck'ten bile daha tatmin edici
      Telefon yalnızca videoyu oynattığı için ısınmıyor ve batarya da uzun gidiyor
    • Yayın sırasında gecikmenin aniden artmasını önlemek için AWDL'yi kapatmak gerekip gerekmediğini de merak ediyorum
    • Steam dışı oyun desteğinin yanı sıra, Steam Link'ten daha iyi çalışıp çalışmadığını da merak ediyorum
  • Moonshine'ın her oturum için sanal masaüstü benzeri bir şey mi oluşturduğunu, sadece ayrı bir ekran mı sunduğunu yoksa tamamen bağımsız bir compositor instance mı olduğunu merak ediyorum

    • Özellik açıklamasına göre her yayın, masaüstü ortamından tamamen ayrılmış kendi compositor'ünde çalışıyor. Birden fazla instance barındırabilen bir oyun sunucusu fikri çok çekici
  • Bu yöntemi, PC'de Switch oyunlarını emüle edip eski Wii U ve 3DS cihazlarına yayın yapmak için kullanıyorum

    • Android tabanlı Ayn Odin ve Thor gibi yeni taşınabilir cihazlarda da kullanıyorum
    • Birkaç yıl önce Rust ile tüm emülatörlere çok oyunculu ağ oyununu destekleyen bir araç yapmıştım; şaşırtıcı şekilde uygulaması kolaydı
  • Moonlight ve Sunshine ikilisini RTX 4000 Pro GPU sunucusunda memnuniyetle kullanıyorum
    Yalnızca bağlı istemciye göre otomatik çözünürlük ayarlaması eksikti ama bunu Home Assistant Windows istemcisiyle bir betik yazarak çözdüm

  • Dizüstü bilgisayardan telefona Sunshine ve Moonlight yayınını kurmak için rehberi takip ettim ama işe yarar bir sonuç alamadım
    Dinlenmek için ayırdığım oyun süresinin sınırlı olduğu bir haftayı codec, gecikme, Wi‑Fi ayarları ve çeşitli uygulamalarla uğraşarak harcayıp vazgeçtim; şimdi yaklaşık 3 yıl sonra bunun iyileşip iyileşmediğini merak ediyorum

    • Arada kusursuz çalışan oturumlar da oldu, yani teknik olarak mümkün olduğunu gördüm; ama zamanın yaklaşık %90'ında tuhaf hatalar, ayar sorunları ve güncellemelerin bozduğu uyumlulukla uğraştım. İyi kullananlar var ama sorunları düzeltmek için hâlâ çok iş var gibi görünüyor
    • Yaklaşık bir hafta önce bir LLM yardımıyla Windows host ve Ubuntu istemciyi 30 dakikada kurdum ve harici ağ bağlantısı sorununu da yaklaşık 15 dakikada çözdüm
      Sonuçta oynamak istediğim oyun yalnızca yerel çok oyunculu destekliyordu ve ProtonDB'deki sınırlı uyumluluk değerlendirmesinin aksine doğrudan dizüstünde çalıştı, bu yüzden yayına gerek kalmadı; ama kurulumun kendisi kolaydı. Tailscale de kullandım
    • Host PC kablolu LAN'a bağlı olmalı ve istemcide 1080p 60fps ve üzeri için en az Wi‑Fi 6 kullanılmalı. Bazı yönlendiricilerde paket kaybı çok yüksek oluyor, bu yüzden iyi bir cihaz kullanmak ya da sistemi kendin kurmak daha iyi
    • Masaüstü ile PS Vita arasında Sunshine ve Moonlight kullanıyorum; kilit nokta en azından hostu kablolu bağlamak ve kablosuz yönlendiriciye kadar olan gecikmeyi düşük tutmak
      Kablosuzda, ideal koşullarda bile yeniden iletim gerektiren paket sayısı çok daha fazla oluyor; bu yüzden Wi‑Fi'yi yalnızca istemci tarafında kullanmak daha iyi
  • Doğrudan GPU bağlanmış ROS 2 geliştirme VM'ine uzaktan erişmek için Sunshine ve Moonlight kullanıyorum
    Eski bir Ubuntu gerektiği için VM seçtim ve Gazebo simülasyonu nedeniyle doğrudan GPU bağlantısı gerekiyordu. RDP'de masaüstü aşırı yavaş ve tepkisizdi ama bu ikiliyle kullanılabilir hâle geldi

  • Kendi PC oyun yayınını kurmak, Nvidia özelliğini açmanın yeterli olduğu döneme göre çok daha zorlaştı
    En son denediğimde nasıl çalıştıracağımı çözemeyip vazgeçmiştim; başka avantajlarına rağmen açık kaynak geliştiricileri kullanılabilirlik konusunu yeterince önemsemiyor gibi görünüyor

    • Şimdi ortam, Nvidia'ya özel özelliklerin olduğu zamana göre çok daha iyi; bu yüzden yeniden denemeye değer. En kolay yol Steam'in yerleşik Remote Play özelliği ve resmi uygulaması; Sunshine ve Moonlight ise daha iyi sonuçlar, ayrıntılı ayarlar ve Steam dışı uygulama desteği sunuyor
      YouTube rehberlerinden ya da yapay zekadan da yardım alınabilir; hatta bir keresinde Linux dağıtımının güvenlik duvarının yayın portlarını engellediğini yapay zekayla birlikte bulmuştum
      Önce yerel ağda başlamak, internet üzerinden yayını ise sonra kurmak daha iyi; ama WireGuard veya Tailscale gibi bir ev VPN'iniz varsa zor olmayabilir. Host için kablolu bağlantı en iyisi ve istemci Wi‑Fi'si 6GHz destekliyorsa genelde yeterince iyi oluyor
      PS Remote Play kadar sihirli derecede kolay değil ama tekrar denemenizi tavsiye ederim
    • 5 yıl önce benzer sorunlar yüzünden oyun yayınından tamamen vazgeçmiştim, ama bir ay önce eski bir Linux dizüstüyle kanepede Oxygen Not Included oynamak için 5 dakikada Sunshine ve Moonlight kurdum ve hemen kusursuz çalıştı
      Önerilerin aksine host da Wi‑Fi'daydı ama gayet iyi çalıştı; son birkaç yılda teknolojiyle yaşadığım en sihirli anlardan biriydi. Yine de yalnızca yerel Wi‑Fi yayını kullanıyorum