Arch Linux上でSteamのゲームで遊ぶ

Arch Linux上でSteamのゲームで遊ぶ

Portal と Portal 2 がセットで 180 円という電波を受信したので早速買いました。 自分のマシンは Arch Linux ということで、Linux 環境で Steam をインストールしてゲームの起動までチャレンジしました。 結果を先に言うと、普通にプレイできました。 大きな障害もなくて驚きです。

Steam の Linux サポートはかなり前からニュースになってました。 正式にサポートしてる OS は Ubuntu または SteamOS(Debian ベース)のみですが、Arch Linux でも動かしてみました。 自分の環境は以下のとおりです。

  • Arch Linux
  • nVIDIA GeForce GT 1030

依存パッケージのインストール

まずはゲームを起動するための依存パッケージをインストールします。 Steam のゲームは 32 ビットバイナリでビルドされてるので、必要なパッケージをインストールします。 64 ビット版の Arch Linux ではデフォルトでは 32 ビットパッケージが有効になってません。 32 ビット版のパッケージは multilib リポジトリに含まれます。 このレポジトリを有効にして、32 ビット版パッケージをインストールできるようにします。

pacman の設定ファイル /etc/pacman.conf でコメントアウトされてるので、それを外して multilib レポジトリを有効にします。

# /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist

続いてパッケージのインストールします。 使ってるビデオカードの種類によって必要なビデオカードのドライバ(32 ビット版)をインストールします。 自分のグラフィックカードは nVIDIA なので、 lib32-nvidia-utils をインストールする必要がありました。 そしてゲーム本体が利用するパッケージもインストールします。

$ sudo pacman -S lib32-nvidia-utils
$ sudo pacman -S lib32-fontconfig lib32-gtk2 lib32-libxi lib32-nss lib32-libpng12 \
    lib32-alsa-lib lib32-pango lib32-cairo lib32-sdl2 lib32-libgcrypt15

SteamCMD のインストールとログイン

Steam のクライアントは GUI 版と CUI 版があり、Linux 向けに両方提供されています。 CUI 版は SteamCMD と呼ばれています。 SteamCMD のドキュメントが Valve 開発チームによって公開されています。

まずは SteamCMD をインストールします。 基本的にどこでも良いのですが、ドキュメントに従ってホームディレクトリの Steam 以下にインストールします。

$ mkdir ~/Steam && cd ~/Steam
$ curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

アーカイブを展開したら ~/Steam/steamcmd.sh に実行ファイルが展開されます。 これを実行すると SteamCMD のプロンプトが表示されます。 このプロンプト上でゲームのインストールができます。

$ ./steamcmd.sh
......
Loading Steam API...OK.

Steam>

まずは Steam にログインします。 ログインは login コマンドでできます。 初回ログイン時はメールに認証用コードが送られるので入力します。

Steam>login <username>

Logging in user '<username>' to Steam Public...
password:
Login Failure: Account Logon Denied

This computer has not been authenticated for your account using Steam Guard.
Please check your email for the message from Steam, and enter the Steam Guard
 code from that message.
You can also enter this code at any time using 'set_steam_guard_code'
 at the console.
Steam Guard code:******
Logged in OK
Waiting for user info...OK

ゲームのインストール

ログインができたらゲームをインストールをします。 ゲームには固有の ID が割り当てられています。 インストールにはゲームの ID を確認する必要があります。 ゲームのタイトルと ID は以下のリンクにまとめられています。

ゲームの ID は Steam のページの URL からも確認できます。 たとえば「Goat Simulator」の URL は store.steampowered.com/app/265930/Goat_Simulator/ で、その ID は 265930 になります。

ID を確認できたら SteamCMD の app_update コマンドでインストールできます。 Portal は 400 なので、app_update 400 を実行します。

Steam>app_update 400
.........
 Update state (0x61) downloading, progress: 100.00 (4102862811 / 4102864369)
Success! App '400' fully installed.

起動!

インストールしたゲームは ~/Steam/steamapps/common 以下に展開されます。 その下にゲーム毎にディレクトリが作成されまず。 起動方法はゲームによって違いしますが、Portal は以下の手順で起動できます。

$ cd ~/Steam/steamapps/common/Portal
$ ./hl2.sh -game portal

これで Portal が起動します!

Portalのスクリーンショット

自分の環境は 4K ディスプレイなのですが、Portal 程度なら GT 1030 でも普通に遊べる程度でした(ただし 10 分ほどで 3D 酔をしたので長くは遊べません)。

トラブルシューティング

起動に失敗する

起動に失敗するときはたいてい必要なライブラリが不足しているときです。 そのときはlddコマンドで、ロードするライブラリをチェックできます。 Portal の場合、bin 以下に Portal 本体が利用するいくつかのライブラリを含んでいます。

$ cd ~/Steam/steamapps/common/Portal
$ LD_LIBRARY_PATH=bin ldd bin/vguimatsurface.so
        linux-gate.so.1 (0xf7f7d000)
        libtier0.so => not found
        libvstdlib.so => not found
......

"not found" と表示されるライブラリは見つけられなかったものなので、追加でパッケージをインストールします。

音が出ない

自分の場合 ALSA が利用するデフォルトのデバイスを設定する必要がありました。

# /usr/share/alsa/alsa.conf
defaults.ctl.card 2
defaults.pcm.card 2

PulseAudio にもサポートしてるようですが、詳しくないので GitHub の Issue を貼っておきます。

まとめ

Steam が Linux をサポートしたとはかなり前から聞いてましたが、案外あっさり動いて感動しました。 GeForce GT 1030 も値段の割に意外と頑張ってくれてすごいです。 全てのゲームが Linux 対応されたわけではないですが、ざっと見たところ 150 タイトルくらいが Linux に対応してるようでした。

地道にマルチプラットフォーム化を進めてくれてる開発者に感謝です。


Profile picture

Shin'ya Ueoka

B2B向けSaaSを提供する会社の、元Webエンジニア。今はエンジニアリング組織のマネジメントをしている。