[TIL] 如何用 linux 玩游戏

最近很想买个 Steam Deck 感受一下 linux 下的游戏体验,无奈老婆不批经费,就想试试能不能用家里的老 mac 装 linux 玩一下。

系统

设备: Macbook Pro Retina Late 2013 13 寸
系统:ubuntu 22.10

  • 选 ubuntu 的原因是 steam for linux 说官方目前只支持 ubuntu LTS 版本(22.04)
  • 选 22.10 的原因是 22.04 的依赖装起来有不少小问题,后面升级的 22.10

(踩过坑后的)推荐步骤

  1. 安装系统,处理一些鸡毛蒜皮的驱动问题、系统小 bug
  2. 安装 lutris,会自动帮你安装很多依赖
  3. 安装 ProtonUp,用它给 lutris 安装其他的兼容层版本,默认 wine 有问题的情况下可以多换几个试试,小白建议无脑全装上,有问题一个一个换。
  4. 搞几个想体验的游戏,在 lutris 中添加好,就可以启动试试了

效果如何

试验了将近十款游戏,都是很轻量的,一款 3d。

少数需要折腾一些,最终都运行起来了,体验属于可以正常游玩的程度。

个人感受是超出预期的,对 Steam Deck 的实际表现更加期待了。

名词解释

折腾过程中读者可能会遇到大量新概念,这里对我觉得比较关键的概念做简单解释:

  • directx、opengl、vulkan、metal

    • 都是图形 API,同一类东西
    • directx 是 windows 下的
    • metal 是苹果的
    • opengl 跨平台
    • vulkan 比较新
  • dxvk、wined3d

    • dxvk 是指 DirectX VulKan,将 directx 的指令翻译成 vulkan 的,做到本不支持的 directx 上的游戏可以运行在 vulkan API 上
    • wined3d 同理,是把 directx 翻译成 opengl,是 wine 内建的方案。优势是兼容性好。但现在基本全是用 dxvk
  • wine

    • 作用是在 POSIX 兼容系统中运行 Windows 应用
    • 不是虚拟机/模拟器,它的名字的由来就说了这点 “Wine Is Not an Emulator”
    • 原理也是翻译,把 Windows API 翻译成 POSIX。相对虚拟机来说的优势是性能很高,可以认为是原生性能在 linux 上跑 windows 应用
  • wineprefix

    • 使用 wine 运行 windows 应用的环境。不同的应用需要不同的环境,比如应用分 32/64 位。有些游戏需要特定版本的依赖,高了/低了就崩溃,但另一个又需要另一个版本,两边就冲突了。为了两个游戏都能正常正常运行,可以让它们在两个相互独立的环境中运行,各自用各自的依赖、配置,换不同的 wineprefix 就可以实现。
  • lutris

    • 开源的游戏库管理工具,可以添加 steam、gog、epic、本地等各种来源的游戏,统一管理、查看、启动
  • mangohud

    • 游戏中可以查看 cpu gpu 内存 fps 等信息的仪表盘

Q&A

  • 可以不用 lutris,直接执行 exe 么

    • 可以,另外单独装 wine,然后 wine xxx.exe 即可
  • WINEARCH 建议用什么

    • 建议 64(默认也是 64),因为 64 既可以跑 64 位应用,也可以跑 32 位。实在出问题跑不动再明确换成 32
  • WINEPREFIX 建议搞几个

    • 网上看到有人每款游戏一个 prefix,有点过了。。建议默认一个 prefix 即可,有游戏需要独立 prefix 的再单独开
  • 建议普通玩家尝试这个方案么

    • 不建议,别想不开。没有技术背景的普通用户推荐步骤的第一步可能都走不通
  • nvidia、amd GPU 遇到问题咋办

    • 没试过,我是 intel 的板载 gpu,不是正经要用这个方案玩游戏,纯粹体验一下而已
  • lutris 安装依赖的时候出问题了

    • 具体问题千变万化,自行搜索解决
  • wine 日志里有一堆 fixme,需要关注么

    • 可以忽略,有问题的时候只看 err 即可,fixme 可以理解成写给开发者看的
  • 日志有个 MESA-INTEL: warning: Haswell Vulkan support is incomplete 什么意思

    • 我的设备是 intel haswell 显卡,设备太老了驱动中对 vulkan api 的支持不完整。不是说完全不能用,只是提醒你大概率踩坑
    • 实际使用中其实没有遇到什么问题,估计是因为我体验的游戏本身也都是老古董
  • 我想玩的游戏启动不了怎么办?

    • 1 换兼容层,再试,不行再换,换完都不行继续步骤 2
    • 2 查看日志,找到错误
    • 3 搜索错误信息,找解决方案
    • 个人体验下来问题最少的兼容层是 Proton GE
    • 有些错误不一定是兼容层的问题,而是通过兼容层运行的应用的报错,所以如果查出来的解决方案和 wine 毫无关系也不要忽略。比如我测试的一款依赖了 chromium 的游戏,报的错搜索出来全是浏览器相关的,按指导加运行参数就正常了
  • 想看游戏的 fps

    • lutris 有这个选项,去游戏配置里找一下,叫做 mangohud fps 啥啥啥的
    • 可能只对部份游戏有用,不行就不看了呗,能不能玩顺不顺自己上手试试就知道了嘛
  • 窗口很小怎么办

    • 在 lutirs 的游戏配置里启用 DPI upscaling,调高 DPI
  • 调整完 DPI 没有变化怎么办

    • 你的游戏可能太老了,可以参考下面一条用“全屏显示”
  • 如何全屏显示所有游戏

    • lutris 有这个选项,去游戏配置里找一下,叫做 enable gamescope 啥啥啥的
    • 如果选项是灰的,就自行搜索先安装上 gamescope
    • 然后下面两个分辨率的框的填写格式是 1080x900 这样,具体含义自行搜索
    • 可能出现鼠标速度变快/慢/卡的情况,我没了解过怎么解决
  • 我只要一切换窗口游戏就会关闭怎么办

    • 同上,使用 gamescope 可以解决
  • 用 gamescope 全屏显示了,还能窗口化么

    • 可以,ctrl + alt + f 窗口化
  • 可以玩 steam 游戏么

    • 可以,ubuntu app store 搜索 steam beta 安装即可,装起来比 lutris 方便多了
    • 装完后,可以使用 ProtonUp 装额外的兼容层
  • 可以用 FSR 么

    • 可以,lutris 默认开启 FSR,在全屏模式中调低分辨率即可

你可能感兴趣的:([TIL] 如何用 linux 玩游戏)