Steam
Wikipedia より:
- Steam は、コンピュータゲームのダウンロード販売、デジタル著作権管理、マルチプレイヤーゲームのサポート、ユーザの交流補助を目的としたプラットフォームである。開発および運営はバルブ・ソフトウェアによって行なわれている。
Steam は Source Engine のゲーム (例: Half-Life 2, Counter-Strike) を遊ぶのに必要なプラットフォームとしてよく知られています。今日では、多くのデベロッパによる多数のゲームが提供されています。
目次
- 1 インストール
- 2 Steam の起動
- 3 トラブルシューティング
- 3.1 Steam ランタイムの問題
- 3.2 ウィンドウを閉じても Steam が終了しない
- 3.3 64ビット環境で Flash が動作しない
- 3.4 64ビット環境で Flash の音声が鳴らない
- 3.5 文字が化けたり表示されない
- 3.6 ゲームの起動時に SetLocale('en_US.UTF-8') が失敗する
- 3.7 起動後にすぐゲームがクラッシュする
- 3.8 OpenGL がダイレクトレンダリングを使わない / Steam で Xorg がクラッシュする
- 3.9 特定のゲームで音が鳴らない
- 3.10 You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1
- 3.11 古い intel ハードウェアでゲームが起動しない
- 3.12 Steam を起動させると X がクラッシュする (Radeon オープンソースドライバー)
- 3.13 使っていないネットワークインターフェイスを Steam が有効にしてしまう
- 3.14 実行権限がないためにライブラリフォルダが追加できない
- 3.15 Steam コントローラーが正しく認識されない
- 3.16 lib32-glibc はインストールされているのに32ビットの libc.so.6 が見つからないと表示される
- 4 Bumblebee/Primus などのカスタムコマンドでゲームを起動する
- 5 ネイティブランタイムを使う
- 6 Steam のスキン
- 7 Steam フレンド通知の位置を変える
インストール
Steam は公式リポジトリにある steam パッケージからインストールできます。64ビット環境を使っている場合は、最初に multilib リポジトリを有効にしてください。
Steam はこのディストリビューションをサポートしていません。そのため正しく機能させるためにユーザーが以下のようなフィックスを施す必要があります:
- Steam は主として Arial フォントを使っています。使える Arial フォントには ttf-liberation や Steam によって提供されているフォントがあります。アジアの言語を正しく表示するには wqy-zenhei が必要です。
- 64ビット環境の場合、32ビットのゲームを動かすには32ビットのグラフィックドライバーをインストールする必要があります (Multilib パッケージカラムのパッケージ)。
- 64ビット環境の場合、32ビットのゲームでサウンドを有効にするために lib32-alsa-plugins をインストールする必要があります。
- ゲームによってはあなたのシステムに欠けている依存関係を持っています。ゲームが起動しない場合 (基本的にエラーメッセージは表示されません) Steam/ゲーム別のトラブルシューティング にリストアップされているライブラリが全てインストールされているか確認してください。
Steam の起動
Big Picture モード (ディスプレイマネージャを使う)
ディスプレイマネージャ (LightDM など) から Big Picture モードで 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 > 設定 > インターフェースから、'Big Picture モードで Steam を起動' にチェックを入れて通常通りに Steam を起動して下さい。特定のウィンドウマネージャではコマンドラインオプションを使うよりも上手く動くことがあります。
サイレントモード
起動時に steam のメインウィンドウが表示される場合、起動コマンドに -silent
パラメータを追加することでウィンドウを表示させないようにすることができます:
/usr/bin/steam -silent %U
もしくは、以下のデスクトップファイルを編集して、パラメータを手動で追加することも可能です:
~/.config/autostart/steam.desktop
[Desktop Entry] Name=Steam Comment=Application for managing and playing games on Steam Exec=/usr/bin/steam -silent %U Icon=steam Terminal=false Type=Application Categories=Network;FileTransfer;Game; MimeType=x-scheme-handler/steam; Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends; ...
トラブルシューティング
Steam ランタイムの問題
Steam はいくつかのライブラリについて独自のバージョンを供給しています ("Steam ランタイム")。これは最近のバージョンの Ubuntu で Ubuntu 12.04 の環境をエミュレートするためです。
しかしながら、Steam ランタイムに含まれているコアライブラリは Arch Linux に含まれている他のライブラリの新しいバージョンと衝突することがしばしばあります (ドライバーなど、特に、オープンソースの ATI ドライバー)。
これらのライブラリの Steam ランタイムバージョンを削除することで、Steam は最新のシステムライブラリ (pacman でインストールされたライブラリ) を使うようになり、問題を解決できます。
Steam はアップデートがあると頻繁にランタイムライブラリを再インストールしているため、ValveSoftware/steam-runtime#13 が解決されるまで、Steam がアップデートするたびに、Steam を終了して、ライブラリを削除して、再起動する必要があります。
次のコマンドを実行することで Arch Linux で問題を発生させるランタイムライブラリを削除できます:
find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete
上記のコマンドが上手く行かない場合、もう一度コマンドを実行してから、次のコマンドを実行して下さい:
find ~/.local/share/Steam/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete
もしくは、Steam を実行してライブラリを上書きさせることもできます:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' steam
.desktop
ショートカットで上書きしたい場合、Exec= フィールドに以下のコマンドを使って下さい:
env LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' /usr/bin/steam %U
これらのライブラリが存在することで起こる問題やエラーメッセージには以下のようなものがあります:
Failed to load libGL: undefined symbol: xcb_send_fd
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
- XCOM などの64ビットのゲームで問題が発生する
- "OpenGL GLX context is not using direct rendering, which may cause performance problems." (下を参照)
- "Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported or your OpenGL driver needs to be updated."
- Steam クライアントがクラッシュする
フォーラムスレッド:
下の #ネイティブランタイムを使う も参照してください。
ウィンドウを閉じても Steam が終了しない
- Valve GitHub issue 1025
トレイアイコンの閉じるボタンを機能させるには環境変数 STEAM_FRAME_FORCE_CLOSE
を 1
に設定してください。Steam を起動するときに次のコマンドを使っても可能です:
$ STEAM_FRAME_FORCE_CLOSE=1 steam
.desktop ファイルを使って steam を起動する場合は、Exec
を以下の行で置き換えてください:
Exec=sh -c 'STEAM_FRAME_FORCE_CLOSE=1 steam' %U
64ビット環境で Flash が動作しない
- Steam Support 記事
まず lib32-flashplugin がインストールされていることを確認してください。これだけで動かないときは、ローカル Steam フラッシュプラグインフォルダを作成します:
$ mkdir ~/.steam/bin32/plugins/
そしてシンボリックリンクをグローバル lib32 フラッシュプラグインファイルに張って下さい:
$ ln -s /usr/lib32/mozilla/plugins/libflashplayer.so ~/.steam/bin32/plugins/
64ビット環境で Flash の音声が鳴らない
Steam クライアントで再生した動画の音声が鳴らない場合、lib32-flashplugin を正しくインストールしているのならば、Steam が問題のある ALSA ライブラリを使用している可能性があります。
ターミナルから Steam を起動してクライアントの中から動画をしようとすると以下のようなエラーが発生する場合:
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Steam ランタイムのフォルダやライブラリファイルの名前を変更したり削除することで問題は解決します。バグは既に次のページで報告されています: #3376 と #3504
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/
内の alsa-lib
フォルダと libasound.so.*
ファイルの名前を変更するか削除してください。
文字が化けたり表示されない
Windows 用の Steam Support の手順が Linux でも上手くいくようです: SteamFonts.zip をダウンロードしてインストール (/usr/share/fonts/
や ~/.fonts/
にコピー) してください。
もしくは AUR の steam-fontsAUR パッケージでインストールすることもできます。
ゲームの起動時に SetLocale('en_US.UTF-8') が失敗する
お好きなエディタで /etc/locale.gen
を編集して en_US.UTF-8 UTF-8
をアンコメントしてください。そして root で locale-gen
を実行して下さい。
起動後にすぐゲームがクラッシュする
起動直後にゲームがクラッシュする場合、ゲームのプロパティを開き、「一般」タブの "ゲーム中に Steam オーバーレイを有効にする" のチェックを外してみて下さい。
OpenGL がダイレクトレンダリングを使わない / Steam で Xorg がクラッシュする
- Steam Support 記事
おそらく32ビットのグラフィックドライバがちゃんとインストールされていません。Xorg#ドライバーのインストール でどのパッケージをインストールするのか見て下さい。
正しくインストールされたかどうかは lib32-mesa-demos をインストールして次のコマンドを実行することで確認・テストできます:
$ glxinfo32 | grep OpenGL
特定のゲームで音が鳴らない
特定のゲームで音が鳴らない場合、そして Steam/ゲーム別のトラブルシューティング で書かれている方法で問題が修正されないときは、ネイティブランタイムを使うと音が鳴るようになることがあります。
You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1
初めて Steam を起動した時にこのエラーが表示されることがあります。あなたの使っているビデオドライバーの lib32 バージョンを全てインストールしたかどうか確認してください。例えば AMD と Intel が混載された環境で catalyst-utils-pxp, xf86-video-dri, mesa-libgl をインストールしている場合は lib32-catalyst-utils-pxp, lib32-mesa-libgl をインストールする必要があります。
たまに、Nvidia のプロプライエタリドライバーを再インストールしたりバージョンを変えた後にこのエラーが表示されることもあります。lib32-nvidia-utils と lib32-nvidia-libgl を再インストールしてください。
古い intel ハードウェアでゲームが起動しない
古い Intel ハードウェアで、起動した途端にゲームがクラッシュする場合、おそらくあなたの使っているハードウェアが最新の OpenGL を直接サポートしていないのが原因です。/tmp/dumps/mobile_stdout.txt
には gameoverlayrenderer.so エラーとして表示されますが、/tmp/gameoverlayrenderer.log
では GLXBadFBConfig エラーとして表示されます。
ただし、ゲームに OpenGL の新しいバージョンを使うように強制させれば修正することができるかもしれません。ゲームを右クリックして、プロパティを選択し、"一般" タブの "起動設定" オプションをクリックして以下を貼り付けて下さい:
MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140 %command%
これによってゲームが OpenGL の最新バージョンを使用するようになります。
Steam を起動させると X がクラッシュする (Radeon オープンソースドライバー)
(オープンソースの Radeon ドライバーで使われている) glamor-egl 0.6.0 にはバグが存在し Steam を起動しようとしたときに X がクラッシュしてしまいます。新しい glamour バージョンがリリースされるまで対処法として AUR から glamor-egl-gitAUR をインストールして下さい。
使っていないネットワークインターフェイスを Steam が有効にしてしまう
NetworkManager を使っている場合、Steam を起動すると無効になっているネットワークインターフェイスがオンになっていまうことがあります。polkit にネットワーク設定ルールを追加して Steam アプリケーションが NetworkManager にアクセスできないようにすることで問題を解決できます。以下のルールを作成して下さい:
/etc/polkit-1/rules.d/99-networkmanager-steam.rules
polkit.addRule(function(action, subject) { if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0) { var filepath = polkit.spawn(["cat", "/proc/"+subject.pid+"/cmdline"]); if(polkit.spawn(["basename", filepath]) == "steam\n") { return polkit.Result.NO; } } });
実行権限がないためにライブラリフォルダが追加できない
他のドライブに Steam ライブラリフォルダを別に追加している場合、次のようなエラーメッセージが表示されることがあります: "New Steam library folder must be on a filesystem mounted with execute permissions"。
/etc/fstab
でファイルシステムを正しいフラグでマウントするようにしてください。マウントパラメータのリストに exec
を追加します。user
や users
パラメータを使っている場合 noexec
もその中に含まれているので必ず exec
パラメータを記述するようにしてください。
Steam が steamapps
フォルダを見つけられないときもこのエラーは発生します。前のバージョンでは SteamApps
を使っていました。名前が小文字であることを確認してください。
Steam コントローラーが正しく認識されない
ゲームパッド#Steam コントローラーを見て下さい。
lib32-glibc はインストールされているのに32ビットの libc.so.6 が見つからないと表示される
Steam のランチャースクリプトは ldd
の出力をチェックして必要なライブラリがインストールされているかどうかを確認します。しかしながら、Steam の実行ファイルが破損しているなど、ライブラリが不存在以外の理由でも、チェックが失敗することがあります。
以下の出力を確認してください:
$ ldd ~/.local/share/Steam/ubuntu12_32/steam
もし ldd
がダイナミック実行ファイルではないと判断した場合、アップデートの際に Steam によってバイナリが破損した可能性が考えられます。以下のコマンドで問題が解決するはずです:
$ cd ~/.local/share/Steam/ $ ./steam.sh --reset
問題が解決しない場合、~/.local/share/Steam/
ディレクトリを削除してから Steam をもう一度起動してみてください。
Bumblebee/Primus などのカスタムコマンドでゲームを起動する
幸いにも Steam はカスタムコマンドを使ったゲーム起動のサポートを追加しました。これをするには、ライブラリページから、選択したゲームを右クリックして、プロパティをクリック、そして起動設定をしてください。Steam は %command%
タグを実際に実行するコマンドに置き換えます。例えば、Team Fortress 2 を1920x1080の解像度で primusrun を使って起動するには、次のように入力します:
primusrun %command% -w 1920 -h 1080
システムによっては、optirun の方が primusrun よりもパフォーマンスを発揮することがあります。ただし、起動してすぐクラッシュするゲームもあります。この問題は libGL の適切なバージョンをプリロードすることで修正できます。利用可能な実装を確認するには、次のコマンドを使用:
locate libGL
64ビットのゲームの場合、nvidia の64ビット libGL をプリロードすることができます。次の起動コマンドを使用:
LD_PRELOAD=/usr/lib/nvidia/libGL.so optirun %command%
Linux-ck カーネルを動かしている場合、schedtool を使ってゲームを SCHED_ISO (低遅延、CPU 負担を減らす) で起動することで遅延を減らしたりパフォーマンスを向上させたりすることができるかもしれません:
# schedtool -I -e %command% other arguments
ゲームを起動する際にスタンドアロンのコンポジタを終了する
%command%
スイッチを利用することで、ゲームや環境によってはラグやティアリングの原因となるスタンドアロンのコンポジタ (Xcompmgr や Compton) を終了することができ、ゲームを終えた後に再起動できます。ゲームの起動設定に次を加えて下さい。
killall compton && %command%; nohup compton &
上のコマンドの compton
はあなたが使っているコンポジタに置き換えてください。もちろん、オプションを %command%
や compton
に加えることもできます。
Steam は %command%
の後にプロセスは実行し Steam の状態はゲーム中になります。この例では、nohup
でコンポジタを実行するので Steam には付着されず (Steam を閉じても実行し続けます)、アンパサンドのあるコンポジタが実行されてからコマンドの行が終了して Steam の状態が戻ります。
ネイティブランタイムを使う
デフォルトで、Steam は利用するライブラリを全てコピーして Steam 自体にパッケージ化しており、それによってゲームが問題なく動作するようになっています。これは resource hog となる可能性があり、パッケージするライブラリが古くて重要な機能が欠けているかもしれません (特に、Steam が使っている OpenAL には HRTF と surround71 サポートがありません)。あなた自身のシステムライブラリを使うには、次のコマンドで Steam を実行してください:
$ STEAM_RUNTIME=0 steam
ただし、Steam が利用するライブラリが存在しない場合、正しく起動できなくなってしまいます。以下のコマンドを実行すると簡単に足りないライブラリを探すことができます:
$ cd ~/.local/share/Steam/ubuntu12_32 $ LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ldd $(file *|sed '/ELF/!d;s/:.*//g')|grep 'not found'|sort|uniq
ライブラリは32ビットでなくてはならないことに注意してください。つまり x86_64 環境を使っている場合 NetworkManager などを AUR からダウンロードする必要があるかもしれないということです。
ライブラリをインストールしたら、STEAM_RUNTIME=0 steam
で steam を実行して steam が自身のライブラリをロードしていないことを確認してください:
$ cat /proc/$(pidof steam)/maps|sed '/\.local/!d;s/.* //g'|sort|uniq
便利なリポジトリ
alucryd-multilib 非公式リポジトリには x86_64 でネイティブの steam を動かすのに必要なライブラリが全て含まれています。何らかの理由で、sdl2 や libav* をインストールしていても、Steam から使われないことがあります。Steam は独自に搭載されたライブラリを使用します。
必要なのは steam-libs
メタパッケージのインストールだけで、後は全てのライブラリがインストールされます。何かライブラリが欠けていたら報告してください。メンテナは既に lib32 パッケージをインストールしており、ライブラリが見過ごされている可能性があります。
Steam のスキン
インターフェースファイルをスキンディレクトリにコピーしたりファイルを修正することで Steam のインターフェースを完全にカスタマイズすることができます。
スキンのリストは Steam のフォーラム にあります。
Steam スキンマネージャ
Steam にスキンを適用するプロセスは AUR の steam-skin-managerAUR を使うことで単純化できます。このパッケージには Steam ランチャーの修正版も含まれておりウィンドウマネージャが Steam ウィンドウに枠を描けるようになっています。
結果として、Steam のスキンにはウィンドウのボタンがあるものとないもの、2つの種類があります。スキンマネージャはハックされたバージョンを使うかどうかあなたにたずねて、自動的に GTK+ テーマに対応するテーマを(見つけたら)適用します。もちろん、もうひとつの方のスキンを適用することも可能です。
パッケージにはデフォルトの Ubuntu テーマ、Ambiance と Radiance の2つのテーマが入っています。
Steam フレンド通知の位置を変える
方法 1: スキンを使う
通知コーナーを変更だけを行うスキンを作ることができます。手動でスキンを作成する時間を節約したい場合は mediafire にアップロードされたスキンを使って下さい。ここからダウンロード してホームフォルダに展開します (サブディレクトリには展開しないで下さい、つまり zip の中にある .local フォルダはホームディレクトリに移動する必要があります)。その後 Steam を開いて、設定から、インターフェースタブを開いて下さい。< デフォルトスキン >
と書かれたドロップダウンリストからお望みのスキンを選択すれば通知が移動されます。
ファイルを手動で作成してみたい場合、以下がその方法です。まずディレクトリを作成する必要があります:
$ mkdir -p $HOME/Top-Right/resource $ cp -R $HOME/.steam/steam/resource/styles $HOME/Top-Right/resource/ $ mv $HOME/Top-Right $HOME/.local/share/Steam/skins/ $ cd .local/share/Steam/skins/ $ cp -R Top-Right Top-Left && cp -R Top-Right Bottom-Right
それから好きなテキストエディタで修正したいファイルを開いてください。gameoverlay.style
はゲーム内のオーバーレイでのコーナーを変更し steam.style
はデスクトップでのコーナーを変更します。次の例では nano を使ってゲーム内のオーバーレイのファイルを編集します。
$ nano Top-Right/resource/styles/gameoverlay.style
そして開いたファイルの中にある Notifications.PanelPosition
エントリを探して適当な値に変更して下さい、例えば右上にするには:
Notifications.PanelPosition "TopRight"
この行はどちらのファイルでも同じです。3つの種類 (Top-Right, Top-Left, Bottom-Left) があるので満足するまでスキン毎にデスクトップ・ゲーム内オーバーレイのコーナーを調整して、ファイルを保存してください。
上で説明しているように Steam でスキンを選択すれば作業は完了です。このスキンファイルは違うディストリビューションでも Windows でも使用することができます (OS X にはデスクトップ通知の配置を決める別のエントリが存在します)。
方法 2: オンザフライパッチ
この方法は Steam が将来アップデートされても互換性があります。上のスキンファイルは steam の一部としてアップデートされオリジナルのファイルが変更されたような場合、スキンは steam のグラフィックの変更に追従しないため、変更される度に再作成する必要があります。また、この方法ではゲームの起動オプションで通知の位置を変更するパッチを実行するように指定することができるので、ゲームごとに通知の場所を変えることが可能です。
Steam はアップデートするたびに (起動する度に行います) 編集する必要があるファイルを更新するので、Steam を起動した後にファイルにパッチをあてるのが一番効率的です。
まず このパッチ(pastebin バージョン) が必要です。エントリを編集して "BottomRight" (デフォルト), "TopRight", "TopLeft", "BottomLeft" で変えることができますが元のファイルでは "TopRight" を使っています。このファイルを $HOME/.steam/topright.patch
として保存してください。
次に $HOME/.bashrc
にエイリアスを作成します:
alias steam_topright='pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd'
一度ログアウトしてログインしなおしエイリアスを更新してください。Steam を起動して完全にロードされるまで待ってから、エイリアスを実行します:
$ steam_topright
これでほとんどのゲームで通知が右上のコーナーに表示されるようになります。
ゲームによって使用するコーナーを変えたい場合、パッチを複製して他のコーナーのエイリアスを作成することができます。
この作業を自動化したい場合、steam の起動オプションはエイリアスを読み取れないためスクリプトファイルが必要です。ファイルのパスや名前は例えば $HOME/.scripts/steam_topright.sh
などにして、実行可能属性を付与する必要があります:
$ chmod +755 $HOME/.scripts/steam_topright.sh
ファイルの中身は以下のようになります:
#!/bin/sh pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd
起動オプションは以下のようになります:
$HOME/.scripts/steam_topright.sh && %command%
gameoverlay.style
フォルダと同じフォルダに steam.style
という名前の別のファイルが存在し、パッチをあてたファイルと同じように働くエントリが存在し、(ゲーム内ではなく)デスクトップの通知コーナーを変更しますが、このファイルを編集して使うには steam を起動する前に設定して steam がファイルを書き換えないように読み取り専用にフォルダを設定する必要があります。そのためこのファイルを編集する方法は、ディレクトリを読み取り専用にして steam が起動時に変更しないようにする (アップデートが壊れる可能性あり) か、方法1のようにスキンを作成するかのどちらかしかありません。