Portal Bundle

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に対応してるようでした。

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