5 puan yazan GN⁺ 2023-09-01 | 1 yorum | WhatsApp'ta paylaş
  • C# ile yazılmış açık kaynaklı bir Nintendo Switch emülatörü olup yüksek doğruluk, performans ve kullanıcı dostu bir arayüz hedefler
  • 2017’de tek bir geliştiriciyle başlayıp bugün çekirdek ekip ve onlarca katkıcının yer aldığı, sıfırdan yazılmış bir proje
  • Windows 10/11, macOS, Linux tabanlı sistemlerde çalışan çapraz platform desteği sunar
  • 4.050’den fazla oyunda test edilmiştir; bunların yaklaşık 3.400’ü oynanabilir seviyede değerlendirilmiştir
  • Kaynak kodu GitHub’da açık olduğu için herkes erişebilir ve katkıda bulunabilir

Proje genel bakışı

  • Geliştirici gdkchan tarafından oluşturulmuş, C# ile yazılmış açık kaynaklı bir Nintendo Switch emülatörü
  • Hedefleri üstün doğruluk ve performans, kullanıcı dostu bir arayüz ve tutarlı derlemeler sunmaktır
  • 2017’de tek geliştiriciyle başladı; bugün yetkin bir çekirdek ekip ve onlarca katkıcının birlikte geliştirdiği, sıfırdan yazılmış (Written from scratch) bir proje

Başlıca özellikler

  • Açık kaynak

    • Emülatörün kaynak kodu GitHub’da açık durumdadır
  • Çapraz platform

    • Şu anda Windows 10/11, macOS, Linux tabanlı sistemlerde kullanılabilir
  • Uyumluluk

    • 4.050’den fazla oyunda test edilmiş olup bunların yaklaşık 3.400’ü oynanabilir (playable) seviyede değerlendirilmiştir
  • Destek

    • Ryujinx Discord sunucusu üzerinden destek alınabilir; Switch emülasyonu kullanıcıları ve ekip geliştiricileriyle etkileşim kurulabilir

İsmin kökeni

  • Telaffuzu Ree-You-Jinx olup mitolojideki deniz tanrısı ve ejderha "Ryujin" adından gelir
  • İsmin NX bölümü, Switch cihazının kod adından alınmıştır

