Steam

来自 ArchWiki

Steam 是 Valve 提供的流行游戏发行平台。

注意: Linux 版 Steam 仅支持 Ubuntu LTS。[1] 因此,请勿向 Valve 寻求在 Arch Linux 上使用 Steam 时出现问题的支持。

安装

启用 multilib 仓库并安装 steam 软件包(推荐),或者选择 steam-native-runtime 软件包,以便使用原生系统库运行 Steam。参见 /故障排除#Steam 运行时

注意: 如果您是首次安装,可能会提示您安装 32 位 Vulkan 驱动程序包。默认情况下,pacman 按字母顺序选择 lib32-amdvlk,如果您为不同的 GPU 供应商意外安装了它,或者在 AMD GPU 上启动游戏时未与 amdvlk 一起安装,则可能会导致无法使用 Vulkan 等问题。请参阅 Vulkan#安装 以选择适合您 GPU 的驱动程序。

为了在 Arch Linux 上运行 Steam

SteamCMD

安装 steamcmdAUR 以获得 Steam 的命令行版本

目录结构

默认的 Steam 安装位置是 ~/.local/share/Steam。如果 Steam 找不到它,它将提示您重新安装或选择新位置。本文使用 ~/.steam/root 符号链接来引用安装位置。

库文件夹

每个 Steam 应用程序都有一个唯一的 AppID,您可以通过查看其 Steam 商店页面路径或访问 SteamDB 来找到它。

Steam 将游戏安装到 LIBRARY/steamapps/common/ 下的目录中。LIBRARY 通常是 ~/.steam/root,但您也可以拥有多个库文件夹(Steam > 设置 > 存储 > (+) 添加驱动器)。

为了让 Steam 识别游戏,它需要在 LIBRARY/steamapps/ 中有一个 appmanifest_AppId.acf 文件。appmanifest 文件使用 KeyValues 格式,其 installdir 属性确定游戏目录名称。

注意: 为了向通过 flathub 安装的 Steam 安装添加额外的驱动器,用户必须首先通过诸如 flatsealAUR 之类的工具手动授权 Steam 客户端访问附加驱动器的挂载点。

用法

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

有关可用的命令行选项,请参阅 Valve Developer Wiki 上的命令行选项文章

Steam 也接受可选的 Steam URL,请参阅 Steam 浏览器协议

启动选项

当您启动 Steam 游戏时,Steam 会使用 /bin/sh 执行其启动命令。为了让您更改启动命令,Steam 提供了启动选项,可以通过在库中右键单击游戏,选择属性并单击设置启动选项来为游戏设置启动选项。

默认情况下,Steam 只是将您的选项字符串附加到启动命令。要设置环境变量或将启动命令作为参数传递给另一个命令,您可以使用 %command% 替换。

示例

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

技巧与窍门

启动时最小化

可以让 Steam 启动时最小化到系统托盘,而不是获取焦点。将 -silent 添加到命令行参数列表中;请参阅 桌面条目#修改桌面文件 以了解如何默认执行此操作。

小尺寸模式

Steam 支持另一种最小化的 UI,仅包含您的游戏列表 - 商店、社区和封面集视图被隐藏。您可以使用查看 > 小尺寸模式切换到它。要返回标准 UI,请选择查看 > 大尺寸模式

Proton Steam-Play

Valve 为 Steam Play 开发了一个基于 Wine 和名为 Proton 的附加组件的兼容性工具。它允许您启动许多 Windows 游戏(请参阅 兼容性列表)。

它是开源的,可在 GitHub 上获得。启用 Steam Play 后,Steam 将安装其自己的 Proton 版本。

需要在 Steam 客户端上启用 Proton:Steam > 设置 > 兼容性。您可以在该对话框中为 Valve 已列入白名单和未列入白名单的游戏启用 Steam Play。

如果开发者激活了 Easy Anti Cheat 集成,Proton 支持该集成,但 EAC 可能需要特定修补版本的 glibc:如果报告某个游戏可以工作,但在您的机器上无法工作,请尝试使用 Steam Flatpak,因为它带有修补过的 glibc。

强制使用 Proton

如果需要,要强制为游戏启用 Proton 或特定版本的 Proton,请右键单击游戏,单击属性 > 兼容性 > 强制使用特定的 Steam Play 兼容性工具,然后选择所需的版本。这样做也可以用于强制具有 Linux 端口的游戏使用 Windows 版本。

