Skip to content

Latest commit

 

History

History
181 lines (106 loc) · 13.3 KB

File metadata and controls

181 lines (106 loc) · 13.3 KB

娱乐软件

网游网络加速

对于在 Linux 上玩网游,网络加速一直是一个难题,尤其是在玩一些外服网游的时候。这里提供一些思路来在 Linux 下对网游加速。

  • 一些机场会提供网游游戏节点,这些节点专门为游戏优化,限制流量并且提高倍率,一般可以得到较好的加速效果。在 Linux 中配合 透明代理,同时开启对 UDP 流量的代理加速,即可以得到优化网游网速的效果。
  • 一些中端或者高端的路由器,会内置一些市面上常见的网游加速器,如果你的路由器有这个功能,那可以直接使用路由器内置的加速器加速本机的网游流量。或者你也可以使用 openwrt 配合安装支持 openwrt 的加速器插件。不要使用网易 uu 路由器加速插件,它会错误的将 Linux PC 识别为安卓手机,根据它的逻辑,如果设备被识别为手机,那只能加速手游而不能加速 PC 游戏。目前,网易 uu 加速器已将 Linux PC 移出识别范围,如有需求,请使用其他品牌的路由器加速插件。
  • 在虚拟机或 wine 执行市面上常见的网游加速客户端,理论上也是可以起到加速效果的。但是目前来说执行起来较为复杂,理论上是可行的,未来可能会有更方便的工具出现。关于原理可以参考Wine 待研究课题:让 Windows 版网游加速器的虚拟网卡模式可在 Linux 下工作以及在 Linux 中通过虚拟机使用 Windows 版网游加速器

原生仓库游戏

Arch Linux 官方仓库和 AUR 中存在一些原生支持的游戏,列举如下

Steam

官方文档

一些字体和驱动已经在新手上路章节中配置完成。若有安装问题请自查。

此外,如果某些游戏启动或者游玩有问题,可以用终端使用steam命令启动 steam 客户端,并观察游戏崩溃时的终端报错。一般都是缺少某种依赖造成的,可以根据具体情况自行安装依赖。同时,archlinux 官方文档也提供了一个 查错页面,记录了一些游戏崩溃的解决方式。

安装 Steam专有

sudo pacman -S steam

steam 上的游戏可分为有 Linux 原生支持的,以及通过Steam Play游玩的两大类。Steam Play(Proton) 基于 Wine,可以让你在 Linux 上游玩只支持 Windows 平台的游戏。关于非 Linux 平台的游戏,通过 Steam Play 运行的可玩程度,可通过protondb这个网站进行查询。如果玩某个游戏出现问题,在这个网站里你也可以找到玩家发布的各个游戏的修正方式。有时最新版 Proton 可能存在问题,这时自行尝试其他版本即可。

另外,github 上还存在一些官方 Proton 的 fork 版本,如 Proton GE,可以支持一些额外的,官方暂不支持或支持不完善的游戏。使用方式也很简单,根据官方文档,下载 release 的压缩包到指定位置,重启 steam 后即可选择特定版本的 GE proton。

如有些游戏启动器启动不了,可以去游戏目录尝试直接执行游戏本体的可执行文件。

有问题还可以去 github 查询。如 V 社的 csgo 仓库

最近的 steam 官方的 proton 不能正确检测系统的 fsync,依然以 esync 模式启动游戏。更换 GE 版本的 proton 可以正确检测并使用 fsync 模式启动游戏。

游戏锁区解决办法:让你的 steam 处于一个国家的代理下,如日本。先随便加一个游戏到购物车,在购物车右上角国家地区改成日本,再去访问已锁区的游戏,就可以浏览购买了。

Lutris

