编注:我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。文章代表作者个人观点,少数派仅对标题和排版略作修改。

前言

就在着手写下这篇文字的前一天,我刚刚在《死亡搁浅导演剪辑版》中获得了全部 63 个成就,而使用的设备,就是一台运行着 Linux 系统的 ROG Ally 掌机。所以是的,真的有人会用 Linux 系统打游戏。

打开网易新闻 查看更多图片

去年八月份我入手了 ROG Ally 掌机,也是在那时,对 Windows 已经基本上「断舍离」的我,才第一次用上了 Windows 11。从一个 Linux 用户的角度来看,Windows 11 真是槽点不打一处来。

如今快十个月过去了,我在这台掌机上折腾了很多不同的系统,最终安顿在了 Bazzite;也打了不少游戏,可以说过去几个月我的游戏时间,比之前几年加起来都多。在这篇文章中,我打算以一个不同的视角,结合 Linux 系统在 ROG Ally 掌机上的体验,聊一聊我对 Linux 游戏现状的一些个人见解。

Steam 游戏

可能是害怕被微软「卡脖子」,Valve 在 Linux 游戏领域已经耕耘多年了,SteamOS 从一开始基于 Debian,到如今的基于 Arch;从早期失败的 Steam Machine 和 Steam 手柄,到如今大获成功的 Steam Deck。同时 Valve 也没有闭门造车,SteamOS 的重要组件 GameScope 与 Proton,是直接开源并且所有 Linux 系统都可以直接用的;对内核与驱动程序的改进,也是直接贡献到上游的。Valve 几乎是凭着一己之力盘活了整个 Linux 游戏的生态。

对于 Steam 平台的游戏,虽然原生支持 Linux 的游戏并不多,但是 Proton 已经足够好用。按照我的经验,其实大部分情况下都不用关心兼容层的问题,只要你能设法安装 Steam,接下来的事情就和在 Windows 下差不多,只要点击下载然后游玩就行了。

如果实在不放心游戏的兼容性到底如何,也可以在 protondb 网站上查看所玩游戏的兼容性,在上面搜索想要查看的游戏,可以看到玩家对游戏给出的兼容性评级,以及对可能存在的问题的解决方案。

当然前面这一切的前提是所玩的游戏不是需要反作弊支持的多人游戏,反作弊支持会在后面的章节中谈到,或者是游戏开发商直接拒绝游戏在 Linux 上运行,这种情况也只能 F**k them 了。

Steam 游戏在 Linux 下还有一个特色功能是 Vulkan 着色器预缓存更新,它的大概原理是具有相同硬件的玩家之间相互共享构建好的 Vulkan 着色器缓存,从而减少游戏过程中着色器缓存构建对性能的消耗,可以很大程度上增加游戏帧率的稳定性。

我测试了古墓丽影崛起这款游戏,720p 中画质预设,加 FSR 上采样,15W TDP,运行游戏自带的性能测试,Steam 版本的游戏平均帧数有 51 帧,而 Epic 版本的游戏,在第一次运行性能测试时,平均帧数只有 45 帧,期间帧数波动也比较明显,再一次运行性能测试,因为同样的场景已经加载过一次,着色器缓存已经构建好了,帧数表现好了一些,有 49 帧,但还是相比于 Steam 版本的游戏差了一些。

具体到实际的游戏体验,在加载新场景时,如果没有着色器缓存,就会导致帧数发生较大的波动,而如果是之前加载过的场景,帧数波动就不会那么明显。

打开网易新闻 查看更多图片

Steam 的着色器预缓存更新效果虽然是很好,但也存在一些问题:

首先是额外占用空间且不可以移动,虽然安装游戏时可以选择安装到不同的分区里面,但着色器缓存是会统一放在家目录里面的,不可以更改,有些游戏的着色器缓存占用可能有好几个 G,这对于主硬盘空间吃紧的用户来说很不友好,比如 64G 版本的 Steam deck 用户,虽然将 mesa 更新到 24 版本后,构建的着色器缓存占用空间小了一些,但也没有解决根本的问题;

