Steam (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Steam翻译。上次翻译日期:2021-04-08。如果英文版本有所更改,则您可以帮助同步翻译。

Steam 是维尔福公司推出的著名游戏分发平台。

注意: 对于 Linux 平台,Steam 只支持 Ubuntu 的长期支持版本[1]。 因此,请不要向维尔福(Valve)公司提交 issue 以获得 Steam 对 Arch Linux 的支持。

安装

启用 multilib 仓库并安装 steam 软件包。

你需要满足下列要求从而在 Arch Linux 上运行 Steam:

SteamCMD

安装 steamcmdAUR 以使用命令行版本的 Steam

可选 Flatpak 安装

Steam 也可以作为 com.valvesoftware.Steam 使用 FlatpakFlathub 中安装。使用 Flathub 仓库和 flatpak 命令行安装是目前最简单的安装方式:

 flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
 flatpak --user install flathub com.valvesoftware.Steam
 flatpak run com.valvesoftware.Steam

目前 Flatpak 应用还不支持主题。并且你不能通过 optirun/primusrun 来运行游戏,更多细节详见 Issue#869

默认情况下通过 Flatpak 安装的 Steam 不会有访问你的家目录的权限,并且由于安全问题,强行忽略此权限限制会导致 Steam 无法运行。不过,你可以自由地在家目录之外添加一个目录。如果你想添加一个外部库,你可以运行下面的命令来添加:

flatpak override com.valvesoftware.Steam --filesystem=/path/to/directory

Flatpak 的亚洲字体问题

如果你遇到了游戏中无法显示亚洲字体的问题,这是因为 org.freedesktop.Platform 并没有包含合适的字体文件进去。首先尝试挂载你的本地字体:

flatpak run --filesystem=~/.local/share/fonts --filesystem=~/.config/fontconfig  com.valvesoftware.Steam

如果上述命令不起作用,考虑动手 hack 一下:直接将字体文件复制进 org.freedesktop.Platform 的目录下以启用字体,例如

# replace ? with your version and hash
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/etc/fonts/conf.avail
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/etc/fonts/conf.d 
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/share/fonts

目录结构

Steam 的默认安装位置是 ~/.local/share/Steam。如果 Steam 无法找到该目录,它会引导你重新安装或选择一个新的安装位置。这篇文章使用 ~/.steam/root 符号链接来表示 Steam 的安装位置。

库文件夹

每一个 Steam 应用都有一个独一无二的应用 ID,你可以通过 Steam Store 页面来找到它。

Steam 将游戏安装到 LIBRARY/steamapps/common/ 目录下。库文件夹 LIBRARY 一般会是 ~/.steam/root,但是你依然可以选择拥有多个库文件夹如 (Steam > Settings > Downloads > Steam Library Folders)。

为了 Steam 能够正确识别游戏,它需要在 LIBRARY/steamapps/ 目录下找到 appmanifest_AppId.acf 文件。此清单文件使用了 KeyValues 格式,并且它的 installdir 的内容决定了游戏的目录名称。

用法

steam [ -options ] [ steam:// URL ]

对于可用的命令行选择,详见 Command Line Options article on the Valve Developer Wiki

Steam 也可以接受可选的 Steam URL,详见 Steam browser procotol

启动选项

当你运行一个 Steam 游戏时,Steam 会使用 Bash shell 执行它的 启动命令。 为了让你自由修改启动命令,Steam 提供了 启动选项启动选项可以通过右键点击你的游戏库中的游戏,选择属性后点击设置启动选项进行修改。

默认情况下 Steam 只是简单的把你设置的参数字符串添加到游戏的启动命令后。想要设置环境变量或者将一个启动命令作为参数传递给另一个命令,你可以使用 %command% 以表示原启动命令。

示例

  • 仅设置参数: -foo
  • 设置环境变量: FOO=bar BAZ=bar %command% -baz
  • 设置与默认完全不同的命令: othercommand # %command%

提示与技巧

最小化启动

在系统启动时,使 Steam 以最小化方式自启在系统托盘处是可以实现的,并且不会占据鼠标焦点。仅仅需要添加 -silent 到自启文件的参数列表中。

~/.config/autostart/steam.desktop
...
Exec=/usr/bin/steam -silent
...

Fsync 补丁

维尔福(Valve)公司 发布 了一个可以帮助提升大量多线程应用运行帧率的特殊内核补丁。这里有一些使用这个补丁的方法:

  • 直接使用维尔福(Valve)公司提供的二进制内核。详见 Unofficial user repositories#valveaur 并且一旦你添加了这个仓库,内核软件包 linux-fsynclinux-fsync-headers 便可使用。你也将可能需要将某些常用软件包 (例如 nvidia) 替换为 DKMS 软件包 (例如 nvidia-dkms)。
  • 安装 linux-zen 内核,其从 5.2 版本开始已包括 fsync 补丁。[2]
  • 安装 linux-pfAURlinux-pf-gitAUR 内核。

Proton Steam-Play

维尔福(Valve)公司开发了一个兼容性工具,用来使 Steam 可以在 Wine 和其他额外组件上运行。这使得你可以运行很多原本只能在 Windows 平台上运行的游戏 (详见 compatibility list)。

此工具开源并且可以从 Github 获得。Steam 将在 Steam Play 启用后安装它相适应的 Proton 版本。

Proton 需要在 Steam 客户端启用: Steam > 设置 > Steam Play。你可以为了上述那些没有被维尔福公司列入白名单的游戏启用 Steam Play。

如果需要的话,为了在启动游戏时强制启用 Proton 或者指定一个确定的 Proton 版本,在游戏处右击,点击 属性 > 常规 > 强制使用特定 Steam Play 兼容性工具,然后选择所需版本。这样做同样可以用来强制游戏生成一个 Linux 入口用以运行 Windows 版本的游戏。

你同样可以从 AUR 通过安装 protonAURproton-gitAUR 来安装 Proton,但是需要一些额外的配置才能使 Steam 良好运行。想要了解 Steam 如何识别已安装的 Proton 的更多细节,可以前往 Proton 的 Github 页面。

无窗口管理器的大屏幕模式

想要从 Display manager (简体中文) 运行 Steam 的大屏幕模式,你可以选择以下任意一个方案:

  • 安装 steamos-compositorAUR
  • 或者,安装 steamos-compositor-plusAUR,这可以隐藏 Proton 游戏启动时恼人的颜色闪烁,并修复游戏在后台运行的问题。
  • 手动添加一个 Steam 入口 (但是你会失去 Steam 的混合平台优势:主要体现在你不能在大屏幕模式下使用键盘或手柄控制):

创建一个 /usr/share/xsessions/steam-big-picture.desktop 文件,其中包含:

/usr/share/xsessions/steam-big-picture.desktop
[Desktop Entry]
Name=Steam Big Picture Mode
Comment=Start Steam in Big Picture Mode
Exec=/usr/bin/steam -bigpicture
TryExec=/usr/bin/steam
Icon=
Type=Application

Steam 皮肤

使用皮肤可以自定义 Steam 界面。皮肤可以被位于 ~/.steam/root 的界面定义文件所覆盖。

想要安装一个皮肤:

  1. 将皮肤的目录放于 ~/.steam/root/skins
  2. 按照 Steam > 设置 > 界面 依次点击并选择该皮肤。
  3. 重启 Steam。

你可以在 Steam 论坛 获得比较完备的皮肤列表。

注意: 使用一个过期的皮肤可能会引起一些可视化错误。

自创皮肤

几乎所有的 Steam 风格会定义在 ~/.steam/root/resource/styles/steam.styles (此文件超过 3,500 行)。对于一个可以被 Steam 识别的皮肤,它需要自己的 resource/styles/steam.styles 文件。 当一个 Steam 的更新改变了官方的 steam.styles 文件,你的皮肤可能会过期,会有造成可视化错误的潜在风险。

详见 ~/.steam/root/skins/skins_readme.txt 以获得如何创建皮肤的初步指引。

改变 Steam 的通知位置

默认情况下 Steam 的通知会在屏幕底端右侧出现。

你可以改变 Steam 通知出现的位置,通过更改 Notifications.PanelPosition 文件,具体位于

  • resource/styles/steam.styles 以调整桌面通知
  • resource/styles/gameoverlay.styles 以调整游戏中通知

以上两个文件都将在 Steam 启动时被覆写,且 steam.styles 只会在启动时被读取。

注意: 一些游戏并不遵守位于 gameoverlay.styles 里的设置。如《幽浮:未知敌人》。

使用一个皮肤

你可以创建一个皮肤去将通知位置改变成你想要的那样。比如你想要将位置设置成顶部右侧:

$ cd ~/.steam/root/skins
$ mkdir -p Top-Right/resource
$ cp -r ~/.steam/root/resource/styles Top-Right/resource
$ sed -i '/Notifications.PanelPosition/ s/"[A-Za-z]*"/"TopRight"/' Top-Right/resource/styles/*

实时更新

gameoverlay.styles 文件可以在 Steam 运行时更改,这允许你对不同游戏设置不同的通知位置。

~/.steam/notifpos.sh
sed -i "/Notifications.PanelPosition/ s/\"[A-Za-z]*\"/\"$1\"/" ~/.steam/root/resource/styles/gameoverlay.styles

由此 #启动选项 应该像下面这样:

~/.steam/notifpos.sh TopLeft && %command%

Steam 远程同乐

注意: Steam 家庭流媒体 已更新为 Steam 远程同乐

Steam 内置对于 远程同乐 的支持。

前往 Steam 社区指南 以了解如何在 Linux 上设置无头模式的流媒体服务。

Steam Controller

通常一个 Steam Controller 手柄需要使用 Steam 界面。不过在非 Steam 原生的 Linux 游戏中这种界面并不很实用。对此,当 Steam 客户端运行时,其会保持一个“桌面配置”。如果你有 Steam Controller 手柄,请在桌面配置中将其设置为通用 XBOX 控制器。只要 Steam 客户端在运行,你可以在其他游戏中使用 Steam Controller 手柄,例如 GOG 的游戏, 就像一个 XBOX 手柄。请确保在“常规手柄设置”已经选择了你的手柄类型。

使用 Proton/其他兼容层 与 Windows 共享游戏

多亏了维尔福(Valve)公司,使用 Proton 的游戏体验有所提升。你可以用自定义的分支如 Proton GE 或其他的分支来提升很多游戏的运行效果,并且你甚至可以在 NTFS 文件系统下创建一个 Steam 库,不过你需要注意现在登录的用户 uid 和 gid 有相关权限,否则 Steam 可能无法写入所需的文件;并且你也需要确保在你的 fstab 下不要有 noexec 选项,否则 Steam 无法扫描到你的游戏。

故障排除

参见 Steam/Troubleshooting.

另见