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 が起動します!
自分の環境は 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 に対応してるようでした。
地道にマルチプラットフォーム化を進めてくれてる開発者に感謝です。