另一点是更新频繁,几乎每天我第一次打开 Steam 时,都会发现有一两个游戏需要更新,并不是常规的内容更新,而是着色器预缓存更新,一般情况下不会超过几百兆,按照一般人家的网络速度也就是多等几分钟的事,按理来说也可以接受,但它与常规游戏更新最大的区别就是折磨人的下载速度,大部分情况下前 90% 的下载速度还算正常,但往往一旦过了 90% 的下载进度,网络速度就会逐渐走低,有时甚至会卡在最后一两 MB 更新不完,需要等上好久才能下载完并启动游戏;

当你以为着色器缓存终于下载完了,终于可以进入游戏了,点击启动游戏后,往往会发现会有下一个进度条在阻拦着你,那就是游戏需要处理下载好的着色器缓存,这个过程又需要一段时间。

这个时间取决于机器的性能和游戏本身,通常是是游戏安装完成后第一次启动,或是在游戏进行过一次大更新后,处理缓存的时间会格外漫长,虽然可以选择跳过这个步骤,但是会导致在游戏时产生较严重的性能问题。一个比较极端的例子是《最后生还者第一部》刚刚登陆 PC 时,博主 GameingOnLinux 在 Steam Deck 上测试这个游戏,第一次启动花了差不多一个小时才完成着色器缓存的构建。

整体来说,Steam 游戏在 Linux 下的体验,已经足够好,即使是什么也不懂的新手,也可以顺利游玩,但是,相比于在 Windows 下 Steam 游戏的体验,还是有所欠缺。当然 SteamOS 的游戏模式与 Steam Input 针对手柄操作的体验是独一档的,这是其他厂商在 Windows 下达不到的体验。

非 Steam 游戏

如果说 Steam 游戏是傻瓜式的游玩体验,那么要想在 Linux 下游玩其他平台的游戏就需要一些知识水平了。如果游戏平台原生支持 Linux,倒无需担心太多,比如 Java 版的 Minecraft;而如果游戏平台不支持 Linux,就要麻烦许多了,要想让这些平台在 Linux 上运行,往往需要了解不同版本的兼容层的区别与如何使用,遇到问题要如何解决等等,虽然现在有很多工具尝试简化这些问题,但相比于 Steam 平台,还是要困难很多;更是有一些平台游戏无论如何也无法支持在 Linux 上运行,比如 Xbox Game Pass,这类平台的游戏只能通过云游戏来游玩了。

因为我从 Epic 平台白嫖了不少游戏,所以下面主要谈一下我在 Linux 下游玩 Epic 平台游戏的经验。

首先是 Heroic Games Launcher,这是我目前用的最多的一个工具,支持 Epic、GOG 和 Amazon 平台,也可以手动添加游戏。具体到 Epic 平台的支持,是基于 Legendary 实现的,支持了原版 Epic 游戏启动器的绝大多数功能,包括云存档支持和 EOS Overlay 支持等等,另外还可以下载 Wine-GE 与 Proton-GE 的兼容层,并为每个游戏单独指定不同的兼容层和不同的启动选项。

打开网易新闻 查看更多图片

不过我目前用下来,Heroic Games Launcher 还是存在一些问题,比如要启用 EOS Overlay 需要一些额外配置,我自己实际测试下来还发现只有用 Wine-GE 兼容层才能实际启用 EOS Overlay,Proton-GE 就不行。

还有游戏需要在 Heroic 启动器内启动才能联网,如果将游戏快捷方式添加到 Steam 然后直接启动游戏,那游戏是多半无法联网的,单机游戏还好,需要联网的游戏就比较难受了,像《死亡搁浅》这样将联网作为一种玩法的游戏,虽然我是在 Epic 平台免费领取的,折腾到最后我还是在 Steam 又买了一份。

为了让 Epic 游戏能正常联网,可以将 Heroic 启动器本体添加到 Steam,在 Steam 的游戏模式中启动 Heroic,再在启动器里启动游戏。这样虽然可以解决游戏无法联网的问题,但这样无法为每个游戏设定专属的 TDP 预设。另外由于 Steam 游戏模式下 Gamescope 的特性,在 Heroic 启动器中为游戏配置启动项时,会使下拉菜单不可用。Heroic 虽然也支持手柄操作,但操作逻辑实在有点反人类,你永远不知道按方向键是选择下一个选项还是直接回到上一级菜单。所以大部分时候安装与配置游戏还是需要回到桌面模式,在游戏模式下,稍微复杂点的操作都会让人血压飙升。

