Steam (简体中文)

From ArchWiki
翻译状态:本文是 Steam翻译。上次翻译日期:2022-04-19。如果英文版本有所更改,则您可以帮助同步翻译。

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

注意: 对于 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 --user 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 的页面路径或在 SteamDB 中来找到它。

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 公司的 fsync 补丁为使用Proton或Wine运行的大型应用改进了性能。此补丁自Linux内核5.16版本以来,已经合并到了 vanilla 内核,只需使用最新的 Proton 或修改版 Wine 构建即可。若想使用支持fsync的早期的内核版本:

Proton Steam-Play

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

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

Proton 需要在 Steam 客户端启用:Steam > 设置 > Steam Play。你可以为了上述那些没有被 Valve 公司列入白名单的游戏启用 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 共用游戏

如果使用 Proton(Steam Play)启动游戏,并且由于某些原因仍然保留在Windows上安装的版本(例如某些游戏的反作弊系统有问题,或是要与Windows对比测试),那么可能会想把游戏存储在同一个分区里,而不是每个操作系统里分别保留一个游戏副本。关于如何配置,详见 https://github.com/ValveSoftware/Proton/wiki/Using-a-NTFS-disk-with-Linux-and-Windows

若要在Steam的游戏库中添加其它文件夹,选择 Steam → 设置 → 下载 → STEAM 库文件夹,然后点击加号添加库文件夹。

疑难解答

参见 Steam/Troubleshooting.

另见