1 yorum

 
GN⁺ 2023-09-01
Hacker News yorumları
  • Böyle bir şeyi yapabilmek için nasıl bir kariyer yolundan geçmek gerektiğini merak ediyorum
    Yoksa sadece 2 yıl boyunca her gece ve hafta sonu hacklemek mi gerekiyor? Böyle bir işi para karşılığı yapan pek kimse yok gibi; üstelik yasal sorunlar yüzünden pek belgelenmemiş, çok derin bir bilgi gerektiren bir alan gibi görünüyor

    • Bu alanda çalışmadan önce neredeyse 10 yıl boyunca büyük projeler yapmıştım; belki emülatörler kadar karmaşık değillerdi
      Sağlık sorunları nedeniyle üniversiteyi bıraktım ve ömür boyu engellilik maaşı alma “fırsatı” doğdu; bunu kabul edip hobi olarak programlamaya devam ettim. O süre boyunca çevrim içi ortamda işi olmayan ya da eğitimine ara verip daha sonra işe girmeyi planlayan birçok hobi programcısıyla tanıştım
      Gerçek hayatta programlamaya ilgi duyan kimseyi tanımadığım için yalnız hissettim; meetup sitelerine bakıp etkinliklere gitmeye başladım. Orada tanıştığım arkadaşlar profesyonel programcı olarak çalışmayı denememi söyledi, ben de denedim; şimdi 5 yıldır bu alanda çalışıyorum ve bundan keyif alıyorum
      Geriye dönüp bakınca profesyonel alanın varlığından haberdardım ama oraya yalnızca eğitimli ve deneyimli programcıların girdiğini düşündüğüm için benim de bunun bir parçası olabileceğim aklıma gelmemişti
      Girerken zorlandığım nokta, benim çok belirli bir alanda uzmanlaşmış olmamdı; sektör ise daha genel yetkinlikler ve farklı uzmanlıklar istiyordu. Neyse ki en baştan oyun motoru geliştirme, grafik render etme gibi benzer ilgi alanlarına sahip insanlarla tanıştım ve profesyonel sektörün yapısını anlamamda bana yardımcı oldular
      Şimdi de boş zamanlarımda hobi projeleri yapmak beni tatmin ediyor; iş ve aile yüzünden eskisi kadar zamanım olmasa da ara sıra vakit ayırıyorum
    • Doğru, sadece geceleri ve hafta sonları hacklemek
      Konsol tersine mühendisliği ve konsol cihazları için yazılım geliştirme konusunda epey deneyimim oldu; çoğunlukla GBA ve NDS geliştirme, biraz da SMS ve Genesis tersine mühendisliği yaptım. Geliştirici olarak yaptığım işler arasında gerçekten en eğlencelilerden. Ama kaçınılmaz engelleri aşmak için muazzam bir sebat gerekiyor
    • “2 yıl boyunca her gece ve hafta sonu hacklemek” doğru
      İnanması zor olabilir ama diğer büyük Switch emülatöründe kullanılan ARM çeviri motorunun baş yazarı bir doktor. Kendisi bazen bunu “gerçek hayattaki beyaz büyücü” diye ifade ediyor
    • Emülatör geliştirme genel olarak daha çok hobi alanı sayılır
      Birden fazla alandan beceri gerektirir; donanım mühendisleri, tersine mühendislik uzmanları, titiz dokümantasyon yazarları, uzmanlaşmış yazılım mühendisleri vb. birbirlerinin çalışmaları üzerine bir şeyler inşa eder
      Tek kişilik projeler de görülür ama genelde eski donanımlarla sınırlıdır ve yine de çeşitli kaynaklardan gelen belgelerden yararlanırlar. nesdev wiki bile 6502 araştırmacıları, Tayvanlı klon üreticilerinin tersine mühendisliği, decap çalışmaları, eski NES emülatörleri ve mevcut belge yığınları üzerine kuruludur
    • 1997’deki ilk ücretli işim, ARM masaüstü bilgisayarlar için bir PC emülatörü ürününü genişletmekti; o makinede 486 yardımcı işlemci vardı
      O zamanlar ergendim; biraz C ve ARM kodu biliyordum, donanım ya da x86 hakkında ise hiçbir bilgim yoktu. PC zaten oldukça iyi belgelenmişti ve karşılaştırabileceğim başka emülatörler de vardı, ama anlamadığım ve elimdeki birkaç kitabın da yardımcı olmadığı zamanlarda sadece deneme yapmak zorundaydım. Biraz kod yazıp tepkisine bakıyordum; genellikle çöküyordu, bazen de tüm bilgisayar kilitleniyordu
      İşin büyük kısmı, rakibin zihinsel modelini oluşturmaktı. Benim durumumda bu, Windows NT’nin erken önyüklemesi ve DirectDraw başlatmasıydı; bir aşamadan diğerine geçmesini sağlayacak kodu yazıyordum. Her zaman yavaş bir işti ama ipucunu bulunca terapi gibi hissettirdiği de oluyordu
      Doğru tutturduğunuzda ödül bir anda gelir. Olmaması gereken bir yerde yabancı bir dünya çalışır; sanki bir ağaçta balık yüzüyordur. Bu tür işleri daha fazla yapmak istiyorum
  • İlk emülatörler, ilk konsolların çok kendine özgü donanımlarını emüle etmek zorundaydı
    Günümüz konsolları tüketici tipi bilgisayarlara oldukça benziyor gibi görünüyor; Switch’in de temelde Nvidia Jetson gibi bir şey olduğunu düşünmüştüm
    Günümüzde emülasyon, Wine gibi gerekli API’leri sağlamak ve sanal makinede çalıştırmak tarafına mı daha yakın, yoksa gerçek donanım emülasyonu hâlâ gerekli mi?

    • Eskisine göre daha yüksek seviyeli, ama asıl sorun GPU
      Oyunların kullandığı grafik API’si genellikle çeşitli donanım ayrıntılarını açığa çıkarır; böylece oyun, o donanımdan maksimum performans alacak şekilde ince ayar yapılabilir. Bu donanıma özgü API çağrılarını OpenGL/Direct3D/Vulkan/Metal’e çevirmek çok iş gerektirir
    • Yalnızca Switch açısından bakarsak ARM CPU kullandığı için x86 sistemlerde hâlâ bir ARM emülatörü gerekir
      Ancak yerel ARM sistemlerde CPU kodu neredeyse olduğu gibi çalıştırılabilir; Android için geliştirilip sonradan durdurulan Skyline bunu yapıyordu, Yuzu da gelecekte bu özelliği uygulayacak gibi görünüyor
      Daha büyük sorun GPU. Nvidia Maxwell GPU ama Switch’e özel, dahili adı NVN olan özel bir API kullandığından, shader yeniden derlemesi dâhil eksiksiz bir çeviri katmanı hâlâ gerekiyor
  • Macbook Pro M1’de bununla Breath of the Wild ve Mario Kart’ı Xbox kontrolcüsüyle oynuyorum
    Çocuklarım da ben de çok seviyoruz

    • Keyifle oynuyor olmanıza sevindim. Gerçek bir Switch almayı da düşünebilirsiniz
      Benim için iki kullanımda özellikle harika. Birincisi, tüm ailenin Nintendo oyunları oynadığı durum. 4 kişinin her birinin küçük bir kontrolcü alıp oyuna başlamadan önce karakter seçimi, seçenek ayarları gibi akışlardan geçebilmesi için tüm Nintendo oyunları çok özenle tasarlanmış
      İkincisi, taşınabilir/ayrık modda oynama durumu. Elde oynamanın keyfi var ve tabletlerin aksine fiziksel kontroller var. Çoğu oyun ortalama bir iPad oyunundan çok daha iyi; daha doğru söylemek gerekirse match-3 ya da anlamsız clicker oyunları iPad’de olduğu kadar kolay şekilde üst sıralara çıkmıyor
    • Ortalama saniye başına kare sayısı ne civarda?
  • C#'ın böyle bir kullanım için uygun olacağını düşünmezdim; güzel görünüyor

    • Bildiğim kadarıyla Ryujinx aslında ARM kodunu .NET IL'ye çeviriyor, ardından .NET bunu JIT derleyip makine koduna dönüştürüyor
      Emülasyon için oldukça yenilikçi bir yaklaşım olduğunu düşünüyorum
      Ayrıca Apple Silicon'da, Switch'in Arm64v8 komutlarını yerel olarak çalıştırmak için hypervisor kullanıyor
      https://blog.ryujinx.org/the-impossible-port-macos/
    • C#, özellikle son sürümlerle birlikte bir ölçüde sistem programlama dili gibi bir şeye dönüşüyor
      Çok düşük seviyeli bellek yönetimi ve manipülasyonuna imkân veren araçlar sürekli ekleniyor; birden çok platformda çalışabilmesi veya native kod üretebilmesi de onu çekici kılıyor. Yazması da keyifli
    • C# ile yazılmış emülatör deyince RunUO'yu duymadınız mı?
      C#, yaklaşık 20 yıl önce UO dünyasında devrim yaratmıştı; sadelik, açıklık ve performans arasında iyi bir denge kuruyordu
      https://www.runuo.net/
      https://github.com/ClassicUO/ClassicUO
      Kahretsin, UO'yu düşünmeseydim. Şimdi üzgün ve yaşlı hissediyorum
    • Aslında C#, emülatörlerde oldukça yaygın bir tercih
      Kabaca önce C/C++ gelir; bu durumda ikisini ayırmak gerçekten zor. Tamamen yalnızca birini kullanan codebase'ler nadirdir. Ardından Rust gelir; hobi emülatörlerinde muhtemelen 3-4. sıradadır, ciddi projelerde daha öne çıkabilir. Sonra da C# ve Java civarı gelir
      JavaScript ve Python hobi projelerinde çok yaygındır, ancak ciddi codebase'lerde genellikle istisnai tercihlerdir. WASM bir istisna sayılabilir
    • BizHawk, tool-assisted speedrun oluşturmak için önde gelen emülatörlerden biridir ve C# ile yazılmıştır
      https://github.com/TASEmulators/BizHawk
  • Kötü şöhretli Denuvo DRM'i yapan Irdeto'nun özellikle Switch emülatörlerini hedefleyen bir ürün çıkarmış olması biraz sinir bozucu
    Emülatörlerin kendisi yasal olmasına rağmen

    • Çünkü emülatör kullanıcılarının çoğu korsan kullanıcı
      Kendi oyunlarını bizzat dump eden kişi sayısı fazla değil
  • İkisini de kullandım ama Tears of the Kingdom oynarken Yuzu'yu daha çok tercih ediyorum: https://yuzu-emu.org/
    Yine de ikisi de harika; iki proje de çok hızlı geliştiği için bu yılın başında edindiğim izlenimlerin şimdiden eskimiş olması mümkün

  • Ryujinx, gördüğüm en etkileyici C# projelerinden biri
    Diğeri Roslyn

  • Switch'ten doğrudan dump edilmiş bir şeye sahip olmadan bununla oyunları yasal olarak oynamanın bir yolu var mı?
    Web tarayıcısıyla Switch oyunu satın alınabiliyor mu?

    • Jailbreak yapılmış bir Switch'e sahip olmak tek yol
      Yeni satın alınan Switch neredeyse kesinlikle yamalanmış V2'dir; Switch Lite ve OLED de modchip lehimlemeden jailbreak yapılamaz
    • Bu, yargı bölgesine göre değişecektir
      Ama oyuna sahipseniz ROM'u hangi yolla elde ettiğinizin önemi var mı?
    • Web tarayıcısıyla Switch oyunu satın almak mümkün
      https://www.nintendo.com/store/games/nintendo-switch-games/#...
      Ancak Switch'iniz yoksa indiremez veya dump edemezsiniz
  • Yuzu'yu da Ryujinx'i de seviyorum
    Native konsoldan daha iyi bir deneyim sunabilmeleri şaşırtıcı. Ama Denuvo sayesinde bu partinin yakında biteceği hissine de kapılıyorum

    • Öyle olacağını sanmıyorum
      Şimdiye kadar Denuvo'nun emülasyonu engelleyeceğini söylemesi yalnızca bir iddiaydı. Gerçekten engellese bile, insanların workaround araştırmak için sınırsız zamanı var
  • Nintendo oyunlarını neden başka platformlara çıkarmıyor?
    Zelda oynamak istiyorum ama tek bir oyun için konsol alacak değilim

    • Nintendo sonuçta Nintendo; tek bir oyun ya da birkaç oyun için konsol satın alan yeterince çok kişi var, bu yüzden Nintendo gibi davranmaya devam edecek parası var.
      Özellikle savunmak istemem ama mevcut tavrını anlamak için 1983'te Kuzey Amerika video oyunu pazarının çöküşüne bakmak gerekir. Her türlü çöp oyun diye piyasaya sürülünce tüm video oyunu pazarı çöktü ve tüketiciler belirli bir oyun konsolu platformuna olan güvenini kaybetti. Bunun yerine ev bilgisayarı alınca hem oyun vardı hem de başka amaçlar için kullanılabiliyordu.
      NES bunun tersiydi. Nintendo'nun kapalı ekosistemi ve çok sayıda birinci taraf oyun geliştirmesi vardı; bu yaklaşım başarılı oldu, şirketi zenginleştirdi ve onu video oyunu pazarının büyük oyuncularından biri yaptı. Neredeyse 40 yıl sonra hâlâ işleyen bir yöntemi neden bıraksın?
    • Tears of the Kingdom oynamak için Switch OLED ve oyunu aldım; toplamı 420 dolardı.
      Daha iyi ekranı ve hoparlörleri olan dizüstü bilgisayarımda oynayabilseydim yalnızca 60 dolar öderdim. Üstelik şimdi yeni cihazı daha fazla kullanmak için başka Nintendo oyunları alma olasılığım da arttı. İşletme sahibi olsam gelirin 7 kat fazla olduğu tarafı seçerdim.
    • Diğer yorumlarda söylenenlere ek olarak, Nintendo Microsoft veya Sony'den farklı bir konsol stratejisi izlediği için birinci taraf oyunlarını kendi platformuna bağlı tutmak zorunda olduğu bir taraf da var.
      Nintendo Switch, aynı nesildeki PS4/5 ve Xbox Series X ile karşılaştırıldığında performans olarak çok düşük, ama nihai taşınabilir/seyahat konsolu olması gibi büyük bir avantajı var. Sony ve Microsoft konsolları genelde daha yüksek FPS ya da daha iyi grafikler sunabilir ve çoğunlukla grafik tarafına ağırlık verir; Switch ise form faktörü ile pil ömrü arasında denge kurmak zorunda olduğundan çok sınırlı. Taşınabilir bir cihazda yalnızca 30 dakika oyun oynanabiliyorsa bunun anlamı yok.
      Bu tür emülatörleri yasal olarak kullanmak isteyenler dâhil, kullanıcı kitlesinin büyük bir kısmı saf performans açısından başka konsolları ya da PC/Mac'i daha çok tercih edebilir.
      Ayrıca başka platformlarda satarsa, özellikle şirket içi stüdyo oyunlarında, kopya başına gelirinin kendi platformunda satmaya göre daha düşük olacağını düşünüyorum.
      Bunları düşününce başka platformlara çıkış, gelir akışını epey ciddi biçimde azaltır.
    • Nintendo, ürünlerin genel olarak yalnızca kendi amaçladığı şekilde kullanılmasını sağlamaya takıntılı.
      Öyle olmasaydı tesadüfen karşılaşılması neredeyse imkânsız olan eşya çoğaltma bug'ını yamayla kapatmazdı; ayrıca çok uzun zamandır temel bir özellik olan kontrol düzenini değiştirmeye de izin verirdi. Bunun yerine Nintendo oyunlarında yalnızca amaçlanan ve playtest'ten geçirilen şekilde kontrol edebilirsiniz. Yayın, inceleme ve oynanış videoları içeren içeriklere karşı da uzun süre oldukça can sıkıcı davrandı; bir ölçüde hâlâ da öyle.
      Ancak birçok kişi için mesele tek bir oyundan ibaret değil. Nintendo'nun Zelda, Mario Kart, Smash, 3D ana oyunlar ve 2D tamamlayıcı oyunlar diye ayrılabilecek çeşitli Mario platform oyunları, Splatoon, Mario Party, Fire Emblem, Xenoblade, Kirby gibi epey başarılı özel oyunu var.
      Gerçekte en azından 10 civarında kaliteli ve keyifli ama pahalı özel oyuna sahip oluyorsunuz. Wii U'nun başarısız olup Mario Kart 8'in DLC'li sürüm olarak yeniden çıkarılması ve sonra büyük bir genişleme paketi alması gibi tuhaf sonuçlar doğurmasını hariç tutsak bile durum böyle.
    • Kendi sorunu kendin yanıtlamışsın.
      Zelda oynamak istiyorsan Nintendo'ya en az 260 dolar vermen gerekiyor. Switch Lite'tan daha iyi bir şeyde oynamak istersen 100 dolar daha gerekiyor.
      Sony veya Microsoft'un aksine Nintendo yalnızca oyun satışından değil, donanım satışından da gerçekten kâr ediyor.