接下来要提的是 Lutris 和 NonSteamLaunchers,为什么把这两个放在一起说呢,因为这两个工具运行 Epic 平台的游戏实现原理都差不多,就是通过兼容层安装并启动官方 Windows 版的 Epic 游戏启动器,免去了命令行运行 Wine 繁琐的步骤,全程下一步确定就好。

Lutris 是一个相对比较老牌的工具,除了支持安装并登陆很多平台的游戏启动器外,其官方网站上还有很多社区维护的游戏安装脚本,可以说是在 Linux 下仅次于 Steam 的第二大游戏社区了。不过也正因为这样,Lutris 并没有专门为 SteamOS 进行适配,大部分游戏安装与配置都需要在桌面模式完成,其基于 GTK 的软件界面也有些老旧,操作也有些不太直观。

打开网易新闻 查看更多图片

NonSteamLaunchers 是一个专门为 SteamOS 适配的第三方游戏工具,它实质上只是一个脚本用来启动并运行第三方游戏平台,还能自动添加到 Steam 中,开发者还提供了一个 Decky 插件,目前需要切换到 Decky Loader 测试版商店才可以安装,实现了不用切换到桌面模式就可以游玩到第三方平台的游戏。

打开网易新闻 查看更多图片

Lutris 和 NonSteamLaunchers 都是通过兼容层运行的 Windows 版启动器,正是因为这样,无法像 Heroic 那样为不同游戏指定不同的兼容层与启动选项,这也是它们的缺点之一吧。

最近我又发现了一个工具 Junk Store,这是一个 Decky 插件,目前只支持 Epic 平台,和 Heroic 一样是基于 Legendary 实现的,在体验上我认为它是这几个工具里面最好的了,安装好插件后,按照提示安装依赖和反作弊运行时,登陆账号就可以直接使用了,全程不需要切换到桌面模式,游戏管理也媲美原生 SteamOS 的体验。甚至在 Heroic 上一些需要额外配置的游戏,比如《糖豆人》,在 Junk Store 上直接下载无需配置就能运行。

打开网易新闻 查看更多图片

但是它在功能上有些缺失,Epic 平台的云存档功能目前还不支持,对于其他平台的支持目前也在开发中,目前可以通过赞助作者的 Patreon 来获得支持 GOG 平台的测试版。在作者最新的博客中提到他们打算休息两周,在这两周时间里不会有新代码提交,也不会提供任何支持,但对与已经赞助过的用户依旧会提供支持。

Wine 与 Proton

在 Linux 下运行 Windows 游戏,兼容层是必须的,Proton 是 Valve 开发的 Windows 兼容层,它实质上是基于的 Wine,并打包了 dxvk、vkd3d 等游戏必备组件,所以理论上使用 Wine 配合 dxvk 也可以正常运行大多数游戏,但是原版的 Wine 并没有对游戏进行优化,可能会导致一些运行问题。这就不得不提 Wine-GE 与 Proton-GE 了,这是 GloriousEggroll 针对游戏优化并构建的 Wine 与 Proton,也是除了官方的 Wine 与 Proton 之外被用的最多的兼容层了。

至于到底要选什么兼容层,我个人有一套经验。如果是 Steam 平台的游戏,直接默认就可以正常运行游戏的话,那就不用关心,因为默认的兼容层就可以正常运行了,而如果遇到了一些问题,可以先在游戏属性中尝试将兼容层切换到 Proton Experimental,而如果 Proton Experimental 依然存在问题,最后再尝试 Proton-GE,另外也可以尝试多切换几个不同版本的 Proton,因为有些老游戏用比较老版本的兼容层可能运行会更好。

而如果是非 Steam 游戏,比如在 Heroic 里面运行 Epic 游戏,不太推荐使用原版的 Proton,因为用原版 Proton 运行非 Steam 游戏无法获取到对开发者有用的排错日志,比较推荐优先使用 Wine-GE 与 Proton-GE,而在这两者中,更推荐先尝试 Wine-GE,存在问题就换到 Proton-GE,实在不行再尝试用原版 Proton。另外需要注意,Wine 与 Proton 默认处理 Prefix 的路径不同,如果游戏兼容层从 Wine 切换到 Proton,或是从 Proton 切换到 Wine,游戏数据可能会不互通。

