Steam
Steam 是 Valve 流行游戏发行平台。
安装
启用 multilib 仓库并安装 steam 软件包(推荐),或者选择 steam-native-runtime 软件包,以便使用原生系统库运行 Steam。请参阅 /Troubleshooting#Steam runtime。
为了在 Arch Linux 上运行 Steam
- 您必须安装适用于您系统的 32 位版本的 OpenGL 图形驱动程序。
- 如果尚未在 安装期间完成,您必须 生成 en_US.UTF-8 区域设置,以防止无效指针错误。
- 如果您需要添加库文件夹或将非 Steam 游戏添加到您的 Steam 库,请安装 XDG Desktop Portal 和提供文件选择器的后端。
- 由于 GUI 大量使用 Arial 字体,您应该
- 使用免费替代字体,例如 ttf-liberation。
- 按照 Microsoft fonts 安装原始字体。
- 应用 Steam/Troubleshooting#Text is corrupt or missing 中的解决方法以使用不同的字体。
- 如果使用 systemd-networkd 进行网络管理,请安装 lib32-systemd,以便 Steam 能够连接到其服务器。
- 如果使用 systemd-resolved 进行 DNS,请按照 这些步骤修复
/etc/resolv.conf
,以便 Steam 能够解析主机名。 - 如果使用 Big Picture 模式(Steam Deck UI),可能需要 NetworkManager 才能使网络相关面板正常工作。
vm.max_map_count
必须增加才能运行某些游戏而不会崩溃,请参阅 Gaming#Increase vm.max_map_count。
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
属性决定了游戏目录名称。
用法
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 开发了一个基于 Wine 和名为 Proton 的附加组件的 Steam Play 兼容性工具。它允许您启动许多 Windows 游戏(请参阅 兼容性列表)。
它是开源的,可在 GitHub 上获取。启用 Steam Play 后,Steam 将安装其自己的 Proton 版本。
需要在 Steam 客户端上启用 Proton:Steam > 设置 > 兼容性。您可以在该对话框中为 Valve 已列入白名单和未列入白名单的游戏启用 Steam Play。
如果开发者激活了 Proton,它支持 Easy Anti Cheat 集成,但是 EAC 可能需要特定修补版本的 glibc:如果某个游戏被报告为可以工作,但在您的机器上无法工作,请尝试使用 Steam Flatpak,因为它带有修补的 glibc。
强制使用 Proton
如果需要,要强制为游戏启用 Proton 或特定版本的 Proton,请右键单击游戏,单击属性 > 兼容性 > 强制使用特定的 Steam Play 兼容性工具,然后选择所需的版本。这样做也可以用于强制具有 Linux 端口的游戏使用 Windows 版本。
在 Steam 之外使用 Proton
您可以安装 proton-cachyosAUR,但需要额外的设置才能与 Steam 一起使用。请参阅 Proton GitHub 了解有关 Steam 如何识别 Proton 安装的详细信息。
Steam 输入
当在 Steam 运行时插入控制器时,Steam 的默认行为是不管它,让游戏按原样使用它。游戏手柄的 evdev 和 joystick 设备由内核公开,游戏可以使用 SDL2 等 API 使用它们,就好像 Steam 不存在一样。
Steam 输入子系统提供了一个抽象层,允许更高级的功能,例如重新绑定按钮和轴、拥有特定于游戏的配置文件以及基于游戏内操作进行更高级别的按钮映射。Steam 输入配置器 (SIC) 是实现此功能的系统部件。要为控制器启用 Steam 输入,请转到 Steam > 设置 > 控制器 > 通用控制器设置。[2] 这将从 Big Picture 设置中打开一个菜单,您可以在其中启用与您的控制器对应的配置支持选项。
Steam 输入配置器
当为控制器启用 SIC 时,有几个不同的控制器设备
- 虚拟 Steam 控制器,供使用 Steam 输入 API 的游戏使用。所有重新绑定和 Steam 特定功能均有效。
- 这不应与 Valve Steam 控制器(物理控制器)混淆。
- 代表模拟 Xbox 360 控制器的 evdev 设备,供不支持 Steam 输入的游戏使用。基本重新绑定有效。[3]
- 原始控制器 evdev 设备,其输入通过 SIC 传递。重新绑定无效,但游戏应默认为 360 控制器。
- 上述两个设备的操纵杆模拟。
SIC 的行为取决于上下文
- 当启动支持 Steam 输入 API 的游戏时,它在原生模式下使用 SIC。游戏接收“操作”而不是原始输入来处理。
- 这适用于在 Windows 上使用 Steam 输入的 Proton 中运行的游戏。
- 即使理论上不需要,模拟的 360 控制器仍然存在。
- 游戏可以选择同时支持 Steam 输入和传统的输入 API 库,这些库在底层会延迟到 evdev 和 joystick。当游戏在启用 Steam 和 SIC 的情况下启动时,Steam 输入具有更高的优先级。
- 游戏也可以选择仅支持 Steam 输入。例如,在 Among Us 中,除非您运行 SIC,否则游戏手柄将无法工作。
- 当启动不支持 Steam 输入的游戏时,它(不知不觉地)在旧版模式下使用 SIC。游戏从看起来像是 360 控制器的设备接收其预期的低级原始输入,但它们实际上是由 SIC 欺骗以模拟原生模式的期望行为。
- 对于使用 evdev 或 joystick 的原生游戏,以及通过 Proton 运行的使用 DirectInput 或 XInput 的 Windows 游戏都是这种情况。
- 当启动既不支持 Steam 输入也不支持其他游戏手柄 API 的游戏时,SIC 可以激活一个配置文件,该配置文件模拟如下所述的游戏手柄支持。
- 当 Big Picture 具有焦点时,当前的 Big Picture 配置文件生效,可通过 Steam > 设置 > 控制器 > Big Picture 配置进行配置。
- 当任何其他内容具有焦点时,当前的桌面配置文件生效,可通过 Steam > 设置 > 控制器 > 桌面配置进行配置。
- 当任何内容具有焦点时,可以通过 Steam > 设置 > 控制器 > 指南按钮和弦配置配置其他全局绑定。
游戏根据其游戏手柄支持的全面性进行评级。游戏在 Big Picture UI 中可以有三个图标之一:[4]
- 完整的游戏手柄图标,表示游戏具有完整的控制器支持。即使游戏不使用 Steam 输入 API 也可以实现这一点;重点是可访问性,而与 API 无关。
- 半填充的游戏手柄图标,表示游戏具有部分游戏手柄支持。即使游戏正在使用 Steam 输入 API,也存在 Team Fortress 2 等某些部分仍然无法访问以保证此评级的情况。
- 键盘图标,表示游戏没有原生游戏手柄支持。
在游戏没有完整游戏手柄支持的情况下,SIC 会尝试填补空白。例如,在 Bloons Tower Defense 5 中,这是一款需要您点击的游戏,Steam 将自动激活键盘 (WASD) 和鼠标配置文件,允许您使用游戏手柄移动和点击。
推荐的 Steam 输入用法
总结一下这对用法意味着什么
- 建议在 Big Picture 设置中启用“配置支持”,以增强游戏手柄支持,例如重新绑定到自己喜欢的设置,或自动修复,例如 Nintendo 风格的按钮重新映射或键盘/鼠标。
- 对于某些游戏,如果它们不支持传统的游戏手柄 API,则必须启用此功能。
- 默认情况下,如果您启用了此功能,则控制器将无法与非 Steam 游戏一起使用,因为 360 控制器优先于原始控制器设备,但默认的桌面配置文件已禁用按钮。要解决此问题,您可以
- 将您的桌面配置文件设置为 Gamepad 的模板。这将把输入传递到 360 控制器,使默认设备可用于其他程序。
- 如果其他游戏支持,则让其他游戏使用原始设备。请注意,该游戏将不会从任何 Steam 输入重新绑定中受益。
- 禁用控制器的整个功能,以便 Steam 完全不创建 360 控制器。请注意,Steam 游戏将不会从增强的游戏手柄支持中受益。
- 在使用其他游戏时关闭 Steam。
禁用 Steam 输入
如果您希望完全禁用 Steam 输入,请使用 -nojoy 参数启动 Steam,并为每个游戏单独禁用 Steam 输入,因为没有全局选项可以执行此操作。
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 界面。请按照 此 Steam 指南了解更多信息。
一些针对 2023 UI 更新的皮肤是
- Adwaita for Steam
- Shiina's Steam Skins
- Zehn
- 更多皮肤可在上面链接的指南中找到。
更改 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 远程畅玩
Steam 内置了对远程畅玩的支持。
有关如何在 Linux 上设置无头流式传输服务器的信息,请参阅 此 Steam 社区指南。
在使用 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/Troubleshooting#Steam Library in NTFS partition 中的步骤操作。
使用 ntfs 有缺点。着色器缓存文件夹经常损坏。消息显示 ntfs3: sdb6 ino=1921f, steamapprun_pipeline_cache Looks like your dir is corrupt.
您无法从 Linux 修复它。您需要启动到 Windows 并使用 chkdsk 来修复。
EXFAT
此文件系统的缺点是它不区分大小写。您将收到如下消息: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 引擎运行游戏。
- Boxtron — 使用原生 Linux DOSBox 运行 DOS 游戏
您还可以使用 protonup-qtAUR 来管理它们
- 关闭 Steam
- 安装 protonup-qtAUR
- 打开 protonup-qt 并安装所需的工具
- 启动 Steam
- 在游戏属性窗口中,选择强制使用特定的 Steam Play 兼容性工具,然后选择所需的工具。
禁用 HTTP2 以获得更快的下载速度
某些系统和配置似乎在使用 HTTP2 时存在问题。禁用 HTTP2 可能会在这些配置上产生更快的下载速度。您可以使用控制台命令 @nClientDownloadEnableHTTP2PlatformLinux 0
或在 steam_dev.cfg
中设置它,如下所示
~/.steam/steam/steam_dev.cfg
@nClientDownloadEnableHTTP2PlatformLinux 0
使用独立显卡运行游戏
在 混合显卡 笔记本电脑上,Steam 默认使用集成显卡运行游戏。请参阅 PRIME#PRIME GPU 卸载 以切换到更强大的独立显卡来运行特定游戏。
Flatpak
Steam 也可以通过 Flatpak 从 Flathub 安装为 com.valvesoftware.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 代替,请参阅 Gamepad#Device permissions。
Flatpak 的亚洲字体问题
如果您在游戏中显示亚洲字体时遇到问题,那是因为 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/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/故障排除。
参见
- Gentoo:Steam
- PCGamingWiki 上 Steam 上 DRM-Free 游戏的庞大列表
- Steam Linux 商店
- Proton 基于 Wine 和其他组件的 Steam Play 兼容性工具。
- ProtonDB 众包 Linux 兼容性报告。
- are we anti cheat yet 一个全面且众包的游戏反作弊列表,以及它们与 GNU/Linux 或 Wine/Proton 的兼容性。