Steam

提供: ArchWiki
2015年7月28日 (火) 19:49時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

Wikipedia より:

Steam は、コンピュータゲームのダウンロード販売、デジタル著作権管理、マルチプレイヤーゲームのサポート、ユーザの交流補助を目的としたプラットフォームである。開発および運営はバルブ・ソフトウェアによって行なわれている。

Steam は Source Engine のゲーム (例: Half-Life 2, Counter-Strike) を遊ぶのに必要なプラットフォームとしてよく知られています。今日では、多くのデベロッパによる多数のゲームが提供されています。

目次

インストール

ノート:
  • 公式では Arch Linux はサポートされていません
  • Steam クライアントは32ビットアプリケーションなので、64ビット環境で動かすには multilib リポジトリを有効にする必要があります。また、重要な multilib ライブラリを取得するために multilib-devel のインストールをしてください。

Steam は公式リポジトリにある steam パッケージからインストールできます。64ビット環境を使っている場合は、最初に multilib リポジトリを有効にしてください。

Steam はこのディストリビューションをサポートしていません。そのため正しく機能させるためにユーザーが以下のようなフィックスを施す必要があります:

  • Steam は主として Arial フォントを使っています。使える Arial フォントには ttf-liberationSteam によって提供されているフォントがあります。アジアの言語を正しく表示するには 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 -bigpicture'
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;
...

トラブルシューティング

ノート: ここにまとめられているものに加えて、Valve のバグトラッカーや GitHub にバグ・フィックス・エラーが報告されています。

Steam ランタイムの問題

上流の GitHub issue トラッカー

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

これらのライブラリが存在することで起こる問題やエラーメッセージには以下のようなものがあります:

  • 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_CLOSE1 に設定してください。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/ にコピー) してください。

もしくは AURsteam-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-utilslib32-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 が有効にしてしまう

ノート: Valve が 2015年4月9日のアップデート で問題を解決したため、このフィックスは必要なくなりました。

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 を追加します。userusers パラメータを使っている場合 noexec もその中に含まれているので必ず exec パラメータを記述するようにしてください。

Steam が steamapps フォルダを見つけられないときもこのエラーは発生します。前のバージョンでは SteamApps を使っていました。名前が小文字であることを確認してください。

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% スイッチを利用することで、ゲームや環境によってはラグやティアリングの原因となるスタンドアロンのコンポジタ (XcompmgrCompton) を終了することができ、ゲームを終えた後に再起動できます。ゲームの起動設定に次を加えて下さい。

 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 スキンマネージャ

Steam にスキンを適用するプロセスは AUR の steam-skin-managerAUR を使うことで単純化できます。このパッケージには Steam ランチャーの修正版も含まれておりウィンドウマネージャが Steam ウィンドウに枠を描けるようになっています。

結果として、Steam のスキンにはウィンドウのボタンがあるものとないもの、2つの種類があります。スキンマネージャはハックされたバージョンを使うかどうかあなたにたずねて、自動的に GTK+ テーマに対応するテーマを(見つけたら)適用します。もちろん、もうひとつの方のスキンを適用することも可能です。

パッケージにはデフォルトの Ubuntu テーマ、Ambiance と Radiance の2つのテーマが入っています。

Steam フレンド通知の位置を変える

ノート: ゲームによっては位置の変更をサポートしていないことがあります。例えば XCOM: Enemy Unknown では使えません。

方法 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 として保存してください。

ノート: For pastebin to work you need to copy the raw data from line 1 through line 12 (line 12 is whitespace, but the patch will fail without it, this is why I provided a mediafire version too) you basically need to start copying behind the "-" sign at the bottom of the raw paste data and go up from there.

次に $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のようにスキンを作成するかのどちらかしかありません。