跳转到内容

Steam

来自 Arch Linux 中文维基

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

注意:对于 Linux 平台,Steam 只支持最新的 Ubuntu 或 Ubuntu 的长期支持版本[1][2]。如果在 Arch Linux 上使用 Steam 遇到问题,请不要向 Valve 寻求支持。

安装

[编辑 | 编辑源代码]

启用 multilib 仓库并安装 steam 软件包(推荐),也可以安装 steam-native-runtime 以使用由原生系统库驱动的 Steam(通过 steam-native 启动),参阅/疑难解答#Steam runtime

注意:第一次安装时可能需要选择 32 位 Vulkan 驱动程序软件包。默认情况下,pacman 会按字母顺序选择 lib32-amdvlk,这可能会带来问题,例如:如果不小心为不同厂商的显卡安装了该驱动,会导致 Vulkan 无法使用;或者即使使用了 AMD 显卡,如果没有和 amdvlk 一起安装,也可能出问题。请参考 Vulkan#安装来选择适合显卡的正确驱动。

在 Arch Linux 上运行 Steam 需要满足以下需求:

SteamCMD

[编辑 | 编辑源代码]

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

目录结构

[编辑 | 编辑源代码]

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

库文件夹

[编辑 | 编辑源代码]

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

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

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

注意:为使从 flathub 安装的 Steam 能够添加另外的驱动器,用户必须授予 Steam 客户端访问该驱动器所在挂载点的权限,可以使用 flatsealAUR 等工具。

用法