Lutris 基于 Wine,提供了大量游戏在 Linux 下的解决方案。其为你已经配置好了 Wine 相关的一切配置,你只需要安装游玩即可。一般极少需要额外配置。进入 官网 在右上角搜索你想玩的游戏。点击进入游戏页面后,可以看到在相应版本右侧有一个 install 按钮,点击后即可拉起 Lurtis 进行安装。玩游戏前要先装好 驱动依赖。注意,此两个文档中没有列出 vkd3d 与 lib32-vkd3d 两个可选安装项,然而目前大多数大型游戏均需安装此两个包,读者需按需添加安装。同时在 lutris 中,需要根据容器种类选择开启 Esync 或 Fsync。

在 Lutris 的各个游戏页面,一般有玩家上传的报告,如你遇到不能运行的状况,可以详细翻阅一下历史 Issue,包括已经标记为已解决的。

如果你发现还是无法登陆某些游戏,检查你的代理设置。比如你是国服的帐号,但是代理挂的是日本的,那是无法登陆的,可以换一个香港的代理再尝试。

如果无法更新游戏,在需要更新游戏的时候,将 Wine 版本设置为系统的 Wine staging 版本,如果最新的 wine-staging 版本仍然闪退,可以退回到以前可用的容器版本。如果依旧无法更新,可以尝试重新安装游戏启动器。在更新完毕后,需要启动游戏时,再将 wine 版本设置为 Lutris 自带的版本。

如遇到无法启动闪退的情况,可以尝试在命令行启动 Lutris,再启动游戏即可,玄学、不知道原因。如果启动器中启动游戏还是闪退,可以尝试把 Lutris 容器的启动文件从启动器改到游戏本体的可执行文件。还有另一个更通用的方式,可以使用 Lutris 的功能 Run EXE inside wine prefix,然后选择游戏本体就可以通过验证玩游戏了。Run EXE inside wine prefix 的位置在 Lutris 下方,点击小酒杯,最后一个。

如果习惯使用各类游戏插件,也可以安装在同一个容器里,一般功能是可以正常使用的。

原生 Wine

安装使用原生 Wine 也可运行 windows 游戏,但是很多情况下需要你自行处理 Windows 下的依赖问题,常用的工具是 winetricks。这种方式费时费力,只运行无需处理依赖的小游戏或者 gal 还好。

终端运行 winecfg,可以开启 wine 设置页面,按照终端提示可以安装缺少的包。

Galgame

本小节对 Wine 运行 Galgame 可能存在的问题进行描述。

如果存在某些语言的字体问题,最直接的方法是将所需要的字体放置于容器的字体目录中。wine 的默认目录为~/.wine

使用 Wine 运行游戏可能会出现 GStreamer 插件缺失的问题,如

Missing decoder: Advanced Streaming Format (ASF) (video/x-ms-asf)

在按照 Wiki 安装好各个插件后,错误可能依然存在,这是因为大多 Galgame 需要 32 位兼容库,而目前 arch linux 官方 Multilib 仓库中的 gst32 位兼容库并不完整,如目前缺失lib32-gst-plugins-ugly这个包,此包目前只存在于 AUR 中,但是目前其 PKGBUILD 存在诸多问题导致无法直接安装成功。ASF 存在于此包中,因此缺失导致此报错。解决方式如下:

首先,lib32-gst-plugins-ugly的依赖之一lib32-lv2存在构建拼写检查问题。将lib32-lv2仓库 clone 到本地后,修改其 PKGBUILD 文件,将其中的 check 部分删除,然后使用makepkg -si手动安装即可。

接下来,lib32-gst-plugins-ugly依赖了另一个包lib32-shaderc,这个包的构建同样存在错误,并且它并不是必要的,所以直接在lib32-gst-plugins-ugly的 PKGBUILD 中将其删除,然后手动安装即可。

最后,通过 ldd 命令查询,目前lib32-gst-plugins-ugly中的 libgstlibav.so 所使用的 libvpx.so.8 无法找到,原因是因为目前lib32-libvpx包中的 libvpx.so 已经更新为 libvpx.so.9。由此在/usr/lib32 文件夹中创建指向 libvpx.so.9.0.0 的名为 libvpx.so.8 的符号链接即可解决。后续由于版本不匹配的类似问题均可依次类比解决。

Ref:

性能提升

