第626回でも紹介したように、現在ではUbuntu上で数多くのWindows用ゲームが動作するようになっています。第626回が公開された頃はベータ版の扱いであったProtonも、最近のSteamクライアントではデフォルトで有効化されており、設定をいじる必要すらありません[1]。そんなわけで今年のゴールデンウィークは家に引き籠って、Steamの積みゲーを崩すぞと意気込んでいる方もいるのではないでしょうか。
「ゲーミングPC」
ゲームがどれだけ快適に遊べるかの指標のひとつが
一般的な60Hzのディスプレイを使用しているのであれば、それと同じ60FPSに近い値をキープするのがひとつの目安です。これよりも大きくフレームレートが落ちると、ゲーム体験は著しく低下してしまいます。もしもフレームレートの低下が発生する場合は、画質を犠牲にしてでも、フレームレートを確保する方がよいでしょう。これはゲーム側の設定で解像度を下げたり、テクスチャの品質を落とすことで調整するのが一般的です。


ですが最適な設定を探るには、当然ですが現在のフレームレートを可視化できなければ始まりません。そこで今回は、UbuntuでSteamタイトルのFPSを計測する方法を紹介します。
Steamビルトインのフレームレート表示機能
Steamには現在のフレームレートを表示する機能が用意されています。Steamクライアントを起動したら、メニューから


OpenGLのゲームでフレームレートを表示させる
OpenGLを利用しているアプリでは、環境変数GALLIUM_
」
$ sudo apt install mesa-utils $ GALLIUM_HUD=fps,frametime glxgears

OpenGLを利用したSteamのタイトルでこの機能を利用するには、タイトルごとに起動設定を変更するのが手軽です。ライブラリから設定したいタイトルを右クリックして
GALLIUM_HUD=fps,frametime %command%

環境変数GALLIUM_
に
GALLIUM_HUD
のヘルプを表示する$ GALLIUM_HUD=help glxgears
DXVKのフレームレート表示機能
Direct3Dを用いているWindows専用タイトルは、API変換レイヤーを通し、クロスプラットフォームの3DグラフィックAPIであるVulkanに変換することで、Linux上で実行されています。こうしたタイトルでは、環境変数DXVK_
」
DXVK_HUD=1
を設定するDXVK_HUD=1 %command%
DXVK_HUD=full
とすると、すべての情報を表示できる
設定できる項目など、詳しくはDXVK HUDのドキュメントを参照してください。
MangoHudのインストール
フレームレートの低下が発生していないかのチェック程度であれば、これらの方法でも十分でしょう。ですがフレームレートの変化をもっと詳細に記録したり、それこそグラフィックボードのベンチマークを取りたいような場合は、ログの記録が可能な計測アプリを使うと便利です。Ubuntuで動作するフレームレート計測アプリとしては、MangoHudがあります。
MangoHudはUbuntuのリポジトリにパッケージがあり、APTでインストールすることも可能です。しかし筆者が試したところ、Ubuntu 22.
$ git clone https://github.com/flightlessmango/MangoHud.git $ cd MangoHud $ ./build.sh build $ ./build.sh install
MangoHudの設定
前述の手順でビルドとインストールを行うと、/usr/
」~/.config/
」
$ mkdir -p ~/.config/MangoHud $ cp /usr/share/doc/mangohud/MangoHud.conf.example ~/.config/MangoHud/MangoHud.conf
基本的にはデフォルトの設定のままで動作するのですが、後述するログファイルの記録のため、output_
の設定だけは行っておきましょう。~/.config/
」output_
」#
を削除)
# output_folder=/home/<USERNAME>/mangologs
↓
output_folder=/home/mizuno/mangologs
ホームディレクトリ以下に
$ mkdir ~/mangologs
Steamのゲーム画面にMangoHudを表示するには、起動オプションを以下のように変更します。なおMangoHudは、OpenGL/
mangohud %command%
フレームレートを計測する
前述の起動オプションを設定した上でゲームを起動すると、画面左上にMangoHudが表示されます。

ゲームをプレイ中に、キーボードの左Shift+F2キーを押してください。フレームレートの記録が開始されます。そして再度同じキーを押すことで、記録を終了します。

ログは先ほどMangoHud.
ファイルで指定したパスに、

また自分で集計するのが面倒だというのであれば、同じディレクトリ内に出力されているサマリーを見るのがよいでしょう。ゲームタイトル_記録日時_summary.
」
- 0.
1% Min FPS (下位0. 1%のFPSの平均値) - 1% Min FPS
(下位1%のFPSの平均値) - 97% Percentile FPS
(97パーセンタイル値) - Average FPS
(FPSの平均値) - GPU Load
(GPU負荷) - CPU Load
(CPU負荷)
ゲームによっては画面暗転時やロード時など、瞬間的にフレームレートが低下、あるいは向上することがあります。そのため単純に最大/最小FPSや平均値を参照してしまうと、こうしたスパイクに引っぱられ、実際のゲーム中のFPSとは、大きく乖離した値が出てきてしまうこともあります。
そこでベンチマークではパーセンタイル値を使い、
また0.
MangoHudを利用すれば、グラフィック設定をカスタマイズして自分なりの落とし所を探ることはもちろん、ゲームごとにグラフィックボードのベンチマークを取ることも簡単です。たまにはゲームを遊んでみたいけど、ゲームのためだけに高いグラボを買うのはちょっと……という方も多いでしょう。ですがフレームレートを参考にゲーム設定を見直してみると、普段使いのPCでも、意外とそこそこゲームが動いてしまうかもしれませんよ。
なお筆者はなんともならなかったので、RTX 3070を購入しました。