- 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
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
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
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
İ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
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
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?
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
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
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
C#'ın böyle bir kullanım için uygun olacağını düşünmezdim; güzel görünü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/
Ç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#, 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
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
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
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
Nasıl kullanılacağına dair faydalı bir rehber burada: https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
https://yuzu-emu.org/entry/yuzu-android/
En azından masaüstünde Patreon üzerinden bir early access programı var. Yine de buradan da alınabiliyor: https://pineappleea.github.io/
Skyline Android'de çalışıyor ama herhangi bir cihazda düzgün çalıştırmayı hiç başaramadım. Artık geliştirilmiyor
https://skyline-emu.one/
Ben tam tersiyim; oldukça güncel donanıma sahipsen Ryujinx kurulumunun çok daha hızlı olduğunu hatırlıyorum
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?
Yeni satın alınan Switch neredeyse kesinlikle yamalanmış V2'dir; Switch Lite ve OLED de modchip lehimlemeden jailbreak yapılamaz
Ama oyuna sahipseniz ROM'u hangi yolla elde ettiğinizin önemi var mı?
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
Ş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
Ö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?
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.
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.
Ö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.
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.