[编辑 | 编辑源代码]
steam [ -options ] [ steam:// URL ]

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

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

启动选项

[编辑 | 编辑源代码]

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

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

示例

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

提示与技巧

[编辑 | 编辑源代码]

最小化启动

[编辑 | 编辑源代码]

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

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

小模式

[编辑 | 编辑源代码]

Steam 支持一个最小化的替代 UI,仅仅包含您的游戏列表——隐藏了商店、社区和封面合集视图均被隐藏。可通过查看 > 小模式切换到该模式,通过查看 > 大模式回到标准模式。

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 > 设置 > 兼容性。你可以为了上述那些没有被 Valve 公司列入白名单的游戏启用 Steam Play。

如果开发者激活,Proton 支持 Easy Anti Cheat 集成,但是 EAC 可能需要某个特定修补版本的 glibc:如果某个游戏据报告可以运行而在您的设备上却不行,请尝试使用 Steam Flatpak,因为其附带了修补的 glibc。另外,设置 procfs 挂载选项 hidepid 为一个加固值可能会导致 Easy Anti-Cheat 失败,并显示错误信息“Launch Error: 261”。

强制使用 Proton

[编辑 | 编辑源代码]

如果需要为某个游戏启用 Proton 或某特定版本的 Proton,右键该游戏,选择属性 > 兼容性 > 强制使用特定 Steam Play 兼容性工具,选择需要的版本。这种做法也可以强制使一个具有 Linux 接口的游戏运行 Windows 版本。

使用 Steam 外的 Proton

[编辑 | 编辑源代码]

您可以安装 proton-cachyosAUR,但是需要一些额外的配置才能在 Steam 上良好运行。想要了解 Steam 如何识别已安装的 Proton 的更多细节,请参阅 Proton GitHub

提示:archlinuxcn 源包含一个 protonCNRepo 软件包,不同于 proton-cachyosAUR,您也可以安装此软件包以节省时间。

Steam Input

[编辑 | 编辑源代码]

要启用控制器的 Steam Input 功能,请转到“Steam > 设置 > 控制器 > 外部手柄设置”。在这里,您会找到与您的控制器对应的“启用Steam Input”开关。

Steam Input Configurator

[编辑 | 编辑源代码]

此页面或章节适合移动到 Steam Input Configurator

附注: 没有理由在此处保留如此大的文本,它可以放在自己的文章中(在 Talk:Steam 讨论)

详见Steam Input Configurator以获取配置器使用说明。

当 SIC 为控制器启用时,会出现几个不同的控制器设备:

  • 虚拟 Steam 控制器,用于支持 Steam Input API 的游戏。所有重映射和 Steam 特定功能均可用。
  • 表示模拟 Xbox 360 控制器的 evdev 设备,用于不支持 Steam Input 的游戏。基本重映射生效。
  • 原始控制器 evdev 设备,其输入通过 SIC 传递。重映射未生效,但游戏应默认使用 360 控制器。
  • 上述两个设备的操纵杆模拟设备。

SIC 的行为取决于上下文:

  • 当启动支持 Steam Input API 的游戏时,SIC 使用原生模式。游戏接收“动作”而非原始输入。
    • 这适用于在 Proton 中运行且会在 Windows 上使用 Steam Input 的游戏。
    • 理论上不需要,但模拟的 360 控制器仍然存在。
    • 游戏可选择同时支持 Steam Input 和传统输入 API 库(底层使用 evdev 和操纵杆)。当游戏通过 Steam 启动且为控制器启用 SIC 时,Steam Input 优先级更高。
    • 游戏也可选择仅支持 Steam Input。例如在《Among Us》中,除非运行 SIC,否则游戏手柄无法工作。
  • 当启动不支持 Steam Input 的游戏时,它(不知情地)在传统模式下使用 SIC。游戏接收来自看似 360 控制器的原始输入,但这些输入实际由 SIC 伪造以模拟原生模式的行为。
    • 这适用于使用 evdev 或操纵杆的原生游戏,以及通过 Proton 运行的使用 DirectInput 或 XInput 的 Windows 游戏。
  • 当启动既不支持 Steam Input 也不支持其他游戏手柄 API 的游戏时,SIC 可激活配置文件以模拟游戏手柄支持。
  • 当 Big Picture 获得焦点时,当前 Big Picture 配置文件生效(不可配置)。
  • 当其他任何程序获得焦点时,当前桌面配置文件生效,可通过“Steam > 设置 > 控制器 > 桌面布局”配置。
  • 当任何程序获得焦点时,可通过“Steam > 设置 > 控制器 > 引导按钮和弦布局”配置额外的全局绑定(在 Steam Deck 上不可用)。

游戏根据其手柄支持程度进行评级(取决于控制器型号):

  • 支持您的控制器:表示游戏具有完整控制器支持。即使游戏不使用 Steam Input API 也可实现;重点在于无障碍性,无论 API 如何。
  • 大部分可用您的控制器:表示游戏具有部分手柄支持。即使游戏使用 Steam Input API,某些部分(如《军团要塞2》中)仍无法访问,导致此评级。
  • 不支持控制器:表示游戏没有原生手柄支持。
  • 未知控制器支持:表示 Valve 尚未验证该游戏的控制器支持。

当游戏没有完整手柄支持时,SIC 会尝试填补空白。例如在需要点击操作的《Bloons Tower Defense 5》中,Steam 会自动激活“键盘(WASD)和鼠标”配置文件,让您能用游戏手柄移动和点击。

推荐 Steam Input 用法

[编辑 | 编辑源代码]

使用总结:

  • 启用“配置支持”建议用于增强手柄功能,如自定义重映射或自动修复(如任天堂式按钮重映射或键盘/鼠标)。
  • 对于某些游戏,如果它们不支持传统游戏手柄 API,则启用此功能是必需的。
  • 默认情况下,如果启用此功能,则控制器无法用于非 Steam 游戏,因为 360 控制器优先于原始控制器设备,但默认桌面配置禁用按钮。要修复此问题,您可以:
    • 让配置更改动作集。某些官方桌面配置在按住开始按钮时会切换到游戏手柄模式。如果您的控制器配置无此功能,可添加新动作集,将其设为包含游戏手柄按钮,向开始按钮添加“额外命令”,设为“更改动作集”,并设置该额外命令在长按时激活。
    • 将桌面配置文件设为“游戏手柄”模板。这将传递输入到 360 控制器,使默认设备可用于其他程序。
    • 让其他程序使用原始设备(如果支持)。注意游戏将无法受益于 Steam Input 重映射。
    • 禁用整个功能,使 Steam 完全不创建 360 控制器。注意 Steam 游戏将无法受益于增强的手柄支持。
    • 使用其他游戏时关闭 Steam。

禁用 Steam Input

[编辑 | 编辑源代码]

如果您希望完全禁用 Steam Input,请使用 -nojoy 参数启动 Steam,并单独为每个游戏禁用 Steam Input,因为不存在全局选项。

参见 HiDPI#Steam

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

[编辑 | 编辑源代码]

欲从显示管理器Gamescope混成器直接以大屏幕模式启动 Steam:

/usr/share/wayland-sessions/steam-big-picture.desktop
[Desktop Entry]
Name=Steam 大屏幕模式
Comment=以大屏幕模式启动 Steam
Exec=/usr/bin/gamescope -e -- /usr/bin/steam -tenfoot
Type=Application
注意:其中 -tenfoot 选项告诉 Steam 以大屏幕模式启动。
警告:“切换到桌面”菜单项会导致会话软锁。要返回显示管理器,需在终端运行 steam -shutdown

Steam 皮肤

[编辑 | 编辑源代码]
注意:2023年6月发布了新的Steam UI。未针对此新UI更新的皮肤将无效。

使用皮肤可以自定义 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 库文件夹,然后点击加号添加库文件夹。

有三种文件系统支持被 Windows 和 Linux 读写。

更多信息参见 Proton wiki。欲从 NTFS 文件系统启动游戏,请遵循 Steam/疑难解答#Steam Library in NTFS partition.

使用 NTFS 的不足之处在于会经常发生着色器缓存文件夹损坏,报错信息为 ntfs3: sdb6 ino=1921f, steamapprun_pipeline_cache Looks like your dir is corrupt. 且无法在 Linux 下修复,需要在 Windows 下使用 chkdsk 修复。

该文件系统的缺点之一是不区分大小写。可能会出现类似的提示信息:SteamLibrary has both 'SteamApps' and 'steamapps' directories. This will cause problems. Please fix manually and only keep 'steamapps'。参见 issue #7665

此外,在 exFAT 上创建符号链接也存在问题,因此你无法像在 NTFS 方法中那样使用符号链接 compatdata 的方法。

该文件系统可以几乎无痛使用。唯一要注意的是 Linux 目前不支持 UDF 2.50+ 版本的写入。可以使用 GParted 创建 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 兼容工具”,然后选择你想要的工具。


使用独立显卡运行游戏

[编辑 | 编辑源代码]

在使用混合图形技术的笔记本电脑上,Steam 默认使用集成显卡运行游戏,欲使用性能更为强劲的独立显卡运行游戏,请参阅 PRIME#PRIME GPU 分载

Flatpak

[编辑 | 编辑源代码]
注意:通过 Flatpak 从 Flathub 安装 Steam 可以修复客户端中遇到的许多问题,但从长远来看,可能需要使用记录较少的不同的故障排除方法。

可以通过 FlatpakFlathub 安装 Steam,应用名为 com.valvesoftware.Steam。以下是为当前用户安装并运行的最简单方式:

$ 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 版 Steam 不支持使用自定义主题。此外,也暂时无法通过 optirunprimusrun 运行游戏,详情参见 Issue#869

通过 Flatpak 安装的 Steam 无法访问主目录,而强行覆盖此限制将导致 Steam 无法运行,因为这不安全。不过,可以自由添加主目录以外的其他目录。如果要添加一个外部游戏库,请运行以下命令添加目录权限:

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

启动 Flatpak 版 Steam 时,可能会提示你安装 steam-devices 软件包。该软件包目前并不存在,但可以改为安装 game-devices-udevAUR,详见游戏手柄#设备权限

Flatpak 的 CJK 字体问题

[编辑 | 编辑源代码]

如果在游戏中遇到中日韩文字无法显示的问题,这可能是因为 org.freedesktop.Platform 默认不包含所需字体。首先尝试挂载本地字体目录:

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

如果无效,可以尝试直接将字体文件复制到 org.freedesktop.Platform 的目录中来使其可用,例如复制到:

/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

Flatpak 版 Steam 启动(run)问题

[编辑 | 编辑源代码]

启动后,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
Exec=/usr/bin/steam -cef-disable-gpu-compositing -cef-disable-gpu steam://open/minigameslist %U

当启动 Steam Minimal 时,您会看到一个索然无味的界面,不过已经足以安装和运行游戏。运行原先标准的 Steam 则会启动完整的 Steam 客户端。

疑难解答

[编辑 | 编辑源代码]

参见 Steam/疑难解答

另见

[编辑 | 编辑源代码]