在 Steam 之外使用 Proton

您可以安装 proton-cachyosAUR,但需要额外的设置才能与 Steam 一起使用。请参阅 Proton GitHub 以获取有关 Steam 如何识别 Proton 安装的详细信息。

Steam Input

本文或本节已过时。

原因:此处提到的选项在 Steam 客户端中不再可用(在 Talk:Steam 中讨论)

当控制器在 Steam 运行时插入时,Steam 的默认行为是不管它,让游戏按原样使用它。内核公开了游戏手柄的 evdev 和 joystick 设备,游戏可以使用诸如 SDL2 之类的 API 使用它们,就像 Steam 不存在一样。

Steam Input 子系统提供了一个抽象层,允许更高级的功能,例如重新绑定按钮和轴、拥有特定于游戏的配置文件以及基于游戏内操作进行更高级别的按钮映射。Steam Input Configurator (SIC) 是实现此功能的系统部分。要为控制器启用 Steam Input,请转到Steam > 设置 > 控制器 > 通用控制器设置[2] 这将从 Big Picture 设置中打开一个菜单,您可以在其中启用与您的控制器对应的配置支持选项。

Steam Input 配置器

当为控制器启用 SIC 时,有几个不同的控制器设备

  • 虚拟 Steam Controller,供使用 Steam Input API 的游戏使用。所有重新绑定和特定于 Steam 的功能均可正常使用。
  • 代表模拟 Xbox 360 控制器的 evdev 设备,供不支持 Steam Input 的游戏使用。基本重新绑定有效。[3]
  • 原始控制器 evdev 设备,其输入通过 SIC 传递。重新绑定无效,但游戏应默认使用 360 控制器。
  • 上述两个设备的操纵杆模拟设备。

SIC 的行为取决于上下文

  • 当启动支持 Steam Input API 的游戏时,它以本机模式使用 SIC。游戏接收“操作”而不是原始输入来处理。
    • 这适用于在 Windows 上使用 Steam Input 的 Proton 中运行的游戏。
    • 即使理论上不需要,模拟的 360 控制器仍然存在。
    • 游戏可以选择同时支持 Steam Input 和传统的输入 API 库,这些库在底层会延迟到 evdev 和 joystick。当游戏在启用 Steam 和 SIC 控制器的情况下启动时,Steam Input 具有更高的优先级。
    • 游戏也可以选择支持 Steam Input。例如,在 Among Us 中,除非您运行 SIC,否则游戏手柄将无法工作。
  • 当启动不支持 Steam Input 的游戏时,它(不知不觉地)以传统模式使用 SIC。游戏从看起来像是 360 控制器的设备接收其预期的低级原始输入,但它们实际上是由 SIC 欺骗的,以模拟本机模式的所需行为。
    • 对于使用 evdev 或 joystick 的原生游戏以及通过 Proton 运行的使用 DirectInput 或 XInput 的 Windows 游戏都是如此。
  • 当启动既不支持 Steam Input 也不支持其他游戏手柄 API 的游戏时,SIC 可以激活一个配置文件,该配置文件模拟如下所述的游戏手柄支持。
  • 当 Big Picture 具有焦点时,当前的 Big Picture 配置文件生效,可通过Steam > 设置 > 控制器 > Big Picture 配置进行配置。
  • 当任何其他内容具有焦点时,当前的桌面配置文件生效,可通过Steam > 设置 > 控制器 > 桌面配置进行配置。
  • 当任何内容具有焦点时,可以通过Steam > 设置 > 控制器 > 指南按钮和弦配置配置其他全局绑定。

游戏会根据其游戏手柄支持的全面性进行评级。游戏中 Big Picture UI 中可以有三个图标之一:[4]

  • 完整的游戏手柄图标,表示游戏具有完整的控制器支持。即使游戏不使用 Steam Input API 也可以实现这一点;重点是可访问性,而与 API 无关。
  • 半填充的游戏手柄图标,表示游戏具有部分游戏手柄支持。即使游戏正在使用 Steam Input API,在 Team Fortress 2 等游戏中,某些部分仍然无法访问以保证此评级。
  • 键盘图标,表示游戏没有原生游戏手柄支持。

在游戏没有完整游戏手柄支持的情况下,SIC 会尝试填补空白。例如,在 Bloons Tower Defense 5 中,这是一款需要您指向和单击的游戏,Steam 将自动激活键盘 (WASD) 和鼠标配置文件,使您可以使用游戏手柄移动和单击。

