RyujinX - Nintendo Switchエミュレーターのオープンソース
(ryujinx.org)- C#で書かれたオープンソースのNintendo Switchエミュレーターで、高い正確性と性能、ユーザーフレンドリーなインターフェースを目指す
- 2017年に1人の開発者から始まり、現在はコアチームと数十人のコントリビューターが参加するゼロから書き直されたプロジェクト
- Windows 10/11、macOS、Linuxベースのシステムで動作するクロスプラットフォーム対応
- 4,050本以上のタイトルでテストされており、そのうち約3,400本がプレイ可能な水準と評価されている
- ソースコードがGitHubで公開されており、誰でもアクセス・貢献可能
プロジェクト概要
- C#で書かれたオープンソースのNintendo Switchエミュレーターで、開発者gdkchanが制作
- 目標は優れた正確性と性能、ユーザーフレンドリーなインターフェース、一貫したビルドの提供
- 2017年に単独開発者で始まり、現在は有能なコアチームと数十人のコントリビューターが共同開発しているゼロから書かれた(Written from scratch)プロジェクト
主な特徴
-
オープンソース
- エミュレーターのソースコードがGitHubで公開されている
-
クロスプラットフォーム
- Windows 10/11、macOS、Linuxベースのシステムで現在利用可能
-
互換性
- 4,050本を超えるタイトルでテストされており、そのうち約3,400本が**プレイ可能(playable)**な水準と評価されている
-
サポート
- Ryujinx Discordサーバーを通じてサポートを受けられ、Switchエミュレーションのユーザーやチーム開発者と交流できる
名前の由来
- 発音はRee-You-Jinxで、神話上の海神であり竜である**「Ryujin(リュウジン)」**に由来
- 名前のNX部分はSwitch本体のコードネームから取られている
1件のコメント
Hacker News の意見
こういうものを作るには、どんなキャリアパスをたどればいいのか気になる
ただ2年間ずっと夜と週末にハックするだけなのか? こういう仕事で報酬を得ている人がいるとは思えないし、法的な問題のせいで文書化もあまり進んでいない、ものすごく深い知識が必要な分野に見える
医療上の問題で大学を中退し、一生障害給付を受けられる「機会」を得たので、それを受け入れて趣味としてプログラミングを続けた。その間、オンラインで、仕事をしていなかったり一時的に学業を休んでいて、後で就職しようとしている趣味プログラマーにたくさん出会った
現実の世界でプログラミングに興味のある人を知らず孤独になったので、meetupサイトを探してイベントに参加し始めた。そこで出会った友人たちにプロのプログラマーとして働いてみるよう勧められ、試してみたところ、今ではこの分野で5年働いていて楽しんでいる
振り返ると、専門分野があることは知っていたが、教育を受け経験豊富なプログラマーだけが入る世界だと思っていたので、自分がその一員になれるとは思いもしなかった
入るときに難しかったのは、自分があまりにも特定分野に特化していた一方で、業界はより汎用的な能力や別の専門性を求めていたことだった。幸い、最初からゲームエンジン開発やグラフィックスレンダリングのような似た関心を持つ人たちに出会い、プロの業界の地形を理解する助けになった
今でも余暇に趣味プロジェクトをするのは満足感があり、仕事と家族のため昔ほど時間はないが、時々は時間を作っている
コンソールのリバースエンジニアリングやコンソール機器向けソフトウェア開発はかなりやってきた。主にGBAとNDSの開発、SMSとGenesisのリバースエンジニアリングも少しやったが、開発者としてやってきたことの中でも本当に楽しい部類に入る。ただし、避けられない難所を押し通すには、ものすごい粘り強さが必要
信じがたいかもしれないが、もう一つの主要なSwitchエミュレーターで使われているARM変換エンジンの主な作者は医師だ。本人はときどき自分を「現実世界の白魔道士」と表現している
複数分野の技術が必要で、ハードウェアエンジニア、リバースエンジニアリングの専門家、几帳面なドキュメント作成者、特化したソフトウェアエンジニアなどが、互いの作業の上に積み上げていく形になる
1人プロジェクトも見かけるが、たいてい古いハードウェアに限られ、それでも複数の出典の文書を活用している。nesdev wikiでさえ、6502研究者、台湾のクローン製造業者のリバースエンジニアリング、デキャップ作業、古いNESエミュレーター、既存文書の山の上に築かれたものだ
当時は10代で、CとARMコードを少し知っていただけで、ハードウェアやx86の知識はまったくなかった。PCはもともとかなりよく文書化されていて、比較できる別のエミュレーターもあったが、理解できず、手元の数冊の本も役に立たないときは、とにかく実験するしかなかった。コードを少し書いて反応を見る、というやり方で、たいていはクラッシュし、ときにはコンピューター全体が固まった
多くの部分は、相手のメンタルモデルを作る作業だった。私の場合はWindows NTの初期ブートとDirectDrawの初期化で、一段階ずつ次の段階へ進ませるコードを書いた。常に遅い作業だったが、手がかりを見つけるとセラピーのように感じることもあった
うまく当てると、報酬は突然やってくる。あるはずのない場所で見知らぬ世界が動き、まるで木の上で魚が泳いでいるようだ。こういうことをもっとやってみたい
初期のエミュレーターは、初期コンソールの非常に特異なハードウェアをエミュレートしなければならなかった
最近のコンソールは消費者向けコンピューターとかなり似ているように見えるし、Switchも基本的にはNvidia Jetsonのようなものだと思っていた
現在のエミュレーションは、Wineのように必要なAPIを提供して仮想マシン上で実行する方向に近いのか、それとも実際のハードウェアエミュレーションが今でも必要なのか?
ゲームが使うグラフィックスAPIは通常、さまざまなハードウェアの詳細を露出していて、そのハードウェアで最大限の性能を引き出せるようゲームを細かく調整できる。こうしたハードウェア特化のAPI呼び出しをOpenGL/Direct3D/Vulkan/Metalへ変換するには多くの作業が必要になる
しかしネイティブARMシステムではCPUコードをほぼそのまま実行でき、すでにAndroid向けに開発されていたが中止されたSkylineがそうしていたし、Yuzuも今後この機能を実装する予定のようだ
より大きな問題はGPUだ。Nvidia Maxwell GPUではあるが、Switch専用のカスタムAPIで内部名NVNを使っているため、シェーダー再コンパイルを含む完全な変換レイヤーが今でも必要になる
Macbook Pro M1でこれを使って、Breath of the WildとMario KartをXboxコントローラーでプレイしている
子どもたちも私もとても気に入っている
私にとっては、特に2つの用途で優れている。第一に、家族全員でNintendoのゲームをする場合だ。4人がそれぞれ小さなコントローラーを持ち、ゲーム開始前のキャラクター選択やオプション設定といった流れを進められるよう、すべてのNintendoゲームが非常に慎重に設計されている
第二に、携帯/分離モードでプレイする場合だ。手に持って遊ぶ楽しさがあり、タブレットと違って物理コントロールがある。ほとんどのゲームは平均的なiPadゲームよりはるかに優れていて、より正確に言えば、マッチ3や無意味なクリッカーゲームがiPadほど簡単に上位へ浮上してこない
こういう用途に C# が合うとは思っていなかったけれど、いい感じ
エミュレーションとしてはかなり革新的なアプローチだと思う
そしてApple Siliconではハイパーバイザーを使って、SwitchのArm64v8命令をネイティブに実行する
https://blog.ryujinx.org/the-impossible-port-macos/
かなり低レベルなメモリ管理や操作を可能にするツールが継続的に追加されており、複数のプラットフォームで動かせたりネイティブコードを生成できたりするので魅力的。書いていて楽しくもある
C#は20年ほど前に UOの世界 を革新し、シンプルさ、明確さ、性能のバランスがよかった
https://www.runuo.net/
https://github.com/ClassicUO/ClassicUO
くそ、UOのことなんて考えるんじゃなかった。今は悲しくて年を取った気分だ
ざっくり言うとC/C++がまず先で、この場合は両者を区別するのが本当に難しい。純粋に片方だけを使うコードベースはまれ。次がRustで、趣味のエミュレーターでは3〜4番手くらい、真剣なプロジェクトではもっと上位に来ることもある。その次がC#とJavaあたり
JavaScriptとPythonは趣味プロジェクトでは非常によくあるが、真剣なコードベースではたいてい例外的な選択。WASMは例外と見なせる
https://github.com/TASEmulators/BizHawk
悪名高い Denuvo DRM を作ったIrdetoが、Switchエミュレーターを特に狙った製品を作ったというのは少し腹立たしい
エミュレーター自体は合法なのに
自分のゲームを直接ダンプする人は多くない
どちらも使ってみたが、Tears of the Kingdom をプレイするときはYuzuのほうが好み: https://yuzu-emu.org/
それでもどちらも素晴らしく、両プロジェクトとも開発ペースが速いので、今年初めに抱いた印象はすでに古くなっている可能性が高い
使い方についての有用な案内がここにある: https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
https://yuzu-emu.org/entry/yuzu-android/
少なくともデスクトップではPatreon経由の早期アクセスプログラムがある。ただしここからも入手できる: https://pineappleea.github.io/
SkylineはAndroidで動作するが、どの端末でもまともに動かせたことがない。もう開発されていない
https://skyline-emu.one/
私は逆で、かなり新しめのスペックのマシンがあればRyujinxのセットアップのほうがずっと速いと記憶している
Ryujinxは、私が見た中で最も印象的な C#プロジェクト の一つ
もう一つはRoslyn
Switchから直接ダンプしたものがなくても、これでゲームを 合法的に プレイする方法はある?
WebブラウザでSwitchゲームを購入することはできる?
新しく買うSwitchはほぼ確実にパッチ済みのV2で、Switch LiteとOLEDもモードチップをはんだ付けしない限り脱獄できない
ただ、ゲームを所有しているなら、ROMをどの方法で入手したかが重要なのだろうか?
https://www.nintendo.com/store/games/nintendo-switch-games/#...
ただしSwitchがなければダウンロードしたりダンプしたりはできない
YuzuとRyujinxはどちらも好き
ネイティブのコンソールより良い体験を提供できるのは驚きだ。ただし Denuvo のおかげで、このパーティーはそろそろ終わりそうな気もする
これまでのところ、Denuvoがエミュレーションを防ぐと言っているのは主張にすぎない。仮に実際に防げたとしても、人々には回避方法を研究する時間が無限にある
Nintendoはなぜゲームを他のプラットフォームに出さないのだろうか?
Zeldaを遊んでみたいが、ゲーム1本のためにコンソールを買うつもりはない
特に擁護したいわけではないが、現在の姿勢を理解するには1983年の北米ビデオゲーム市場崩壊を見る必要がある。どんな粗悪品でもゲームとして発売され、ビデオゲーム市場全体が崩壊し、消費者は特定のゲームコンソールというプラットフォームへの信頼を失った。代わりに家庭用コンピューターを買えば、ゲームもあり、他の用途にも使えた
NESはその逆だった。Nintendoのクローズドなエコシステムと、多数のファーストパーティゲーム開発があり、このアプローチは成功して同社を裕福にし、ビデオゲーム市場の主要プレイヤーにした。ほぼ40年たった今でも機能しているやり方を、なぜ捨てるのか?
もっと良い画面とスピーカーを備えたノートPCで遊べたなら、60ドルしか払わなかっただろう。さらに、今では新しい機器の活用度を高めようとして、他のNintendoゲームを買う可能性も高くなっている。事業者なら、売上が7倍になる方を選ぶと思う
Nintendo Switchは同世代のPS4/5、Xbox Series Xと比べると性能は非常に低いが、究極の携帯用/旅行用コンソールという大きな利点がある。SonyとMicrosoftのコンソールは通常、より高いフレームレートやより良いグラフィックを出せて、たいていグラフィック寄りだが、Switchはフォームファクターとバッテリー持続時間のバランスを取らなければならないため、非常に制約が大きい。携帯機なのに30分しか遊べないなら意味がないからだ
合法的にこうしたエミュレーターを使いたい人たちを含め、ユーザー層の大きな部分は、純粋な性能の観点では他のコンソールやPC/Macをより好む可能性が高い
また、別のプラットフォームで売ると、特に内部スタジオのゲームの場合、自社プラットフォームで売るよりも販売本数あたりの利益が低くなると思われる
こうした点を考えると、他プラットフォームでのリリースは収益の流れをかなり大きく削ることになるだろう
そうでなければ、偶然遭遇するのがほぼ不可能なアイテム複製バグをパッチで塞いだり、ずっと前から基本機能である操作変更も許可していたはずだ。代わりにNintendoのゲームでは、意図され、プレイテストされた方法でしか操作できない。ストリーミング、レビュー、ゲームプレイ動画を含むコンテンツにも長い間かなり面倒な対応をしてきたし、ある程度は今もそうだ
ただ、多くの人にとってはゲーム1本だけの問題ではない。NintendoにはZelda、Mario Kart、Smash、3D本編タイトルと2D補完タイトルに分けられる複数のMarioジャンプアクションゲーム、Splatoon、Mario Party、Fire Emblem、Xenoblade、Kirbyなど、成功した独占タイトルがかなり多い
実際には、少なくとも10本ほどの高品質で楽しめるが高価な独占ゲームを手にすることになる。Wii Uが失敗したためにMario Kart 8がDLC同梱版として再発売され、後に大型拡張パスが付くなど奇妙な結果を生んだ点を除いて見てもそうだ
Zeldaを遊びたいなら、Nintendoに最低260ドルを払う必要がある。Switch Liteより良いものでプレイしたいなら、さらに100ドルかかる
SonyやMicrosoftと違い、Nintendoはゲーム販売だけでなくハードウェア販売でも実際に利益を出している