世界を動かす技術を、日本語で。

Arsのテストによると、ゲームはWindows 11よりもSteamOSでより速く動作する

概要

SteamOSは多くのゲームでWindowsよりも高いフレームレートを実現。 一部ゲームではWindowsの最新ドライバー導入で性能向上。 SteamOSのProtonやMesaドライバーの最適化が効果的。 WindowsはOSのオーバーヘッドが影響。 Microsoftもゲーミング向け最適化を強化中。

SteamOSとWindowsのゲームパフォーマンス比較

  • SteamOS は、テストした5本中4本のゲームで 明確なフレームレート向上 を実現
    • Borderlands 3のみ、 Windowsと同等 のパフォーマンス
    • 他4本は、 Lenovo純正Windowsドライバー よりもSteamOSの方が はるかに高性能
  • Returnal (グラフィック設定High・1920×1200解像度)では、
    • Lenovo Windowsドライバー: 平均18 FPS
    • SteamOS: 平均33 FPS
  • Asusの最新ドライバー をWindowsにサイドロードすると、全ゲームでパフォーマンスが 向上
    • Homeworld 3(Low設定)では SteamOSとほぼ同等
    • それ以外のゲームでは、 8%~36%低いフレームレート が続く
  • SteamOS は、 Proton によるWindows命令の変換レイヤーを介して動作
    • 直感に反しても高性能を維持
    • Valve のProton最適化と Mesaグラフィックスドライバー の改良が寄与
  • SteamOS は、 WindowsよりもOSのオーバーヘッドが少ない
    • ゲーム専用に近い環境を提供
  • Microsoft もゲーミング最適化を強化中
    • 新機能「 Xbox Experience for Handheld」発表
      • バックグラウンド処理や不要タスクを最小化
      • ゲーム中の「 より高いフレームレート」を目指す方針

まとめ

  • SteamOS は、現状で多くのゲームにおいて Windowsを上回るパフォーマンス
  • ドライバー最適化OSレベルの調整 が、今後のゲーミング体験向上の鍵
  • Microsoft もこの分野で積極的に改善を進行中

Hackerたちの意見

プロトンを「翻訳レイヤー」と呼ぶのはちょっと不公平かも。Win32 APIはシステムコールで定義されてるわけじゃなくて、DLLからエクスポートされた関数のセットだからね。プロトンはLinuxのシステムコールを使ってWin32 APIを実装したDLLを提供してる。WindowsもWindowsのシステムコールを使ってWin32 APIを実装したDLLを提供してるけど、実際には直接使うべきじゃないんだよね。

https://www.winehq.org/ では、呼び出しをその場で翻訳する互換性レイヤーって呼んでるから、「翻訳レイヤー」って言うのもそんなに不公平じゃないよ。

WineはWindowsのABI(APIじゃなくて)をLinuxのOSやユーザーランドに翻訳してる。翻訳っていうのは、通常WindowsのABIはWindowsで使うことを想定してるから、Linuxではネイティブじゃないってことだね。

互換性のためにO(n^2)の偶発的な複雑さでsscanf()を実装してるの?

ProtonやWineは、多くのNTシステムコールも実装してるから、Windowsプログラムがそれを直接使ってるのも理由だね。

Windows 11やSteamOSよりもハードウェアのテストみたいだね。すぐにドライバーの問題にぶつかったし。フレームレートも全体的にひどいし、あんまり良いハードウェアじゃないよ。

各テストで使ってるハードウェアは同じだよ。違うのはドライバーとOSだけ。Lenovoはこのデバイスの更新されたGPUドライバーを公式に出すのが遅かったけど、同じSoCは他のハンドヘルドでも使われてる。パフォーマンスについては、15Wのハンドヘルドが600WのPCや300Wのコンソールが数年前に苦労してたゲームをプレイしようとしてるからね。

私の経験から言うと、パフォーマンスのランキングはこんな感じかな:1. Proton + Wayland(Niri)でのLinux上のSteam 2. Proton + X11(Xfce)でのLinux上のSteam 3. Windows上のSteam 4. 他の手段で起動したLinux上のゲーム(特定のフラグや最適化を見逃してた可能性もあるけど、これは平均的な体験についての話)Linuxに切り替えたときに一番感じたのは、フレームレートの安定性が向上したこと。つまり、一時的にフレームレートが落ちることが少なくなった。ゲームがもっとしっかりして予測可能に感じた。X11/XfceからWayland/Niriに切り替えたときに感じた一番の違いは、フレームレートが全体的に上がったこと。これまで何度もこのジャンプに失敗してたから、今年の初めに成功してそのまま居続けたのは特筆すべきことだった。平均的にはゲームの起動が遅く感じるけど、Proton/Wine経由で起動してるから納得できるよね。

