5 Punkte von GN⁺ 2023-09-01 | 1 Kommentare | Auf WhatsApp teilen
  • Ein in C# geschriebener Open-Source-Nintendo-Switch-Emulator mit dem Ziel hoher Genauigkeit, starker Performance und einer benutzerfreundlichen Oberfläche
  • 2017 von einem einzelnen Entwickler gestartet und heute ein von Grund auf neu geschriebenes Projekt, an dem ein Kernteam und Dutzende Mitwirkende beteiligt sind
  • Plattformübergreifende Unterstützung für Systeme auf Basis von Windows 10/11, macOS, Linux
  • Auf mehr als 4.050 Titeln getestet, davon wurden etwa 3.400 als spielbar eingestuft
  • Der Quellcode ist öffentlich auf GitHub verfügbar, sodass jeder darauf zugreifen und beitragen kann

Projektüberblick

  • Ein in C# geschriebener Open-Source-Nintendo-Switch-Emulator, entwickelt von gdkchan
  • Ziel sind hervorragende Genauigkeit und Performance, eine benutzerfreundliche Oberfläche und konsistente Builds
  • 2017 als Einzelentwicklungsprojekt gestartet, heute ein von Grund auf neu geschriebenes (Written from scratch) Projekt, das von einem fähigen Kernteam und Dutzenden Mitwirkenden gemeinsam entwickelt wird

Hauptmerkmale

  • Open Source

    • Der Quellcode des Emulators ist öffentlich auf GitHub verfügbar
  • Plattformübergreifend

    • Derzeit verfügbar für Systeme auf Basis von Windows 10/11, macOS, Linux
  • Kompatibilität

    • Auf mehr als 4.050 Titeln getestet, davon wurden etwa 3.400 als spielbar (playable) eingestuft
  • Support

    • Über den Ryujinx-Discord-Server sind Support sowie der Austausch mit Nutzern der Switch-Emulation und den Entwicklern des Teams möglich

Herkunft des Namens

  • Ausgesprochen Ree-You-Jinx, abgeleitet von „Ryujin“, dem mythologischen Meeresgott und Drachen
  • Der NX-Teil des Namens stammt vom Codenamen der Switch-Konsole

