
1 前言
某天在
Github
上面看到了兩個
Switch
的模拟器:
- yuzu
- Ryujinx
于是就想動手想嘗試一下在
Linux
上面玩上
Switch
。
本文首先簡單介紹一下兩個模拟器,接着是兩個模拟器的安裝使用及基本配置。附錄包括了
Vulkan
以及
OpenGL
的比較和
Ryujinx
和
yuzu
的比較。下面先來看一下兩個模拟器究竟是什麼。
2 模拟器、平台以及相容性
2.1 關于模拟器
-
:yuzu
的制作者寫的一個開源Citra
模拟器,用NS
編寫,高達C++
,特點包括14.2k star
的支援、靈活的模拟器配置以及遊戲配置等等Vulkan API
-
:基于Ryujinx
與.NET 5.x
的開源C#
模拟器,特點包括NS
音頻輸出、OpenAL
(下文有介紹)、支援多種輸入、支援PPTC
等等,DLC
5.8k star
2.2 關于平台
目前這兩個模拟器支援的平台隻有
Windows
Linux
至于
Mac
,
yuzu
沒有說明支援,而
Ryujinx
在計劃中,在下載下傳頁面(上圖)可以看到
Mac
的圖示,但是處于灰色狀态。
另外,筆者還發現了一個在
M1 Mac
上運作的issue:
大概看了一下需要等待2021年11月的
.NET 6
去支援了,是以
Mac
黨還得再等等。
2.3 關于相容性
官方給出了遊戲的相容性清單:
-
:相容性清單yuzu
-
Ryujinx
3 環境
筆者測試的環境為:
- 筆記本
- 系統:
Manjaro
- 顯示卡:
RTX 2060
- 固件版本:
Firmware 11.0.1
- 測試遊戲:超級馬裡奧3D世界
4 準備工作
無論使用的是
yuzu
還是
Ryujinx
,都需要準備:
-
prod.keys
- 遊戲本體
如果使用的是
Ryujinx
,還需要額外準備固件。
先來看一下
prod.keys
4.1 prod.keys
prod.keys
yuzu
Ryujinx
都需要
prod.keys
,裡面包含了
NS
裝置需要的
key
,需要通過
Hekate
等一些列工具生成,這部分比較複雜,是以文末附錄直接提供了現成的
prod.keys
另外,在
yuzu
的官方文檔還提到了需要使用
title.key
,筆者實測發現
title.key
不是必須的,可以自動生成:
而在
Ryujinx
中
title.key
也不是必須的,在
system
檔案夾下隻需存在
prod.keys
即可。
4.2 遊戲本體
遊戲本體這裡推薦三個網站下載下傳:
- 遊戲年輪
- 遊戲大桶
- 木子玩
注意:遊戲下載下傳完成後需要放在一個檔案夾中。
4.3 固件( Ryujinx
)
Ryujinx
在
Ryujinx
中還需要額外的固件(
Firmware
),固件的版本需要與
prod.keys
對應,固件可以到此處下載下傳或者從文末提供的連結下載下傳,目前最新的版本是
11.0.1
5 yuzu
yuzu
5.1 下載下傳
yuzu
提供了
AppImage
,直接下載下傳然後添加執行權限即可:
添加執行權限:
chmod u+x yuzu-*.AppImage
./yuzu-*.AppImage
5.2 prod.keys
prod.keys
第一次運作會提示沒有
key
,先忽略進入界面,選擇右上角的
File->Open yuzu Folder
,打開後,建立一個
keys
檔案夾:
把
prod.keys
放進去并重新開機即可。
5.3 添加遊戲
點選
Add New Game Directory
,選擇遊戲目錄進行添加即可:
添加完遊戲後就可以直接輕按兩下啟動遊戲了。
5.4 配置
yuzu
的配置比較豐富,除了模拟器本身的配置外,每個遊戲也擁有獨立的配置:
5.4.1 一般配置
一般的配置包括系統語言、一些熱鍵等的配置,通常情況下保持預設即可:
另外在按鍵的配置中可以根據需要選擇自己合适的按鍵,可以根據單搖桿和雙搖桿的形式配置:
5.4.2 圖形配置
這裡的配置很重要:
主要包括:
-
設定:API
支援yuzu
還有OpenGL
Vulkan
會運作得更流暢,幀率更高,具體根據個人情況進行選擇,文末附錄有提到兩者的比較Vulkan
-
:磁盤着色器緩存,建議開啟,這樣就不用每次都重新編譯,而是直接從磁盤加載到記憶體Use disk shader cache
-
Use asynchronous GPU emulation
異步模拟,GPU
重寫了yuzu
顯存管理器,加速了緩存機制,使得幀數得到明顯提示,同時性能提升40%-400%(來自GPU
的測試資料,連結在文末)BSoD Gaming
-
Use NVDEC emulation
是一項硬體轉碼技術,能減少轉碼期間計算密集型任務中CPU的負擔,這是NVDEC
的一個技術,有了它,過場動畫的播放會暢順很多Nvidia
5.4.3 遊戲配置
yuzu
可以根據每個遊戲進行獨立的配置,在對應的遊戲上面右鍵,并選擇
properties
頁籤即可進入如下界面:
大部分設定與模拟器設定一樣,就不詳細說了。
5.5 啟動遊戲
輕按兩下遊戲就可以愉快地開始了。
6 Ryujinx
Ryujinx
6.1 下載下傳
直接到
Ryujinx
官網下載下傳即可:
6.2 key
與固件
key
打開
Ryujinx
Windows
直接打開
exe
Linux
直接
./Ryujinx
即可,首次運作的時候應該會如下提示:
先選擇OK,進入界面後選擇
File->Open Ryujinx Folder
,把
prod.keys
放進
system
并重新開機。
重新開機之後,在界面中選擇
Tools -> Install Firmware -> Install a firmware from XCI or ZIP
安裝下載下傳好的固件。
6.3 添加遊戲
Options -> Settings
,選擇其中的
Add
并選擇對應的遊戲檔案夾進行添加即可。
6.4 配置
添加完遊戲後就可以看到遊戲了,别急着打開,先把一些正常設定做一下。雖然
Ryujinx
的配置選項比
yuzu
要少,但并不代表不需要配置,其中最重要的三個是
Input
、
System
Graphics
6.4.1 Input
Input
這裡是一些輸入配置,與
yuzu
一樣,也是可以根據雙搖桿以及單搖桿的類型來設定鍵盤的按鍵:
6.4.2 System
System
這是一些時區以及系統語言的設定,一般會使用作業系統的設定,不需要更改,這裡說一下勾選的三個選項:
-
:垂直同步,當顯示卡每秒渲染的幀率大于螢幕的重新整理率時,會将顯示卡的輸出與螢幕重新整理率協調,進而阻止畫面撕裂,比如螢幕重新整理率隻有VSync
,如果原來顯示卡每秒能渲染60Hz
,那麼啟用120幀
會讓顯示卡同步螢幕的重新整理率Vsync
-
:這是一項可以減少遊戲加載時間的技術,實際上是一項緩存技術,第一次啟動遊戲的時候會建立或更新PPTC
檔案,第二次啟動遊戲的時候從該檔案決定轉譯哪一個函數以及怎樣轉譯,每次遊戲結束都會更新該檔案。這些緩存檔案的位置在.info
或User’s AppData\Roaming\Ryujinx\games\<game id>\cache\cpu
裡面~/.config/Ryujinx/games/<game id>/cache/cpu
-
:這是一個安全性的檢查選項FS Integrity Checks
6.4.3 Graphics
Graphics
這裡是一些顯示卡相關的選項,包括:
- 是否啟用着色器緩存:建議開啟,這是一項可以提高使用者體驗性的技術,着色器被編譯後會被放進硬碟中,随着下次啟動遊戲從硬碟加載到記憶體中
- 各向異性過濾:用來過濾、處理當視角變化導緻3D物體表面傾斜時造成的紋理錯誤等問題,可以設定從2倍到16倍,數值越大對顯示卡要求越高
- 分辨率縮放:預設是原生的720p或1080p,可以根據顯示屏縮放調整
- 畫面比例:預設16比9,根據螢幕設定即可
6.5 啟動遊戲
輕按兩下愉快地啟動遊戲了。
7 截圖
筆者很懶就随便截了兩張馬裡奧的:
附錄一: Vulkan
OpenGL
?
Vulkan
OpenGL
這裡是針對
yuzu
來說的,因為
Ryujinx
隻提供了
OpenGL
的
API
yuzu
提供了兩種圖形
API
-
Vulkan
-
OpenGL
筆者嘗試玩了一下超級馬裡奧3D世界,發現
OpenGL
會經常性的卡頓,玩起來很不流暢,就連頂一個金币都會卡頓大約1s左右,這種使用者體驗就非常的不好,但是,使用
Vulkan
就沒有問題。
當然這也有可能是遊戲本身的原因,筆者并沒有測試更多的遊戲。下面是
Vulkan
相比起
OpenGL
的優點:
- 更加接近底層:
更加接近驅動和硬體,友善開發者優化API
- 多線程:
天然支援多線程,也支援異步資料互動以及并行繪制Vulkan
而下面是在
Linux
上對
Dota2
Mad Max
RX 560
GTX 1050 Ti
下不同場景不同分辨率下的測試資料,包括幀數以及
CPU
使用率(2018年7月,作者
Michael Larabel
,連結在文末),首先是
Dota2
的資料:
下面是
Mad Max
,圖形預設為低,
1080p
圖形預設為低,
2k
分辨率:
圖形預設為高,
1080p
圖形預設預設,
2k
可以看到
Vulkan
的大部分表現都要比
OpenGL
要好,在
GTX 1050 Ti
中,無論是
1080p
2k
,在更高幀率的同時保持着更低的
CPU
使用率。
不過,雖然
Vulkan
能表現出更好的性能,但是要比
OpenGL
複雜得多,由于筆者不是學圖形的,就不展開了,需要的請自行查閱資料。
附錄二: Ryujinx
yuzu
Ryujinx
yuzu
這裡同樣參考了别人的測試(資料來源
BSoD Gaming
,2020年8月,連結見文末),環境為有兩組:
-
i5 4690k + GTX 1080 Ti
-
i7 8700k + GTX 1080 Ti
下面是一些測評的截圖,顯示了不同環境下的
CPU
使用率以及幀數:
比較特别的是塞爾達傳說:荒野之息,可以看到隻有一組變量了,因為在低配置的機器上測試不了,而在
i7 8700k
上,可以明顯看到
Ryujinx
的幀數要比
yuzu
低很多,而且
Ryujinx
CPU
占用率要比
yuzu
高:
另外在異界鎖鍊中,雖然
yuzu
有着比
Ryujinx
更高的幀率,但是會出現錯誤的材質,如下圖所示:
下面總結一下優點:
-
:新手友好,配置友善快捷,而且帶有分辨率縮放功能,還有Ryujinx
平台支援(目前在計劃中)Mac
-
:能針對硬體以及遊戲進行更詳細的配置,而不是像yuzu
那樣的統一全局配置,遊戲加載速度更快,更重要的是帶有Ryujinx
支援,這是最大的優點Vulkan API
缺點:
-
:新遊戲加載緩慢,需要較長時間等待加載,但是有了Ryujinx
的幫助,加載時間快了不少PPTC
-
:配置較為複雜,而且不具備分辨率縮放的功能,會有更好的記憶體使用率以及頁面檔案使用率yuzu
如何選擇取舍就看各位讀者了。
附錄三:資源下載下傳
prod.keys
、最新的
Windows
+
Linux
模拟器、固件以及測試所用的遊戲,連結請關注公衆号“氷泠之路”并回複關鍵字
Switch
擷取。
參考
1、Ryujinx-PPTC
2、yuzu-New Feature Release - NVDEC emulation!
3、YouTube-Yuzu Emulator - The Async GPU Update | 40 - 400% Performance Improvements
4、Vulkan vs. OpenGL Performance For Linux Games
5、知乎-openGL、vulkan求解惑?
6、知乎-Vulkan相比于OpenGL、DX12、Metal和Mantle有什麼優勢、劣勢?
7、YouTube-What is the Best Nintendo Switch Emulator? Performance & Features Tested