推荐的 Steam Input 用法

总结一下这对用法意味着什么

  • 推荐在 Big Picture 设置中启用“配置支持”,以获得增强的游戏手柄支持,例如重新绑定到您喜欢的设置,或自动修复,例如任天堂风格的按钮重新映射或键盘/鼠标。
  • 对于某些游戏,如果它们不支持传统的游戏手柄 API,则必须启用此功能。
  • 默认情况下,如果您启用了此功能,则控制器将无法与非 Steam 游戏一起使用,因为 360 控制器优先于原始控制器设备,但默认桌面配置文件已禁用按钮。要解决此问题,您可以
    • 将您的桌面配置文件设置为游戏手柄模板。这将把输入传递给 360 控制器,使默认设备可用于其他程序。
    • 如果其他游戏支持,则让其他游戏使用原始设备。请注意,游戏将不会受益于任何 Steam Input 重新绑定。
    • 禁用控制器的整个功能,以便 Steam 完全不创建 360 控制器。请注意,Steam 游戏随后将不会受益于增强的游戏手柄支持。
    • 在使用其他游戏时关闭 Steam。

禁用 Steam Input

如果您希望完全禁用 Steam Input,请使用 -nojoy 参数启动 steam,并为每个游戏单独禁用 Steam Input,因为没有全局选项可以执行此操作。

HiDPI

请参阅 HiDPI#Steam

从显示管理器启动 Big Picture 模式

要从显示管理器启动 Big Picture 模式,使用 Gamescope 作为其合成器

/usr/share/wayland-sessions/steam-big-picture.desktop
[Desktop Entry]
Name=Steam Big Picture Mode
Comment=Start Steam in Big Picture Mode
Exec=/usr/bin/gamescope -e -- /usr/bin/steam -tenfoot
Type=Application
注意: -tenfoot 标志告诉 Steam 以 Big Picture 模式启动。

Steam 皮肤

注意: 新的 Steam UI 于 2023 年 6 月发布。未针对此新 UI 更新的皮肤将无效。

可以使用皮肤自定义 Steam 界面。请按照 此 Steam 指南 了解更多信息。

一些针对 2023 UI 更新的皮肤是

更改 Steam 通知位置

默认的 Steam 通知位置是右下角。

您可以通过更改以下位置的 Notifications.PanelPosition 来更改 Steam 通知位置

  • resource/styles/steam.styles 用于桌面通知,以及
  • resource/styles/gameoverlay.styles 用于游戏中通知

这两个文件都会在 Steam 启动时被覆盖,并且 steam.styles 仅在启动时读取。

注意: 某些游戏不遵守 gameoverlay.styles 中的设置,例如 XCOM: Enemy Unknown。

使用皮肤

您可以创建一个皮肤来更改通知位置以符合您的喜好。例如,要将位置更改为右上角

$ 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 Remote Play

注意: Steam 家庭流式传输 已成为 Steam Remote Play

Steam 具有对 远程畅玩的内置支持。

请参阅 此 Steam 社区指南,了解如何在 Linux 上设置无头流式传输服务器。

在使用 Proton 时与 Windows 共享游戏

如果您使用 Proton (Steam Play) 启动游戏,并且仍然出于某种原因保留 Windows 安装(例如,如果某些游戏在反作弊方面存在问题,或者您想与 Windows 进行比较测试),您可能希望将游戏存储在公共分区中,而不是为每个操作系统保留一份游戏副本。

要添加另一个库文件夹,请单击Steam > 设置 > 下载 > STEAM 库文件夹,然后单击 ⊕(加号)按钮。

有三种文件系统,Windows 和 Linux 都可以读/写。

NTFS

有关如何配置的更多信息,请参阅 https://github.com/ValveSoftware/Proton/wiki/Using-a-NTFS-disk-with-Linux-and-Windows。要从 NTFS 驱动器启动游戏,请按照 Steam/故障排除#NTFS 分区中的 Steam 库 中的步骤操作。

使用 ntfs 有缺点。着色器缓存文件夹经常会损坏。消息显示 ntfs3: sdb6 ino=1921f, steamapprun_pipeline_cache Looks like your dir is corrupt. 您无法从 Linux 修复它。您需要启动到 Windows 并使用 chkdsk 进行修复。

EXFAT

