Steam
Steam 是 Valve 公司一款流行的游戏分发平台。
安装
启用 multilib 仓库并 安装 steam 包(推荐),或者选择安装 steam-native-runtimeAUR 包,以便使用原生系统库运行 Steam。参见 /故障排除#Steam 运行时。
要运行 Steam
- 您必须安装适合您系统的 32 位 OpenGL 图形驱动程序。
- 如果 安装过程中未完成,您必须 生成 en_US.UTF-8 区域设置,以防止出现无效指针错误。
- 如果您需要添加库文件夹或将非 Steam 游戏添加到您的 Steam 库,请安装 XDG Desktop Portal,并提供一个支持文件选择器的后端。
- 如果您使用 systemd-resolved 进行 DNS 解析,请按照 这些步骤 来修复
/etc/resolv.conf,以便 Steam 能够解析主机名。 - 如果您使用大屏幕模式(Steam Deck UI),可能需要 NetworkManager 才能使与网络相关的面板正常工作。
- 需要增加
vm.max_map_count的值才能让某些游戏在不崩溃的情况下运行,参见 游戏#增加 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,请选择查看 > 大型模式。
您也可以使用此参数启动 Steam:+open steam://open/minigameslist
Proton Steam-Play
Valve 开发了一个基于 Wine 和其他组件的 Steam Play 兼容性工具,名为 Proton。它允许您运行许多 Windows 游戏(请参见 兼容性列表)。
它是开源的,可在 GitHub 上找到。当启用 Steam Play 时,Steam 会安装其自身的 Proton 版本。
“Proton Experimental”默认在 Steam 客户端中启用:Steam > 设置 > 兼容性。您可以在该对话框中为 Valve 已批准和未批准的游戏启用 Steam Play。
Proton 支持简易反作弊集成,前提是开发者激活它。但是,EAC 可能需要特定 补丁版本 的 glibc:如果某个游戏报告运行正常但在您的机器上却不行,请尝试使用 Steam Flatpak,因为它自带已修补的 glibc。此外,将 procfs 挂载选项 hidepid 设置为更严格的值可能会导致简易反作弊失败,并显示消息“启动错误:261”。
强制使用 Proton
如果需要,要强制为某个游戏启用 Proton 或特定版本的 Proton,请右键单击游戏,选择属性 > 兼容性 > 强制使用特定的 Steam Play 兼容工具,然后选择所需的版本。这样做也可以用于强制使用 Linux 端口的游戏使用 Windows 版本。
在 Steam 外使用 Proton
您可以 安装 proton-cachyosAUR,但需要额外的设置才能与 Steam 一起使用。有关 Steam 如何识别 Proton 安装的详细信息,请参见 Proton GitHub。
Steam 输入
当控制器插入 Steam 运行时,Steam 的默认行为是将其置之不理,让游戏按原样使用它。内核会暴露游戏手柄的 evdev 和 joystick 设备,游戏可以使用像 SDL2 这样的 API 来使用它们,就好像 Steam 不存在一样。
Steam 输入子系统提供了一个抽象层,允许更高级的功能,例如重新映射按钮和轴,拥有游戏特定的配置文件,以及基于游戏内操作的高级按钮映射。Steam 输入配置器(SIC)是实现此功能的系统部分。要为控制器启用 Steam 输入,请前往Steam > 设置 > 控制器 > 外部游戏手柄设置。在此处您会找到对应于您的控制器的启用 Steam 输入的开关。
Steam 输入配置器
有关配置器使用说明,请参见 Steam 输入配置器。
当为控制器启用 SIC 时,有几种不同的控制器设备
- 虚拟 Steam 控制器,供使用 Steam 输入 API 的游戏使用。所有重新映射和 Steam 特有功能均可正常工作。
- 这不应与物理控制器 Valve Steam 控制器混淆。
- 一个模拟 Xbox 360 控制器的 evdev 设备,供不支持 Steam 输入的游戏使用。基本重新映射生效。 [3]
- 原始控制器 evdev 设备,其输入通过 SIC 传递。重新映射不生效,但游戏应默认使用 360 控制器。
- 上述两个设备的 joystick 模拟。
SIC 的行为取决于上下文
- 启动支持 Steam 输入 API 的游戏时,它以原生模式使用 SIC。游戏接收“操作”(actions)而不是原始输入进行处理。
- 这适用于在 Proton 中运行的游戏,这些游戏在 Windows 上会使用 Steam 输入。
- 即使理论上不需要,模拟的 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 可以激活一个配置文件来模拟如下所述的游戏手柄支持。
- 当大屏幕模式具有焦点时,当前的大屏幕模式配置文件生效。此设置不可配置。
- 当其他任何内容具有焦点时,当前桌面配置文件生效,可通过Steam > 设置 > 控制器 > 桌面布局进行配置。
- 当任何内容具有焦点时,可通过Steam > 设置 > 控制器 > Guide 按钮组合布局配置其他全局绑定。Steam Deck 上不提供此功能。
游戏根据其对游戏手柄的全面支持程度进行评级。这取决于控制器型号。
- 支持您的控制器,表示游戏具有完整的控制器支持。即使游戏不使用 Steam 输入 API,也可以实现这一点;重点在于可访问性,无论使用何种 API。
- 基本可与您的控制器游玩,表示游戏具有部分游戏手柄支持。即使游戏正在使用 Steam 输入 API,也存在像《Team Fortress 2》那样某些部分仍然无法访问的情况,因此需要此评级。
- 不支持控制器,表示游戏没有原生游戏手柄支持。
- 未知控制器支持,表示 Valve 尚未验证游戏的控制器支持。
在游戏没有完整游戏手柄支持的情况下,SIC 会尝试填补空白。例如,在《Bloons Tower Defense 5》中,一个需要您指向和点击的游戏,Steam 会自动激活键盘(WASD)和鼠标配置文件,允许您使用游戏手柄进行移动和点击。
推荐的 Steam 输入使用方式
总结一下这对使用意味着什么
- 启用“配置支持”推荐用于增强游戏手柄支持,例如自定义按键绑定,或自动修复,如 Nintendo 风格的按键重映射或键盘/鼠标。
- 对于某些游戏,如果它们不支持传统游戏手柄 API,启用此项是绝对必需的。
- 默认情况下,如果您启用了此项,那么控制器将无法与非 Steam 游戏一起使用,因为 360 控制器优先于原始控制器设备,但默认的桌面配置文件中的按钮是禁用的。要解决此问题,您可以
- 让配置更改动作集。一些官方的桌面配置会在按下开始按钮时切换到游戏手柄模式。如果您的控制器配置没有这个功能,您可以添加一个动作集到配置中,将该集合设置为包含游戏手柄按钮,为开始按钮添加一个额外命令,将额外命令设置为更改动作集,然后将其设置为长按激活。
- 将您的桌面配置文件设置为游戏手柄模板。这将把输入传递给 360 控制器,使默认设备可供其他程序使用。
- 让其他游戏使用原始设备(如果它支持)。请注意,游戏将不会受益于任何 Steam 输入重新绑定。
- 为控制器禁用整个功能,这样 Steam 就不会创建 360 控制器。请注意,Steam 游戏将不会受益于增强的游戏手柄支持。
- 使用其他游戏时关闭 Steam。
禁用 Steam 输入
如果您想完全禁用 Steam 输入,请使用 -nojoy 参数启动 Steam,并且也要单独为每个游戏禁用 Steam 输入,因为没有全局选项可以做到这一点。
HiDPI
参见 HiDPI#Steam。
从显示管理器启动大屏幕模式
要从显示管理器使用 Gamescope 作为其 合成器 来启动 Steam 大屏幕模式
/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 以大屏幕模式启动。然后指示您的显示管理器启动 gamescope。
steam -shutdown。您也可以创建一个包含此命令的脚本,并将其添加为非 Steam 游戏。这会创建一个退出回显示管理器的“快捷方式”。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 内置支持 远程畅玩。
参见 此 Steam 社区指南,了解如何在 Linux 上设置无头流媒体服务器。
使用 Proton 时与 Windows 共享游戏
如果您使用 Proton(Steam Play)来运行您的游戏,但出于某些原因仍保留 Windows 安装(例如,某些游戏存在反作弊问题,或者您想与 Windows 进行比较测试),您可能希望将游戏存储在公共分区中,而不是为每个操作系统保留两份游戏副本。
要添加另一个库文件夹,请点击Steam > 设置 > 下载 > STEAM 库文件夹,然后点击⊕ (加号) 按钮。
有四种文件系统可以被 Windows 和 Linux 读写。
NTFS
有关如何配置 NTFS 的更多信息,请参见 使用 Linux 和 Windows 的 NTFS 磁盘。要从 NTFS 驱动器启动游戏,请按照 Steam/故障排除#NTFS 分区中的 Steam 库中的步骤操作。
使用 NTFS 有缺点。着色器缓存文件夹经常会损坏。会收到消息 ntfs3: sdb6 ino=1921f, steamapprun_pipeline_cache 看起来你的目录已损坏。 您无法从 Linux 修复此问题。您需要启动到 Windows 并使用 chkdsk 进行修复。
exFAT
此文件系统有一个缺点,它不区分大小写。您会收到类似的消息:SteamLibrary 同时包含 'SteamApps' 和 'steamapps' 目录。这将导致问题。请手动修复并仅保留 'steamapps' 参见 issue #7665
此外,在 exfat 上创建符号链接很麻烦,因此您无法使用 NTFS 方法中的符号链接 compatdata 的方法。
Btrfs
NTFS 也可以转换为 Btrfs,参见 Btrfs#NTFS 到 Btrfs 转换。
此文件系统消除了大多数 NTFS/exFAT 兼容性问题,但在 Windows 和 Linux 之间共享 Steam 库存在局限性
Valve 官方不鼓励在操作系统之间共享 Steam 库。即使正确配置了 WinBtrfs 的 UID/GID 映射,Windows 进程也会创建属于 nobody:100 的锁定文件和暂存文件夹,导致 Linux 出现“磁盘写入失败”或“内容文件被锁定”的错误。
使用 Windows 后,您必须运行
# chown -R $USER:$USER /path/to/steam_library/steamapps
$ find /path/to/steam_library/steamapps -name "*.lock" -delete
$ rm -rf /path/to/steam_library/steamapps/{downloading,temp}/*
在此之后才能在 Linux 上启动 Steam。为了可靠运行,请为每个操作系统保持单独的库。
UDF
此文件系统可以无问题地使用,但要确保兼容性,必须将其格式化为正确的 UDF 版本。Linux 缺乏对版本 2.50 及更高版本的写入支持。因此,需要版本 2.01 才能正常工作。
UDF 块大小必须与分区的逻辑扇区大小匹配。可以使用 blockdev(8) 获取此值。
# blockdev --getss /dev/the_partition_to_be_formatted
然后使用 mkfs.udf(8)(由 udftools 提供)将分区格式化为 UDF。对于 HDD 和 SSD,适当的媒体类型是 hd。
# mkfs.udf --utf8 --label=label --blocksize=block-size --media-type=hd --udfrev=0x0201 /dev/the_partition_to_be_formatted
其中:
要格式化的分区是目标分区的名称(例如sdb4、nvme2n5p3等)。标签是所需的卷标。块大小是blockdev命令的输出。
或者,可以使用 gparted 等图形工具来处理格式化。它们能正确管理 UDF 版本选择,以确保兼容性。
更快的着色器预编译
在某些情况下,着色器预编译可能只使用一个核心,但用户可以覆盖此设置,例如使用 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 offloading 来为特定游戏切换到更强大的独立显卡。
Flatpak
Steam 也可以通过 Flatpak 以 com.valvesoftware.Steam 的形式从 Flathub 安装。为当前用户安装它的最简单方法是使用 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
如果那不起作用,可以考虑这个变通方法:通过直接将字体文件复制到 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 -cef-disable-gpu-compositing -cef-disable-gpu steam://open/minigameslist %U
因此,当启动 Steam Minimal (Runtime) 快捷方式时,您将获得一个极简界面,该界面仍然足以安装和运行游戏;而当启动标准的 Steam (Runtime) 快捷方式时,您将获得一个功能齐全的客户端。
故障排除
参见
- Gentoo:Steam
- PCGamingWiki 上的 Steam DRM-Free 游戏大列表
- Steam Linux 商店
- Proton 基于 Wine 和其他组件的 Steam Play 兼容性工具。
- ProtonDB 众包的 Linux 兼容性报告。
- are we anti cheat yet 一个全面且众包的游戏列表,包含使用反作弊系统的游戏及其与 GNU/Linux 或 Wine/Proton 的兼容性。