1 前言
某天在Github
上面看到了兩個Switch
的模擬器:
於是就想動手想嘗試一下在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 關於兼容性
官方給出了遊戲的兼容性列表:
3 環境
筆者測試的環境爲:
- 筆記本
- 系統:
Manjaro
- 顯卡:
RTX 2060
- 固件版本:
Firmware 11.0.1
- 測試遊戲:超級馬里奧3D世界
4 準備工作
無論使用的是yuzu
還是Ryujinx
,都需要準備:
prod.keys
- 遊戲本體
如果使用的是Ryujinx
,還需要額外準備固件。
先來看一下prod.keys
。
4.1 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
中還需要額外的固件(Firmware
),固件的版本需要與prod.keys
對應,固件可以到此處下載或者從文末提供的鏈接下載,目前最新的版本是11.0.1
。
5 yuzu
5.1 下載
yuzu
提供了AppImage
,直接下載然後添加執行權限即可:
添加執行權限:
chmod u+x yuzu-*.AppImage
./yuzu-*.AppImage
5.2 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
重寫了GPU
顯存管理器,加速了緩存機制,使得幀數得到明顯提示,同時性能提升40%-400%(來自BSoD Gaming
的測試數據,鏈接在文末)Use NVDEC emulation
:NVDEC
是一項硬件轉碼技術,能減少轉碼期間計算密集型任務中CPU的負擔,這是Nvidia
的一個技術,有了它,過場動畫的播放會暢順很多
5.4.3 遊戲配置
yuzu
可以根據每個遊戲進行獨立的配置,在對應的遊戲上面右鍵,並選擇properties
選項卡即可進入如下界面:
大部分設置與模擬器設置一樣,就不詳細說了。
5.5 啓動遊戲
雙擊遊戲就可以愉快地開始了。
6 Ryujinx
6.1 下載
直接到Ryujinx
官網下載即可:
6.2 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
這裏是一些輸入配置,與yuzu
一樣,也是可以根據雙手柄以及單手柄的類型來設置鍵盤的按鍵:
6.4.2 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
這裏是一些顯卡相關的選項,包括:
- 是否啓用着色器緩存:建議開啓,這是一項可以提高用戶體驗性的技術,着色器被編譯後會被放進硬盤中,隨着下次啓動遊戲從硬盤加載到內存中
- 各向異性過濾:用來過濾、處理當視角變化導致3D物體表面傾斜時造成的紋理錯誤等問題,可以設置從2倍到16倍,數值越大對顯卡要求越高
- 分辨率縮放:默認是原生的720p或1080p,可以根據顯示屏縮放調整
- 畫面比例:默認16比9,根據屏幕設置即可
6.5 啓動遊戲
雙擊愉快地啓動遊戲了。
7 截圖
筆者很懶就隨便截了兩張馬里奧的:
附錄一: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
?
這裏同樣參考了別人的測試(數據來源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
獲取。
參考
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
6、知乎-Vulkan相比於OpenGL、DX12、Metal和Mantle有什麼優勢、劣勢?
7、YouTube-What is the Best Nintendo Switch Emulator? Performance & Features Tested