1 Kommentare

 
GN⁺ 2023-09-01
Meinungen auf Hacker News
  • Ich frage mich, welchen Karriereweg man einschlagen muss, um so etwas zu bauen.
    Hackt man einfach zwei Jahre lang jede Nacht und an den Wochenenden daran? Ich kann mir kaum vorstellen, dass jemand für so etwas bezahlt wird, und es wirkt wie ein Bereich, der extrem tiefes Wissen erfordert, das wegen rechtlicher Probleme wahrscheinlich auch nicht gut dokumentiert ist.

    • Ich hatte fast zehn Jahre lang an großen Projekten gearbeitet, bevor ich in diesem Bereich tätig wurde; vielleicht waren sie nicht ganz so komplex wie Emulatoren.
      Wegen gesundheitlicher Probleme habe ich die Uni abgebrochen und bekam die „Chance“, lebenslang Erwerbsunfähigkeitsleistungen zu beziehen. Ich habe sie angenommen und weiter als Hobby programmiert. In dieser Zeit habe ich online viele Hobby-Programmierer kennengelernt, die keinen Job hatten oder ihr Studium vorübergehend unterbrochen hatten und später arbeiten wollten.
      Weil ich im echten Leben niemanden kannte, der sich fürs Programmieren interessierte, wurde ich einsam, suchte nach Meetup-Seiten und begann, zu Veranstaltungen zu gehen. Freunde, die ich dort kennenlernte, ermutigten mich, es als professioneller Programmierer zu versuchen. Also tat ich das, und inzwischen arbeite ich seit fünf Jahren in diesem Bereich und habe Freude daran.
      Rückblickend wusste ich zwar, dass es professionelle Bereiche gibt, dachte aber, das seien Orte, in die nur ausgebildete und erfahrene Programmierer hineinkommen. Mir kam nicht in den Sinn, dass ich selbst ein Teil davon werden könnte.
      Schwierig beim Einstieg war, dass ich zu sehr auf ein bestimmtes Gebiet spezialisiert war, während die Branche allgemeinere Fähigkeiten und andere Spezialisierungen verlangte. Zum Glück traf ich von Anfang an Leute mit ähnlichen Interessen wie Game-Engine-Entwicklung und Grafik-Rendering, die mir halfen, die Landschaft der professionellen Branche zu verstehen.
      Auch heute noch macht es mich zufrieden, in meiner Freizeit an Hobbyprojekten zu arbeiten. Wegen Arbeit und Familie habe ich nicht mehr so viel Zeit wie früher, aber gelegentlich nehme ich sie mir.
    • Genau, man hackt einfach nachts und am Wochenende daran.
      Ich habe ziemlich viel Reverse Engineering von Konsolen und Softwareentwicklung für Konsolengeräte gemacht, hauptsächlich GBA- und NDS-Entwicklung sowie etwas Reverse Engineering für SMS und Genesis. Das gehört wirklich zu den spaßigsten Dingen, die ich als Entwickler gemacht habe. Allerdings braucht man enorme Ausdauer, um die unvermeidlichen Hürden zu überwinden.
    • „Zwei Jahre lang nachts und am Wochenende hacken“ trifft es.
      Kaum zu glauben, aber der Hauptautor der ARM-Übersetzungs-Engine, die in einem anderen wichtigen Switch-Emulator verwendet wird, ist Arzt. Er bezeichnet sich gelegentlich als „Weißmagier im echten Leben“.
    • Emulator-Entwicklung ist im Großen und Ganzen eher ein Hobbybereich.
      Man braucht Fähigkeiten aus vielen Disziplinen, und Hardware-Ingenieure, Reverse-Engineering-Experten, sorgfältige Dokumentatoren, spezialisierte Software-Ingenieure usw. bauen auf der Arbeit der jeweils anderen auf.
      Man sieht auch Ein-Personen-Projekte, aber die beschränken sich meist auf ältere Hardware und nutzen trotzdem Dokumentation aus vielen Quellen. Selbst das nesdev-Wiki steht auf einem Fundament aus Forschung zum 6502, Reverse Engineering taiwanischer Klonhersteller, Decap-Arbeiten, alten NES-Emulatoren und einem Haufen bestehender Dokumente.
    • Mein erster bezahlter Job im Jahr 1997 bestand darin, ein PC-Emulator-Produkt für ARM-Desktop-Computer zu erweitern; diese Maschine hatte einen 486-Koprozessor.
      Ich war damals Teenager und kannte ein wenig C und ARM-Code, hatte aber keinerlei Wissen über Hardware oder x86. Der PC war ursprünglich recht gut dokumentiert, und es gab auch andere Emulatoren zum Vergleichen. Aber wenn ich etwas nicht verstand und die paar Bücher, die ich hatte, nicht halfen, musste ich einfach experimentieren. Ich schrieb ein bisschen Code und schaute, wie er reagierte; meistens stürzte er ab, und manchmal fror der ganze Computer ein.
      Vieles davon bestand darin, ein mentales Modell des Gegners zu entwickeln. In meinem Fall waren das der frühe Bootvorgang von Windows NT und die DirectDraw-Initialisierung; ich schrieb Code, der das System Schritt für Schritt in die nächste Phase brachte. Es war immer langsame Arbeit, aber wenn man eine Spur fand, fühlte es sich fast therapeutisch an.
      Wenn man es richtig trifft, kommt die Belohnung schlagartig. Eine fremde Welt läuft an einem Ort, an dem sie eigentlich nicht sein dürfte, als würden Fische in einem Baum schwimmen. Ich würde gern mehr von so etwas machen.
  • Frühe Emulatoren mussten die sehr eigenwillige Hardware früher Konsolen emulieren.
    Heutige Konsolen wirken ziemlich ähnlich wie Consumer-Computer, und ich dachte, die Switch sei im Grunde so etwas wie ein Nvidia Jetson.
    Geht es bei heutiger Emulation eher darum, wie bei Wine die nötigen APIs bereitzustellen und das Ganze in einer virtuellen Maschine auszuführen, oder ist echte Hardware-Emulation weiterhin nötig?

    • Es ist höher angesiedelt als früher, aber das Hauptproblem ist die GPU.
      Die Grafik-APIs, die Spiele verwenden, legen normalerweise viele Hardwaredetails offen, damit Spiele fein auf die maximale Leistung dieser Hardware abgestimmt werden können. Solche hardwarespezifischen API-Aufrufe nach OpenGL/Direct3D/Vulkan/Metal zu übersetzen, erfordert viel Arbeit.
    • Wenn man nur die Switch betrachtet: Da sie eine ARM-CPU verwendet, braucht man auf x86-Systemen weiterhin einen ARM-Emulator.
      Auf nativen ARM-Systemen kann man den CPU-Code jedoch fast unverändert ausführen. Skyline, das für Android entwickelt und dann eingestellt wurde, hat das bereits so gemacht, und Yuzu scheint diese Funktion künftig ebenfalls implementieren zu wollen.
      Das größere Problem ist die GPU. Es ist zwar eine Nvidia-Maxwell-GPU, aber sie nutzt eine Switch-spezifische Custom-API mit dem internen Namen NVN, daher ist weiterhin eine komplette Übersetzungsschicht einschließlich Shader-Rekompilierung nötig.
  • Ich spiele damit auf einem MacBook Pro M1 Breath of the Wild und Mario Kart mit einem Xbox-Controller.
    Meine Kinder und ich lieben es.

    • Schön, dass ihr Spaß damit habt. Es lohnt sich, auch den Kauf einer echten Switch in Betracht zu ziehen.
      Für mich ist sie in zwei Nutzungsszenarien besonders stark. Erstens, wenn die ganze Familie Nintendo-Spiele spielt. Alle Nintendo-Spiele sind sehr sorgfältig darauf ausgelegt, dass vier Leute jeweils einen kleinen Controller in der Hand halten und vor Spielbeginn Abläufe wie Charakterauswahl und Optionseinstellungen durchlaufen.
      Zweitens, wenn man im Handheld- oder abgedockten Modus spielt. Es macht Spaß, sie in der Hand zu halten, und anders als ein Tablet hat sie physische Bedienelemente. Die meisten Spiele sind deutlich besser als das durchschnittliche iPad-Spiel; genauer gesagt schaffen es Match-3- oder sinnlose Clicker-Spiele dort nicht so leicht nach oben wie auf dem iPad.
    • Wie hoch ist die durchschnittliche Framerate?
  • Ich hätte nicht gedacht, dass C# für so einen Einsatzzweck gut passen würde, aber es sieht gut aus

    • Soweit ich weiß, wandelt Ryujinx ARM-Code tatsächlich in .NET IL um, und anschließend JIT-kompiliert .NET ihn zu Maschinencode.
      Ich halte das für einen ziemlich innovativen Ansatz bei der Emulation.
      Und auf Apple Silicon nutzt es den Hypervisor, um die Arm64v8-Instruktionen der Switch nativ auszuführen.
      https://blog.ryujinx.org/the-impossible-port-macos/
    • C# entwickelt sich, insbesondere über die jüngsten Releases hinweg, gewissermaßen zu einer Systemprogrammiersprache.
      Es kommen ständig Werkzeuge hinzu, die sehr Low-Level-Speicherverwaltung und -manipulation ermöglichen, und dass es auf mehreren Plattformen laufen oder nativen Code erzeugen kann, macht es attraktiv. Spaß beim Schreiben macht es auch.
    • Noch nie von RunUO gehört, einem Emulator, der in C# geschrieben ist?
      C# hat vor etwa 20 Jahren die UO-Welt revolutioniert und bot eine gute Balance aus Einfachheit, Klarheit und Performance.
      https://www.runuo.net/
      https://github.com/ClassicUO/ClassicUO
      Verdammt, ich hätte nicht an UO denken sollen. Jetzt fühle ich mich traurig und alt.
    • Tatsächlich ist C# bei Emulatoren eine ziemlich gängige Wahl.
      Grob gesagt kommen zuerst C/C++, wobei es in diesem Fall wirklich schwer ist, die beiden zu trennen. Codebasen, die rein nur das eine verwenden, sind selten. Danach kommt Rust, bei Hobby-Emulatoren etwa auf Platz 3–4, bei ernsthaften Projekten möglicherweise weiter vorn. Danach etwa C# und Java.
      JavaScript und Python sind bei Hobbyprojekten sehr verbreitet, in ernsthaften Codebasen aber normalerweise eher eine Ausnahme. WASM kann man als Ausnahme betrachten.
    • BizHawk ist ein führender Emulator zum Erstellen tool-gestützter Speedruns und ist in C# geschrieben.
      https://github.com/TASEmulators/BizHawk
  • Es nervt ein bisschen, dass Irdeto, der Hersteller des berüchtigten Denuvo DRM, ein Produkt entwickelt hat, das speziell auf Switch-Emulatoren abzielt.
    Und das, obwohl Emulatoren an sich legal sind.

    • Weil die meisten Emulator-Nutzer Raubkopierer sind.
      Nicht viele dumpen ihre eigenen Spiele.
  • Ich habe beide ausprobiert, bevorzuge aber Yuzu, wenn ich Tears of the Kingdom spiele: https://yuzu-emu.org/
    Trotzdem sind beide hervorragend, und beide Projekte entwickeln sich so schnell, dass mein Eindruck von Anfang des Jahres vermutlich schon veraltet ist.

    • Ich habe auch Yuzu ausprobiert und fand es ziemlich beeindruckend.
      Eine hilfreiche Anleitung zur Nutzung gibt es hier: https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
    • Für Yuzu gibt es auch einen Android-Build, meines Wissens funktioniert er aber nur auf Snapdragon-Geräten.
      https://yuzu-emu.org/entry/yuzu-android/
      Zumindest auf dem Desktop gibt es ein Early-Access-Programm über Patreon. Man kann ihn aber auch hier bekommen: https://pineappleea.github.io/
      Skyline läuft auf Android, aber ich habe es auf keinem Gerät richtig zum Laufen bekommen. Es wird nicht mehr weiterentwickelt.
      https://skyline-emu.one/
    • Gibt es einen Grund, warum du ihn Ryujinx vorziehst?
      Bei mir ist es umgekehrt; ich erinnere mich, dass Ryujinx viel schneller einzurichten war, wenn man ziemlich aktuelle Hardware hat.
  • Ryujinx ist eines der beeindruckendsten C#-Projekte, die ich gesehen habe.
    Das andere ist Roslyn.

  • Gibt es eine Möglichkeit, damit Spiele legal zu spielen, wenn man sie nicht selbst von einer Switch gedumpt hat?
    Kann man Switch-Spiele über den Webbrowser kaufen?

    • Die einzige Möglichkeit ist, eine gejailbreakte Switch zu haben.
      Eine neu gekaufte Switch ist mit ziemlicher Sicherheit eine gepatchte V2, und Switch Lite sowie OLED lassen sich ohne eingelöteten Modchip nicht jailbreaken.
    • Das dürfte von der jeweiligen Rechtsordnung abhängen.
      Aber wenn man das Spiel besitzt, spielt es dann eine Rolle, auf welchem Weg man an die ROM gekommen ist?
    • Switch-Spiele über den Webbrowser zu kaufen ist möglich.
      https://www.nintendo.com/store/games/nintendo-switch-games/#...
      Ohne Switch kann man sie allerdings nicht herunterladen oder dumpen.
  • Ich mag sowohl Yuzu als auch Ryujinx.
    Es ist erstaunlich, dass sie ein besseres Erlebnis bieten können als die native Konsole. Allerdings habe ich das Gefühl, dass diese Party dank Denuvo bald vorbei sein könnte.

    • Ich glaube nicht, dass es so kommen wird.
      Bisher ist Denuvos Aussage, Emulation verhindern zu wollen, nur eine Behauptung. Und selbst wenn sie es tatsächlich verhindern, haben die Leute unbegrenzt Zeit, Umgehungen zu erforschen.
  • Warum bringt Nintendo seine Spiele nicht auf andere Plattformen?
    Ich würde gern Zelda spielen, aber wegen eines einzigen Spiels kaufe ich keine Konsole.

    • Nintendo ist einfach Nintendo, und es gibt genug Leute, die wegen eines Spiels oder mehrerer Spiele eine Konsole gekauft haben, sodass sie genug Geld haben, um weiter Nintendo-typisch zu handeln.
      Ich will das nicht unbedingt verteidigen, aber um die heutige Haltung zu verstehen, muss man sich den Zusammenbruch des nordamerikanischen Videospielmarkts 1983 ansehen. Damals wurde jeder beliebige Schrott als Spiel veröffentlicht, der gesamte Videospielmarkt brach ein, und die Verbraucher verloren das Vertrauen in die Plattform einer bestimmten Spielkonsole. Stattdessen konnte man einen Heimcomputer kaufen: Darauf gab es auch Spiele, und er war noch für andere Dinge nutzbar.
      Das NES war das Gegenteil davon. Es gab Nintendos geschlossenes Ökosystem und eine starke Entwicklung von First-Party-Spielen; dieser Ansatz war erfolgreich, machte das Unternehmen reich und zu einem wichtigen Player im Videospielmarkt. Warum sollte man eine Vorgehensweise aufgeben, die fast 40 Jahre später immer noch funktioniert?
    • Ich habe mir für Tears of the Kingdom eine Switch OLED und das Spiel gekauft, zusammen waren das 420 Dollar.
      Wenn ich es auf einem Laptop mit besserem Display und besseren Lautsprechern hätte spielen können, hätte ich nur 60 Dollar bezahlt. Außerdem ist es jetzt wahrscheinlicher, dass ich weitere Nintendo-Spiele kaufe, um das neue Gerät besser auszunutzen. Als Unternehmen würde ich wohl die Variante wählen, die den siebenfachen Umsatz bringt.
    • Zusätzlich zu dem, was andere Kommentare bereits gesagt haben, hat Nintendo eine andere Konsolenstrategie als Microsoft oder Sony gewählt und ist deshalb in gewisser Weise gezwungen, seine First-Party-Titel exklusiv zu halten.
      Die Nintendo Switch ist im Vergleich zur PS4/5 und Xbox Series X derselben Generation sehr leistungsschwach, hat aber den großen Vorteil, die ultimative tragbare Reise-Konsole zu sein. Die Konsolen von Sony und Microsoft können in der Regel höhere Bildraten oder bessere Grafik liefern und sind meist stärker auf Grafik ausgerichtet, während die Switch zwischen Formfaktor und Akkulaufzeit abwägen muss und dadurch stark eingeschränkt ist. Eine Handheld-Konsole, auf der man nur 30 Minuten spielen kann, wäre schließlich sinnlos.
      Ein großer Teil der Nutzer, einschließlich derjenigen, die solche Emulatoren legal nutzen möchten, würde aus reiner Performance-Sicht vermutlich eher eine andere Konsole oder einen PC/Mac bevorzugen.
      Außerdem dürfte der Gewinn pro verkaufter Kopie auf anderen Plattformen niedriger sein als auf der eigenen Plattform, insbesondere bei Spielen aus internen Studios.
      Wenn man all das berücksichtigt, würden Veröffentlichungen auf anderen Plattformen die Einnahmequellen ziemlich deutlich schmälern.
    • Nintendo ist geradezu besessen davon, dass Produkte im Wesentlichen nur so genutzt werden, wie es vorgesehen ist.
      Sonst hätten sie nicht per Patch einen Item-Duplizierungs-Bug unterbunden, auf den man kaum zufällig stoßen konnte, und sie hätten schon längst erlaubt, die Steuerung zu ändern, was seit Langem eine Basisfunktion ist. Stattdessen kann man Nintendo-Spiele nur auf die vorgesehene und playgetestete Weise steuern. Auch bei Inhalten mit Streaming, Reviews und Gameplay-Videos waren sie lange ziemlich lästig, und bis zu einem gewissen Grad sind sie es immer noch.
      Für viele Leute geht es allerdings nicht nur um ein einziges Spiel. Nintendo hat ziemlich viele erfolgreiche Exklusivtitel: Zelda, Mario Kart, Smash, mehrere Mario-Jump’n’Run-Spiele, die sich in große 3D-Haupttitel und ergänzende 2D-Titel aufteilen lassen, Splatoon, Mario Party, Fire Emblem, Xenoblade, Kirby und andere.
      In der Praxis hat man am Ende mindestens etwa zehn hochwertige und unterhaltsame, aber teure Exklusivspiele. Das gilt selbst dann, wenn man ausklammert, dass die Wii U ein Fehlschlag war und daraus merkwürdige Folgen entstanden, etwa dass Mario Kart 8 als Version inklusive DLC neu veröffentlicht wurde und später noch ein großer Erweiterungspass dazukam.
    • Damit hast du dir die Frage im Grunde selbst beantwortet.
      Wenn du Zelda spielen willst, musst du Nintendo mindestens 260 Dollar zahlen. Wenn du auf etwas Besserem als der Switch Lite spielen willst, kostet es weitere 100 Dollar.
      Anders als Sony oder Microsoft verdient Nintendo tatsächlich nicht nur am Verkauf der Spiele, sondern auch am Verkauf der Hardware Geld.