Steam (简体中文) - ArchWiki

Jump to content

相关文章

- Steam/Troubleshooting
- Steam/Game-specific troubleshooting
- Gaming
- Gamepad
- List of games (简体中文)

翻译状态：本文是 Steam 的翻译。上次翻译日期：2022-04-19。如果英文版本有所更改，则您可以帮助同步翻译。

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

注意： 对于 Linux 平台，Steam 只支持 Ubuntu 的长期支持版本[1]。 因此，请不要向 Valve 公司提交 issue 以获得 Steam 对 Arch Linux 的支持。

## 安装

启用 multilib 仓库并安装 steam 软件包。

你需要满足下列要求从而在 Arch Linux 上运行 Steam：

- 安装 32 位版本的 OpenGL 图形驱动。
- 生成 en_US.UTF-8 语言环境，以避免非法指针错误。
- 其图形界面大量使用 Arial 字体。详见 Microsoft fonts 。你可以通过安装 ttf-liberation 或使用 Steam 支持的字体问题 中的方法来解决。
- 安装 wqy-zenhei 以支持亚洲地区语言。
- 若使用 systemd-networkd 管理网络，安装 lib32-systemd 才能让Steam连上自己的服务器。

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

启动使用 Flakpak 安装的 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

如果上述命令不起作用，考虑动手 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 的页面路径或在 SteamDB 中来找到它。

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 公司的 fsync 补丁为使用Proton或Wine运行的大型应用改进了性能。此补丁自Linux内核5.16版本以来，已经合并到了 vanilla 内核，只需使用最新的 Proton 或修改版 Wine 构建即可。若想使用支持fsync的早期的内核版本：

- 安装 linux-zen 内核，其从 5.2 版本开始已包括 fsync 补丁。[2]
- 安装 linux-pfAUR 或 linux-pf-gitAUR 内核。

### Proton Steam-Play

Valve 公司开发了一个兼容性工具Proton，用来使 Steam 可以在 Wine 和其他额外组件上运行。这使得你可以运行很多原本只能在 Windows 平台上运行的游戏 (详见 compatibility list)。

此工具开源并且可以从 GitHub 获得。Steam 将在 Steam Play 启用后安装它相适应的 Proton 版本。

Proton 需要在 Steam 客户端启用：Steam > 设置 > Steam Play。你可以为了上述那些没有被 Valve 公司列入白名单的游戏启用 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` 的界面定义文件所覆盖。

想要安装一个皮肤：

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 库文件夹，然后点击加号添加库文件夹。

## 疑难解答

参见 Steam/Troubleshooting.

## 另见

- Gentoo:Steam
- The Big List of DRM-Free Games on Steam 位于 PCGamingWiki
- Fandom中的List of DRM-free games
- Steam Linux store
- Proton 支持 Steam Play 运行的基于 Wine 以及其他额外组件的兼容性工具

Category:

- Gaming (简体中文)