Steam (简体中文)
Steam 是维尔福公司推出的著名游戏分发平台。
安装
你需要满足下列要求从而在 Arch Linux 上运行 Steam:
- 安装 32 位版本的 OpenGL 图形驱动。
- 生成 en_US.UTF-8 语言环境,以避免非法指针错误。
- 其图形界面大量使用 Arial 字体。详见 Microsoft fonts 。你可以通过安装 ttf-liberation 或使用 Steam 支持的字体问题 中的方法来解决。
- 安装 wqy-zenhei 以支持亚洲地区语言。
SteamCMD
安装 steamcmdAUR 以使用命令行版本的 Steam。
可选 Flatpak 安装
Steam 也可以作为 com.valvesoftware.Steam
使用 Flatpak 从 Flathub 中安装。使用 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 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 页面来找到它。
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)公司 发布 了一个可以帮助提升大量多线程应用运行帧率的特殊内核补丁。这里有一些使用这个补丁的方法:
- 直接使用维尔福(Valve)公司提供的二进制内核。详见 Unofficial user repositories#valveaur 并且一旦你添加了这个仓库,内核软件包 linux-fsync 和 linux-fsync-headers 便可使用。你也将可能需要将某些常用软件包 (例如 nvidia) 替换为 DKMS 软件包 (例如 nvidia-dkms)。
- 安装 linux-zen 内核,其从 5.2 版本开始已包括 fsync 补丁。[2]
- 安装 linux-pfAUR 或 linux-pf-gitAUR 内核。
Proton Steam-Play
维尔福(Valve)公司开发了一个兼容性工具,用来使 Steam 可以在 Wine 和其他额外组件上运行。这使得你可以运行很多原本只能在 Windows 平台上运行的游戏 (详见 compatibility list)。
此工具开源并且可以从 Github 获得。Steam 将在 Steam Play 启用后安装它相适应的 Proton 版本。
Proton 需要在 Steam 客户端启用: Steam > 设置 > Steam Play
。你可以为了上述那些没有被维尔福公司列入白名单的游戏启用 Steam Play。
如果需要的话,为了在启动游戏时强制启用 Proton 或者指定一个确定的 Proton 版本,在游戏处右击,点击 属性 > 常规 > 强制使用特定 Steam Play 兼容性工具
,然后选择所需版本。这样做同样可以用来强制游戏生成一个 Linux 入口用以运行 Windows 版本的游戏。
你同样可以从 AUR 通过安装 protonAUR 或 proton-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
的界面定义文件所覆盖。
想要安装一个皮肤:
- 将皮肤的目录放于
~/.steam/root/skins
。 - 按照 Steam > 设置 > 界面 依次点击并选择该皮肤。
- 重启 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 社区指南 以了解如何在 Linux 上设置无头模式的流媒体服务。
Steam Controller
通常一个 Steam Controller 手柄需要使用 Steam 界面。不过在非 Steam 原生的 Linux 游戏中这种界面并不很实用。对此,当 Steam 客户端运行时,其会保持一个“桌面配置”。如果你有 Steam Controller 手柄,请在桌面配置中将其设置为通用 XBOX 控制器。只要 Steam 客户端在运行,你可以在其他游戏中使用 Steam Controller 手柄,例如 GOG 的游戏, 就像一个 XBOX 手柄。请确保在“常规手柄设置”已经选择了你的手柄类型。
使用 Proton/其他兼容层 与 Windows 共享游戏
多亏了维尔福(Valve)公司,使用 Proton 的游戏体验有所提升。你可以用自定义的分支如 Proton GE 或其他的分支来提升很多游戏的运行效果,并且你甚至可以在 NTFS 文件系统下创建一个 Steam 库,不过你需要注意现在登录的用户 uid 和 gid 有相关权限,否则 Steam 可能无法写入所需的文件;并且你也需要确保在你的 fstab 下不要有 noexec 选项,否则 Steam 无法扫描到你的游戏。
故障排除
另见
- Gentoo Wiki article
- The Big List of DRM-Free Games on Steam 位于 PCGamingWiki
- List of DRM-free games 位于 Wikia
- Steam Linux store
- Proton 支持 Steam Play 运行的基于 Wine 以及其他额外组件的兼容性工具