让你的Windows/Linux玩上Switch!
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
:配置较为复杂,而且不具备分辨率缩放的功能,会有更好的内存使用率以及页面文件使用率
如何选择取舍就看各位读者了。
附录三:资源下载
参考
- Ryujinx-PPTC
- yuzu-New Feature Release - NVDEC emulation!
- YouTube-Yuzu Emulator - The Async GPU Update | 40 - 400% Performance Improvements
- Vulkan vs. OpenGL Performance For Linux Games
- 知乎-openGL、vulkan求解惑?
- 知乎-Vulkan相比于OpenGL、DX12、Metal和Mantle有什么优势、劣势?
- YouTube-What is the Best Nintendo Switch Emulator? Performance & Features Tested