讓你的Windows/Linux玩上Switch!

1 前言

某天在Github上面看到了兩個Switch的模擬器:

於是就想動手想嘗試一下在Linux上面玩上Switch

本文首先簡單介紹一下兩個模擬器,接着是兩個模擬器的安裝使用及基本配置。附錄包括了Vulkan以及OpenGL的比較和Ryujinxyuzu的比較。下面先來看一下兩個模擬器究竟是什麼。

2 模擬器、平臺以及兼容性

2.1 關於模擬器

  • yuzuCitra的製作者寫的一個開源NS模擬器,用C++編寫,高達14.2k star,特點包括Vulkan API的支持、靈活的模擬器配置以及遊戲配置等等
  • Ryujinx:基於.NET 5.xC#的開源NS模擬器,特點包括OpenAL音頻輸出、PPTC(下文有介紹)、支持多種輸入、支持DLC等等,5.8k star

2.2 關於平臺

目前這兩個模擬器支持的平臺只有WindowsLinux

在這裏插入圖片描述

在這裏插入圖片描述

至於Macyuzu沒有說明支持,而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不是必須的,可以自動生成:

在這裏插入圖片描述

而在Ryujinxtitle.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 emulationGPU異步模擬,yuzu重寫了GPU顯存管理器,加速了緩存機制,使得幀數得到明顯提示,同時性能提升40%-400%(來自BSoD Gaming的測試數據,鏈接在文末)
  • Use NVDEC emulationNVDEC是一項硬件轉碼技術,能減少轉碼期間計算密集型任務中CPU的負擔,這是Nvidia的一個技術,有了它,過場動畫的播放會暢順很多

5.4.3 遊戲配置

yuzu可以根據每個遊戲進行獨立的配置,在對應的遊戲上面右鍵,並選擇properties選項卡即可進入如下界面:

在這裏插入圖片描述

大部分設置與模擬器設置一樣,就不詳細說了。

5.5 啓動遊戲

雙擊遊戲就可以愉快地開始了。

6 Ryujinx

6.1 下載

直接到Ryujinx官網下載即可:

在這裏插入圖片描述

6.2 key與固件

打開RyujinxWindows直接打開exeLinux直接./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要少,但並不代表不需要配置,其中最重要的三個是InputSystemGraphics

在這裏插入圖片描述

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只提供了OpenGLAPI

yuzu提供了兩種圖形API

  • Vulkan
  • OpenGL

筆者嘗試玩了一下超級馬里奧3D世界,發現OpenGL會經常性的卡頓,玩起來很不流暢,就連頂一個金幣都會卡頓大約1s左右,這種用戶體驗就非常的不好,但是,使用Vulkan就沒有問題。

在這裏插入圖片描述

當然這也有可能是遊戲本身的原因,筆者並沒有測試更多的遊戲。下面是Vulkan相比起OpenGL的優點:

  • 更加接近底層:API更加接近驅動和硬件,方便開發者優化
  • 多線程:Vulkan天然支持多線程,也支持異步數據交互以及並行繪製

而下面是在Linux上對Dota2以及Mad MaxRX 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低很多,而且RyujinxCPU佔用率要比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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章