在Ubuntu上打造娱乐终端
即便是在不久之前,Linux系统一般都认为是服务器和开发者的专属,但随着Valve的steam deck的成功,以及微软对开源的拥抱,Linux的桌面娱乐生态也迎来了前所未有的发展.现如今,Linux桌面娱乐生态已经足够丰富,足以满足大部分人的娱乐需求了.这篇文章我们将专注于在Ubuntu上打造娱乐终端这一话题.
Linux下的游戏生态
steam大家都知道,知名的游戏平台嘛.但在linux下steam是一个神奇的存在,某种程度上可以说是steam盘活了桌面linux的游戏生态都不过分.
steam最基本的能力当然是让玩家可以方便的打游戏,阀门社为了这个目标煞费苦心,他们的努力直接给linux平台大范围扩展了生态,以至于steam即便不打游戏都是linux上的必装软件.
linux的相关工具
在linux上使用steam,我们需要安装一些相关的工具,这些工具可以帮助我们更好的管理和使用steam.下面是一些推荐的软件
软件 | 渠道 | 说明 |
---|---|---|
steam | 官网下载 | 知名的pc游戏平台 |
ProtonUp-Qt | flathub | 为steam管理GE-Proton |
protontricks | flathub | 为Steam/Proton游戏以及其他常见Wine功能运行Winetricks命令 |
N卡安装steam的额外依赖
steam为了可以兼容老游戏,会要安装很多32位的依赖,如果你是n卡,直接安装steam它会给你报错
You are missing the following 32-bit libraries, and Steam may not run:
libc.so.6
要解决这个问题,我们需要先额外安装两个依赖
-
安装32位的
libc6
sudo apt install libc6:i386
-
安装
nvidia-driver
对应版本的32位驱动dpkg -l | grep nvidia-driver # 获取到驱动版本 比如575 sudo apt install libnvidia-gl-575:i386 #安装对应32位依赖
添加非steam应用
steam除了可以管理它自己平台上的软件,也可以自己给它添加软件由他启动
steam runtime
如果游戏也算应用的话steam在linux上可能是最大的应用分发渠道了.steam通过steam-linux-runtime支持原生linux应用.
而这个steam-linux-runtime
实际上就是一个通用的轻量级沙盒,包含了一个统一的库环境并用namespace与操作系统隔离.一些游戏开发相关的开源应用比如blender
,godot
,原生支持linux的游戏比如dota
也都可以使用这种方式运行.
由于这个环境也是用namespace做抽象的,所以性能损失也是有的,只是没那么多.
话虽如此,我个人还是不太推荐用steam
管理除游戏以外的linux原生应用的,一方面这种应用太少,另一方面这类应用都往往是对计算性能要求比较高的类型,白白损失性能还是太可惜了.
转译应用
其实很久之前就有一个开源项目wine致力于让linux和macos可以执行windows程序.起工作原理可以理解为将windows程序调用的各种系统依赖在linux/macos上重新实现一遍,然后让windows程序调用这些被转译的依赖以执行.这一套方案原理上逻辑上没啥问题,但一直以来支持并不好,主要原因是图形接口的转译跟不上.
- 一方面是厂商不开源,让转译工作难以进行,
- 另一方面是开源的工具(
opengl
这类)性能拉胯. - 最后就是项目是社区驱动的,没钱没资源,维护自然也跟不上
而就在最近几年转译应用忽然就迎来了春天,主要取决于两点
- 微软开始拥抱开源了,
- 阀门社开始做steam deck了.
总而言之,阀门社搞了个开源的转译层项目proton.这直接让linux下可以正常跑大部分windows平台的游戏,还顺便让其他windows软件也可以借助steam进行管理运行.
我们就以官网下载的原生版本的steam为基准,介绍转译应用.
使用steam安装proton
首先我们要先安装steam,由于steam本身是一个启动器,后需可能会有很多需要手动操作的部分,因此最好是原生安装方便手动调试.然后进入steam,进入库
,勾选工具
,找到proton
,一般装个最新版本就够用了.也可以多装一个proton experimental
备用,然后视游戏安装相关的反作弊运行时即可.
使用ProtonUp-Qt安装proton-ge
proton项目是开源的,除了steam官方的proton,自然也会有魔改proton.其中最知名的自然就是proton-ge,这个第三方的魔改proton
据说比官方版本效率更高些,而且兼容性会更好些,虽然也一样可能有兼容性问题.
proton-ge
官方给的安装方式还是比较麻烦的,我们可以使用ProtonUp-Qt来进行自动安装,只要打开后选择最新版本安装即可.需要注意steam必须是原生安装的,否则安装位置会不对了.
使用proton运行windows软件
即便是安装好proton
后,windows平台的软件也是不能直接下载了用的,我们需要选中已经购买好的游戏,点击右侧设置
(齿轮按钮)->属性
->兼容性
,选一个proton
版本强制指定兼容层.这样游戏就可以下载运行了.
至于能不能玩,这就得群策群力了,protondb是一个steam上游戏兼容性的数据网站,主要靠社区玩家提交报告来确定特定游戏的兼容性.我们可以先在其中查看
游戏帧数检测
我们看到很多评测视频里会有帧数(FPS)等指示用来观察游戏的流畅程度.在linux下也有,需要使用flightlessmango/MangoHud这个软件.
sudo apt install mangohud
安装完成后我们可以在steam中设置启动选项修改
为mangohud %command%
默认会在游戏界面的左上角给出cpu,gpu占用和帧数数据.我们可以在~/.config/MangoHud/MangoHud.conf
文件中对展示的内容进行自定义,具体有哪些参数可以看这张表.建议像我下面这样设置
cpu_temp
gpu_temp
ram
vram
position=top-left
linux下的音影娱乐
linux下的音影娱乐生态其实也挺丰富的,这里就不一一介绍了,只推荐几个我个人觉得不错的软件
小黄鸭(Lossless Scaling)伪双卡交火
Lossless Scaling
是steam上的一个小软件,它可以让我们在低分辨率下运行游戏,然后将画面放大到全屏显示,还可以进行插帧.如果我们刚好有两块显卡,那么就可以用这个软件让一块显卡专门负责游戏的渲染,另一块显卡专门负责桌面的插帧显示,这样就相当于双卡交火了.遗憾的是官方版本是windows限定,不过有个开源插件lsfg-vk,用它就可以在linux下使用这项伪双卡交火技术了.注意这个软件用到了Vulkan
,你得确保你的显卡驱动支持Vulkan
.
串流
用steam串流
说到串流可能大家想到的更多的是sunshine-moonlight的串流组合.但实际情况是在用N卡的情况下sunshine强无敌,而在用a卡尤其是apu的核显的情况下sunshine并不好用,尤其在linux下根本用不了.反而是steam link效果还不错.
用法也不复杂
- 接收端的机器安装
steam link
,苹果直接在app store里下,安卓则去官网下即可,之后打开它 - 发送端机器打开steam,在
steam->设置
中找到远程畅玩
,激活后配对流式应用
即可.如果你已经有配对好了的就需要先取消设备配对
然后再做配对 - 这时你接收端的机器会有个pin码,在发送端机器中将这个码填上就配对完成了.
steam串流非常吃网络,发送端一定要用有线的方式接入网络,接收端也尽量在网络覆盖范围内.网络稳定串流才能稳定
mycard
mycard很神奇的自带linux支持,这个平台主要是用来玩ygopro和东方的,
不想花钱买卡又想打游戏王的牌佬就可以在linux下很轻松的玩到ygopro2了.在linux下首页下载提供的是一个appimage
,下载下来后给个+x
权限人工集成下就能用了.
有如下注意事项:
- mycard下载游戏依赖
aria2c
,需要先安装aria2c
再安装mycard
- mycard解压游戏依赖
zstd
,需要先安装zstd
(sudo apt install zstd
)再安装mycard
- 游戏王只能使用
ygopro2
,因为ygopro
的依赖编译有问题,会缺少irrKlang
,而ygopro2
是unity开发,没有依赖问题 - 东方游戏都是window游戏,mycard仅能用作下载,运行需要借助steam的proton