使用兼容层难免会造成一些性能损失,但是按照我的经验,虽然兼容层存在性能损失,但 Windows 系统后台的额外开销又弥补了这一部分,所以大部分情况同款游戏在 Linux 与 Windows 下性能表现相差不大。一个不太严谨的对比,笔吧评测室在对 ROG 掌机的评测视频中,Windows 环境下,运行《古墓丽影暗影》自带的性能测试,30W TDP,1080P 高画质预设,平均帧率 41,而我在 Linux 下,用 Proton Experimental 兼容层运行,同样的画质与 TDP 设定,平均帧率也是 41。这个游戏是有原生 Linux 版本的,在 Linux 版本下,同样的测试,平均帧率有 42,好一点,但不多。

打开网易新闻 查看更多图片

另外我还听说一些微软第一方游戏在 Linux 下性能会差一点,这个我无从查证,但是前两天我在玩《极限竞速地平线 5》的时候卡出一个 BUG,车辆穿进地形里面了,甚至还一直往下掉,可能这确实是来自竞争对手的恶意吧。

另外如果一个游戏有原生 Linux 版本,我个人也更倾向于用兼容层运行 Windows 版本,因为一些游戏开发商虽然会为 Linux 做原生适配,但对后期维护并不上心,导致实际体验不如 Windows 版本。

上文提到的《古墓丽影暗影》,虽然其 Linux 版本性能稍好,但少了一些画质选项,甚至不能调整窗口和全屏,手柄控制也有些问题,我遇到过手柄抽风一直震动个不停,甚至退出游戏了还在震动。另外还有之前 Steam 免费送出的《地铁最后的曙光》,这个游戏有 Linux 版本,但我根本无法让它正常运行,只有用 Proton 运行 Windows 版本才能正常打开。还有一些老游戏,Linux 版本无法显示中文,用 Proton 运行就可以正常显示中文了。

不过 Steam 对兼容层的使用有一个颇为恼人的点,Wine 和 Proton 有一个概念叫 Prefix 路径,这个路径相当于正常 Windows 的 C 盘,一般在运行程序时为了防止冲突,会为每个程序指定一个不同的 Prefix 路径,但 Steam 对游戏的 Prefix 路径藏的非常深,在用户主目录下的 ~/.local/share/Steam/steamapps/compatdata,里面的一堆数字命名的文件夹就是游戏的 Prefix 路径了。这对于需要修改游戏文件的操作就很不友好,因为几乎无法分辨这一堆数字文件夹到底哪个是要找的路径。

我之前将游戏《死亡搁浅》升级到导演剪辑版时就遇到了这样的困扰,迁移存档时,因为两个游戏的 Prefix 路径不同,导演剪辑版是无法识别到原版的存档的,需要手动将原版 Prefix 路径中的游戏存档复制到导演剪辑版的 Prefix 路径中,面对这一堆数字组成的文件夹,我傻了眼。不过倒也不是没有解决方案,使用 Protontricks 这个软件,打开后会显示 Steam 目前安装了哪些游戏以及游戏对应的数字 id,这个 id 就和 Prefix 路径是一一对应的。

反作弊现状

前面所讲的内容几乎只针对于大多数单人游戏或是不需要反作弊系统的游戏,一个原因是我个人其实几乎不玩多人游戏,另一个原因是 Linux 下的反作弊支持确实需要单独拿出来讲一下。作为测试我在 Epic 平台安装了糖豆人,在 Heroic 上虽然需要一些额外配置,但最终还是可以正常启动,没有弹出反作弊警告,不过不知是不是因为我没有开加速器,始终连接不上服务器。

在 Linux 平台下可以正常使用的反作弊系统据我所知有 Easy Anti-Cheat、BattlEye 还有 V 社自家的 VAC,当然前提是游戏开发商愿意为它们做适配,而现实情况是,大部分的多人游戏在 Linux 下的反作弊支持有些一言难尽。