关闭 KDE 的合成器(Compositor)能显著提升游戏性能,解决画面撕裂不稳定等问题。

ref: https://linux-gaming.kwindu.eu/index.php?title=Improving_performance

在进行某些游戏时,如《Total War: THREE KINGDOMS》,如遇到性能问题,可尝试调节 cpu 频率调节器[1]

GameMode 是一款综合性的游戏性能调整软件,其提供了多种游戏性能优化功能。如有需要可以查询 github 页面查看详情。

性能监控

和微星的 Afterburner 软件中性能显示的部分类似,Linux 上也有一款同类软件可以监控游戏中的电脑性能,名为MangoHud。使用方式可参见此项目的 readme。在 ArchLinux 中,安装包 mangohud 以及 lib32-mangohud。

此外,MangoHud 官方提供图形化的参数设置软件 GOverlay,可以自行选择安装。

可选内核更换

一般来说,采用了 fsync 的 patch 的内核游戏性能会更好。尤其在一些采用.Net 的 wine 游戏中,fsync 会有明显的性能提升[1]。目前 Linux 内核并没有加入 fsync 功能,可以更换 zen 内核。

sudo pacman -S linux-zen linux-zen-headers

安装完毕后重新更新一下 grub 即可。

sudo grub-mkconfig -o /boot/grub/grub.cfg

如果你使用英伟达显卡,记得更换驱动为相应的 dkms 版本。一般来说较新的显卡安装 nvidia-dkms 即可。

游戏手柄

在 Arch Linux 中兼容性最好的手柄是 Xbox 手柄,其余手柄不建议使用。如果你使用无线适配器连接,安装使用xone。如果你使用蓝牙连接,安装使用xpadneo。对于蓝牙连接,需要进行额外配置。

  1. 首先需要启用 UserspaceHID,如果不这样做,手柄将无法正常连接,并开始循环连接和断开连接,并且 Xbox 按钮将不断闪烁。编辑配置文件:
vim /etc/bluetooth/input.conf

去掉UserspaceHID的注释并将值改为 true。

  1. 接下来在主蓝牙配置文件中进行一些设置,以便 xpadneo 能够按预期工作,还需要解决输入延迟问题。编辑主文件:
vim /etc/bluetooth/main.conf

将以下参数改为以下值

[General]
Privacy = device
JustWorksRepairing = always
Class = 0x000100
FastConnectable = true

[LE]
MinConnectionInterval=7
MaxConnectionInterval=9
ConnectionLatency=0

最后重启电脑,进行连接即可。

ref: https://www.reddit.com/r/linux_gaming/comments/smxqm2/how_to_use_xpadneo_with_an_xbox_series_controller/

Gamescope

Gamescope 是 Valve 支持的专门针对游戏开发的独立合成器,其可以解决一些游戏的显示问题,如部分游戏在开启虚拟桌面时,虽然能全屏窗口化,但是依旧不能达到全屏展开的程度(依旧是原来游戏的低分辨率)。Gamescope 可在 lutris 中配合使用。目前 Gamescope 仍处于早期阶段。

注意英伟达显卡使用 Gamescope 必须使用英伟达闭源驱动,nvidia-open 开源驱动不受支持。除此之外必须添加内核参数nvidia-drm.modeset=1

Gamescope 的前任是 Xephyr,现已处于停滞状态。

详情查阅 Gamescope 文档:https://wiki.archlinux.org/title/Gamescope

protonhax

有时,需要在 Proton 容器中运行游戏以外的其他程序,如修改器等。目前 Proton 默认无法满足此需求。这里使用 protonhax 来完成在与游戏同一 Proton 容器这种运行其他程序。

yay -S protonhax

在游戏运行参数中设置protonhax init %COMMAND%,随后执行protonhax ls获取正在运行的游戏 appid。最后使用 protonhax run <appid> <path/to/program>在目标容器中运行其他程序。更多用法可参考项目仓库页面。

Ref: https://www.reddit.com/r/linux_gaming/comments/pxs5es/running_a_second_program_inside_a_proton_prefix/?rdt=44318