此 FS 的缺点是不区分大小写。您将收到这样的消息:SteamLibrary has both 'SteamApps' and 'steamapps' directories. This will cause problems. Please fix manually and only keep 'steamapps' 请参阅 issue #7665

在 exfat 上创建符号链接也很麻烦,因此您不能像 ntfs 方法那样使用符号链接 compatdata 的方法。

UDF

此文件系统可以毫无问题地使用。唯一要记住的是,Linux 尚不支持写入 udf 2.50+。因此,只需在 Gparded 中创建一个 udf 格式的分区,它将是 2.01。

更快的着色器预编译

在某些情况下,着色器预编译可能仅使用一个核心,但是用户可以覆盖此设置,例如使用 8 个核心

~/.steam/steam/steam_dev.cfg
unShaderBackgroundProcessingThreads 8

Proton 之外的兼容性层

还有 Proton/Wine 之外的兼容性工具。

  • Luxtorpeda — 使用原生 Linux 引擎运行游戏。
https://luxtorpeda-dev.github.io/ || luxtorpeda-gitAUR
  • Boxtron — 使用原生 Linux DOSBox 运行 DOS 游戏
https://github.com/dreamer/boxtron || boxtronAUR

您还可以使用 protonup-qtAUR 来管理它们

  1. 关闭 Steam
  2. 安装 protonup-qtAUR
  3. 打开 protonup-qt 并安装所需的工具
  4. 启动 Steam
  5. 游戏属性窗口中,选择强制使用特定的 Steam Play 兼容性工具,然后选择所需的工具。

禁用 HTTP2 以获得更快的下载速度

某些系统和配置似乎在 HTTP2 方面存在问题。禁用 HTTP2 可能会在这些配置上产生更快的下载速度。您可以使用控制台命令 @nClientDownloadEnableHTTP2PlatformLinux 0 或在 steam_dev.cfg 中设置它,如下所示

~/.steam/steam/steam_dev.cfg
@nClientDownloadEnableHTTP2PlatformLinux 0

使用独立显卡运行游戏

混合显卡笔记本电脑上,Steam 默认使用集成显卡运行游戏。请参阅 PRIME#PRIME GPU 卸载 以切换到功能更强大的独立显卡来运行特定游戏。

Flatpak

注意: 从 Flathub/Flatpak 安装 Steam 将修复客户端面临的许多问题,但从长远来看,将需要替代的、文档较少的故障排除形式。

也可以使用 FlatpakFlathubcom.valvesoftware.Steam 的形式安装 Steam。为当前用户安装它的最简单方法是使用 Flathub 仓库

$ 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 --user com.valvesoftware.Steam --filesystem=/path/to/directory

使用 Flatpak 启动 Steam 可能会警告您安装 steam-devices 软件包。此软件包当前不存在,但可以安装 game-devices-udevAUR 代替,请参阅 游戏手柄#设备权限

Flatpak 的亚洲字体问题

如果您在游戏中显示亚洲字体时遇到问题,那是因为 org.freedesktop.Platform 不包含它。首先尝试挂载您的本地字体 

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

如果这不起作用,请考虑使用此 hack:通过将字体文件直接复制到 org.freedesktop.Platform 的目录中来使字体可用,例如

/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/etc/fonts/conf.avail
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/etc/fonts/conf.d 
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/share/fonts

Steam Flatpak 启动(运行)问题

启动后,Steam 将尝试下载文件,您将看到一个进度条。如果崩溃,您可以尝试为 flatpak 软件包提供额外的权限

$ flatpak permission-set background background com.valvesoftware.Steam yes
$ flatpak run com.valvesoftware.Steam

对于控制权限的另一种方法,请安装 flatseal

减少显卡内存使用的 Steam 设置

这对于显存量小的显卡很有用。

制作 Steam 快捷方式的副本

$ cp /usr/share/applications/steam.desktop ~/.local/share/applications/steam_minimal.desktop

并更改快捷方式副本中的 Exec=Name= 部分

~/.local/share/applications/steam_minimal.desktop
Name=Steam Minimal (Runtime)
Exec=/usr/bin/steam-runtime -cef-disable-gpu-compositing -cef-disable-gpu steam://open/minigameslist %U

因此,当启动 Steam Minimal (Runtime) 快捷方式时,您将获得一个简朴的界面,该界面仍然足够实用,可以安装和运行游戏,而当启动标准 Steam (Runtime) 快捷方式时,您将获得功能齐全的客户端。

故障排除

请参阅 Steam/故障排除

参见