面白いことに、ネイティブのLinuxポートとWindows版の両方があるゲームで、Proton経由のWindows版の方がネイティブのLinux版よりも動作が良かったことがあった。Civ5、Civ6、Cities Skylines(1)ではこれが当てはまった。ただ、これらの限られた例ではパフォーマンスのランキングは同じにはならなかったけど、それは私の非ゲーミングハードウェアのせいだと思ってる。私はNvidia 3050のラップトップGPUでプレイしてるけど、Windowsの方がずっとパフォーマンスが良い。例えばCities Skylinesでは、Proton経由でLinuxだと約20fpsだけど(あなたが言った通り、安定してて大きなスパイクやドロップはない)、Windowsだと45〜60fpsが出る。人口が1.5万人くらいまではね。他のゲームも動作はするけど、パフォーマンスのせいで私にはプレイできない。Diablo 4はWindowsで中設定で問題なくプレイできるけど、Linuxでは低設定でも反応が鈍すぎる。とにかく、私の体験はこんな感じ。専用のゲーミングリグを持ってる人はLinuxでも全然大丈夫だろうけど、パワー不足のハードウェアを使ってる私たちは、残念ながらWindowsの方が良いみたい。

余談だけど、Niriは素晴らしいウィンドウマネージャーだよ。HNでPhoronixの記事を見て、オーバービューモードの追加について話してたから、思い切ってSwayから移行することにした。¹ 個人的には、Niriでフルスクリーンゲームや浮遊ウィンドウのハングアップが少なくなった気がするのは、X11がxwayland-satelliteで動いてるおかげかも。1: 一番難しかったのは、i3status-rsをサポートするバーを見つけることだった。CPUを食うGTKバーは好きじゃないから、i3bar-riverに落ち着いたよ。

WindowsゲームがSteamOS上でProtonを使うと速く動くんだから、開発者はSteamOSのAPIを優先してターゲットにすべきだよね。これでWindowsとの互換性を保ちながら、パフォーマンスを最大化できるし。UnityやUnrealみたいなゲームエンジンも、SteamOSを主要ターゲットにするべきだと思う。CIシステムも両方のプラットフォームをしっかりテストしないと。最適化のベースラインはWindowsじゃなくてSteamOSであるべきだよね。ValveはSteamOSのCI/CDファームを運営してるのかな?Rustを使ったテンプレートやライブラリがあって、これを使えば構造がしっかりしたプロジェクトをアップロードして、すべてのプラットフォーム用にビルドとテストができるようになるといいな。Rustは骨組みだけで、ゲームロジックはRustがリンクできるものであれば何でもいいんだ。

それはちょっと意味が分からないな。Windows APIが物事の動作の真実のソースだから。もしWindowsで動くゲームを作ってもProtonでは動かないなら、ValveはProtonをWindowsと同じように動くように修正するだろうけど、Protonで動くけどWindowsでは動かないゲームを作ったら、Protonのちょっとした特性に頼ることになるから、将来的にそれが保証されるわけじゃないし、他の何かがWindowsと同じように動く必要が出てきたら、ゲームが壊れちゃうよ。Steam Deckで動くかテストして、Protonで動かない機能は避けるべきだけど、基本的にはWindowsをターゲットにする必要があるよね。

それはさておき、99%のユーザーがWindowsを使ってて、SteamOSじゃないってことを無視しないで。ユーザーが使ってる環境でテストしなよ。ProtonはWin32の実装に過ぎないから、結局Windowsをターゲットにしてるだけだよ。

驚くべきことか? https://blog.zorinaq.com/i-contribute-to-the-windows-kernel-... https://news.ycombinator.com/item?id=38936868

もっといい見出し: 「LenovoのWindowsドライバはゲームに悪影響」