Are We Anti-Cheat Yet? 这个网站收录了一个多人游戏列表,并对它们在 Linux 下对反作弊支持的情况做了兼容性评级。根据这个网站的数据,在他们收录的 380 款游戏中,目前有 160 款是已知可以完美支持反作弊的,有 46 款在进行一些配置后也可以让反作弊系统正常运行,只有 3 款游戏开发商表示在未来会对 Linux 做适配;在这之外,有 143 款游戏是已知由于反作弊系统而完全无法在 Linux 上运行,甚至还有 28 款游戏的开发商明确表示拒绝适配 Linux。这个列表中有将近一半的游戏无法支持 Linux 反作弊系统,这个现状还是相当让人失望的。

手柄外设支持

Linux 系统的外设支持一直都挺一言难尽的,因为大多数外设厂商几乎不会为 Linux 开发驱动软件,外设支持只能靠逆向工程和开源驱动,不过在 V 社的努力下,Steam 的游戏手柄支持还是很不错的。

我的 ROG Ally 掌机在默认情况下,一套 Xbox 布局的按键会被识别为一个 Xbox 360 手柄,大部分功能也可以正常工作,但正面额外两个按键,背面两个背键,还有陀螺仪是无法正常使用的,不过我用的 Bazzite 系统预装了 Handheld Daemon 这个软件,可以将手柄按键、额外按键以及陀螺仪合并模拟成一个 Dualsense 手柄,左面按键被映射成 Playstation 按键,和 Steam Deck 左边的 Steam 键和 Xbox 手柄中间的西瓜键功能一样,右面按键被映射成快捷菜单按键,两个背键被模拟成 Dualsense 手柄的左右触摸板按压,陀螺仪可以正常使用,甚至两个 RGB 圆环也被模拟成了 Dualsense 手柄的 RGB 灯带,可以说这个手柄支持已经近乎完美了。另外值得一提的一点是,ROG 掌机左面的额外按键在硬件上就不支持长按,所以一些需要长按的操作会不支持,Handheld Daemon 提供了一个选项可以让正面两个额外按键与 select、start 键上下互换,从而变相支持了长按操作。

在这之外,我还买了一个 Xbox Seres X 手柄,在到货前我还专门看了下 xone 与 xpadneo 的文档,担心手柄会在 Linux 下支持不好,不过到货后我发现所有功能都可以开箱即用,在有线、接收器与蓝牙模式都可以完美识别,正面的截图按键与下面的耳机孔都可以使用,对于支持扳机震动的游戏,在禁用 Steam Input 后,也可以正常识别并使用扳机震动。我唯一遇到的问题,就是有时 Bazzite 系统更新并首次重启后,一些禁用了 Steam Input 的游戏会无法识别到 Xbox Series X 手柄,启用了 Steam Input 后就可以正常识别了,关机并长按开机键 10 秒,再次开机后就没问题了,不知道是 Bazzite 的问题还是手柄的问题。

在理论上,其他御三家的第一方手柄,比如 Dualsense 和 Switch Pro 手柄,应该也是可以完美支持的,我在网上也看到过有人用这些手柄在 Linux 上打游戏,但对于其他的第三方手柄,在 Linux 下的支持效果那就是未知数了,可能一些基本功能可以用,需要厂商驱动软件来配置的功能就有点难搞了。

另外,Steam Input 的功能十分强大,除了正常的手柄操作以及将手柄映射为键鼠以外,还支持很多高级操作,比如自定义按键层级,自定义虚拟菜单等等,这个视频对 Steam Input 的高级功能做了一些简单介绍,至于能靠这些功能实现什么操作,就靠自己的摸索和想象力了。

后记

回到标题的问题,真的会有人用 Linux 打游戏吗?答案可能会比较复杂了,Linux 游戏支持已经很好,但对多数人来说还不够好,Steam 的硬件调查中 Linux 系统的占比只有可怜的百分之二,这还是在 Steam Deck 大获成功的影响下。所以,真的会有人用 Linux 打游戏,但用 Linux 打游戏的人,可能大多是像我这样没有朋友的偏执狂,我相信,任何一个正常的普通人,都不会考虑用 Linux 打游戏,甚至可能都不会知道 Linux 是什么,可如果有人真的看到了这里,大概他也是和我一样偏执的同道中人吧。

https://sspai.com/post/89743?utm_source=wechat&utm_medium=social

作者:so1ar

责编:张奕源Nick