最近很想买个 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
(踩过坑后的)推荐步骤
- 安装系统,处理一些鸡毛蒜皮的驱动问题、系统小 bug
- 安装 lutris,会自动帮你安装很多依赖
- 安装 ProtonUp,用它给 lutris 安装其他的兼容层版本,默认 wine 有问题的情况下可以多换几个试试,小白建议无脑全装上,有问题一个一个换。
- 搞几个想体验的游戏,在 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
即可
- 可以,另外单独装 wine,然后
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,在全屏模式中调低分辨率即可
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。