最近切り替えたばかりなんだけど(Archで、SteamOSじゃなくてArchベース)、結構安定してるよ。最初からそのままではなくて、ゲームにはちょっとした調整が必要だけど、そんなに難しいことではないよ。起動コマンドにパラメータを追加したりね。Protonのデータベースやコメントには、ゲームに必要な調整が説明されてることが多いから、戻ることはないと思う。

Windows XPの頃、Linux上でホストされたVMWare VMでWindowsを動かす方が、同じマシンで同じバージョンのWindowsをそのまま動かすより速いってことに気づいたんだ。これについてはいい説明ができなかったけど。

完全なLinuxゲーミングの最後の欠けている部分はアンチチートだね。前に調べたとき、主要なベンダーはカーネルセキュリティの欠如からサポートしたくないみたいで、サポートするところもゲーム開発者が許可しない(例えばDestinyみたいに)。AAAゲームがプレイできるようになったら、私は本当にWindowsを永遠に捨てるつもり。SteamOSはゲームにとって最高の出来事だよ。

今日のアンチチートはせいぜい応急処置だよ。OSのセキュリティ向上やこのソフトウェアに関するセキュリティの懸念など、いろんな理由でリングゼロのアンチチートは永遠には続かない。しかも、これは猫とネズミのゲームで、ベンダーがネズミなんだ。今の技術を使えば、もっと良い方法ができるはずだよ。クライアントが持つべき情報だけを送信し、サーバー側でチェックする組み合わせね。UTみたいなゲームがそれを組み込んで出荷されれば、今のひどいハックを忘れられることを願ってる。

専用サーバーのないマルチプレイヤーゲームは、結局行き詰まりだよね。ゲームをプレイしてる間に、カーネルにフックしてファイルやメモリをスキャンする「アンチチート」デーモンなんていらないし。専用サーバーのコミュニティは、中央集権的なマッチメイキングよりもプレイヤーベースの管理がずっと効率的だよ。

これ、今僕と弟にとって問題なんだ。弟は遠隔地の仕事に行ってて、一緒にSiegeかApexをプレイしたいんだけど、どちらもアンチチートが必要でLinuxをサポートしてないんだ。SSDにWindowsのためのスペースを割くのも嫌だし。¹: Rainbow Six: SiegeとApex Legendsのことね。

Linuxでゲームをしてるけど、全体的にはすごくいい体験だよ。少なくとも先週まではね、新しいハイエンドのノートパソコンを買ったんだけど。いろんなディストリビューションを試してみたけど、どれも微妙に失敗してイライラした。特に、Waylandにこだわったのが原因かな。ノートパソコンのHDRディスプレイをフルに活用したかったから。Nobara KDEはハイブリッドGPUモードの処理がひどくて、内蔵ディスプレイのSDRカラープロファイルが完全に壊れちゃった。HDRや外部ディスプレイに接続すると問題なかったんだけど、VRRを無効にした状態で外部ディスプレイを接続すると、グラフィックのアーティファクトがひどかった!VRRを有効にしたら消えたけど、ちらつきがすごくて。dGPUモードに切り替えたら全部解決したけど、grubが何も表示しなくなってUEFIにアクセスできなくなった。次にGaruda Dragonized Gamingを試したけど、スタイルがひどいと思った。でもOS管理ツールは気に入った。残念ながらdGPUを認識させられなかったから、次にBazziteを試した。すごくスムーズに動いて感動した!Atomic Linuxは普段の設定をちょっと複雑にしたけど、挑戦が面白かった。でも、ドックから外したら、カーネルが内蔵キーボードを常に再起動して、何もタイプできなくなった。結局、いつもの安全な選択肢、Pop!_OSに戻ることにした。インストールはいつも通りスムーズで、Btrfsを使うチュートリアルも参考にした。外部モニターを接続するまでは全てうまくいったんだけど、接続した途端にシステムがカクカクし始めた。今は諦めて、Windowsを再インストールしてAtlas OSを適用して、煩わしいものを減らした。ちょっと調整したら、バッテリーの持ちもまあまあになった。ゲームは期待通りに動くし、個人的な設定の quirks に対する代替案もほぼ見つけた。はっきり言っておくけど、Windowsへの移行は一時的なもので、経験した問題の修正が出てくるまでのことだよ。私のノートパソコンは最近のモデルだし、これらの問題を深く掘り下げる知識や時間もないから。6ヶ月後にはWindowsに飽きて、再挑戦する準備ができてると思う。