ページ

2012年8月5日日曜日

SteamのLinuxクライアント開発は順調らしい

先日、発表されたValveのSteamプラットホームのLinux対応ですが、公式ブログで経過発表が行われたようです。現在のテスト対象は以下の構成なようです。
Hardware
Intel Core i7 3930k
NVIDIA GeForce GTX 680
32 GB RAM

Software
Windows 7 Service Pack 1 64-bit
Left 4 Dead 2
Ubuntu 12.04 32-bit
以前伝えられた通り、IntelのCPUとNVIDIAのディスクリートGPUの構成みたいですね。とはいっても、AMDやIntelといった構成でもテストしているそうですけど。その構成で「Left 4 Dead 2」をプレイした際の各FPSの値が以下のようになったそうです。ちなみに解像度は「1280 x 1024」だそうです。
Windows(Direct3D) 270.6 FPS
Windows(OpenGL) 303.4 FPS
Ubuntu(OpenGL) 315 FPS
何とUbuntuのOpenGLが315 FPSと一番速く、ついでWindowsでのOpenGLが303 FPSと二番目に速かったそうです:-P 意外にもWindowsのDirect3Dが270 FPSと数値上では一番遅かったみたいです。これにはValveのLinuxチームも驚いたそうです。予想ではDirect3Dが一番速いだろうと思っていたそうなので……。

ちなみに一番最初にUbuntuのOpenGLへ移植した際のFPSは「6 FPS」だったようです。まぁ移植というのは速さよりも正確さ、安定さが第一ですからね。彼らもまずは安定動作するようになった段階で、具体的なスピードアップのチューニングを始めたそうです。具体的なチューニング方法ですが、大雑把に分けて以下の3つを行ったそうです。
Modifying our game to work better with the kernel
Modifying our game to work better with OpenGL
Optimizing the graphics driver
まずはL4D2(Source Engine)のLinuxカーネルへの最適化。メモリ・アロケータ等の最適化らしいですが、正直素人の私にはよく理解出来てません。

2番目はL4D2(Source Engine)のOpenGLへの最適化。こちらも具体的には理解出来てませんが、様々なオーバーヘッドの低減やレンダラーの最適化等って事ですかね。いや、いい加減で申し訳ないですけど:-(

3番目はValve内での最適化ではなく、UbuntuのGPUドライバー自体の最適化みたいですね。具体的にはNVIDIA、AMD、そしてIntelといった各ベンダーとの話し合いですね。

NVIDIAとAMDのドライバーは残念ながらプロプライエタリなドライバーが当面の目標なので具体的な改良点は判りませんが、Intelだけは完全にオープンソースな開発なので、どのような話し合いが行われ、具体的にはどの辺りを最適化していくかといった情報が既に公開されています。

話によるとPhoronixの中の人が、ValveとIntelのオープンソースGPU担当の中の人同士を取り持ったらしいです。それまでValveとIntelは、そこまで親しい間柄ではなかったそうです。まぁValveのゲームを遊ぶ場合、Intelの内蔵GPUじゃ快適に遊べる訳じゃないですからね……。ただ、今回の会談の際に、何とValveの中の人がIntelの中の人にL4D2のソースコードそのものを渡して、最適化に役立てて貰ったらしいです。詳しくは判りませんが、NDA等の細かい指定は無かったらしい? いやぁなかなか大胆ですなぁ:-P

既にその成果物である改良点がIntelのオープンソースドライバーにコミットされてきているというから素晴らしい限りです。確かに現状のIntelの統合GPUじゃ快適に遊べる段階では無いでしょうが、最近のIntelは、CPUよりもGPUの強化へと方向性を変えてきているらしいので、あと2世代くらいすれば快適にValveのゲームならば遊べるようになるかもしれませんね:-P

ちなみにNVIDIAのオープンソースGPUドライバーである「Noveau」の開発者ともPhoronixの中の人経由で話をしたそうですが、特に資金援助等は必要としておらず、欲しいものとすれば、NVIDIAからの詳細なドキュメントくらいなので、取り敢えずValveがNVIDIAのケツを引っ叩いてと伝えたそうです:-P

Noveauの中の人の話だと「別にお金の為に開発している訳じゃないし、現状欲しい情報も電源管理部分のドキュメントくらいだしなぁ」との事です。特にNDA無しでの情報開示が一番ありがたいそうです。とにかくNVIDIAはNDAが厳しいらしいので……。

他の情報としては、Linux版とWindows版では、描画のクオリティに差は(ほとんど)無いらしいです。以前のMac版では多少の差があった(ある?)らしいですけど。他には仕様しているOpenGLのバージョンは「3.x」。正直、OpenGL 4.x系はまだ早いですしねぇ。というか、WindowsのDirect3D自体が9世代ですし。そして、一番重要そうな情報が以下の点ですかね……。
We use a modified abstraction layer (based on the original Mac OS X work) that translates Direct3D calls to the proper OpenGL calls. This layer has received the most work but changes have also been made above this layer that resulted in improved performance.
よく理解していませんが、やはり以前の情報にあったように、基本はDirect3Dで、何らかの「変換層」を使用してOpenGLに対応している? みたいですね。以前の話では、Wineのようなラッパーかと思いましたが、どうやらDirect3D部分をOpenGLに変換する部分だけみたい?

合っているのか判りませんが、既に「MojoShader」というモノが存在しており、これに近いのかなぁなんて思っているのですが、もしかしたら全然違うモノなのかも知れません……。ちなみにMojoShaderの説明は以下の通り。
MojoShader is a library to work with Direct3D shaders on alternate 3D APIs and non-Windows platforms. The primary motivation is moving shaders to OpenGL languages on the fly. The developer deals with "profiles" that represent various target languages, such as GLSL or ARB_*_program.
このMojoShaderは、ブログで何回か取り上げている凄腕のプログラマー「Ryan C. Gordon」氏が、かつてEpicの「Unreal Tournament 3」をLinuxへ移植する際に開発したシロモノで、2008年にオープンソースソフトウェアとして公開されたモノらしいです。

残念ながら、諸般の事情の為にUnreal Tournament 3のLinux移植は未公開のままですが、他にも以下のようなゲーム等で使われているそうです。
Unreal Tournament 3 uses MojoShader with its OpenGL renderer.
Killing Floor uses MojoShader for OpenGL motion blur and bloom effects.
Unity uses MojoShader's preprocessor on their HLSL code before passing it to Cg.
Super Meat Boy uses MojoShader for its Linux port.
Shank uses MojoShader on Mac and Linux to support Effect Framework files.
This benchmark uses MojoShader's assembler to test the benefits of offline compiling of shaders.
Psychonauts uses MojoShader on Mac and Linux, flexing its support for Shader Model 1.
多くはRyan氏が手掛けた「Humble Indie Bundle」のゲームに使用されていますが、いま話題の「Unity」にも使用されるなど、実力は折り紙付きなようです。

Valveが使用しているラッパーとMojoShaderが同じなのかは判りませんが、似たようなコンセプトなような気が、個人的にはしています。

長くなったので、あともう一つだけ書いて終わりますが、今回のLinux移植についての詳細は、近々開催される「SIGGRAPH 2012」で発表されるらしいです。他にも、OpenGLの新板「OpenGL 4.3」やiPhone、Android等で使われているOpenGL ESの新板「OpenGL ES 3.0」等がお披露目されるらしいので、こちらも見逃せない内容になりそうです:-P

あ、最後にもう一つ。以前チラッと書いた「Serious Sam 3」のLinux対応ですが、どうやら本当だったみたいですね。我ながら、なかなかの情報通っぷりですわ:-P

#外部リンク
Faster Zombies! | Valve
http://blogs.valvesoftware.com/linux/faster-zombies/

The zombies cometh...
http://www.paranormal-entertainment.com/idr/blog/posts/2012-07-19T18:54:37Z-The_zombies_cometh/

MojoShader
http://icculus.org/mojoshader/

SIGGRAPH 2012
http://s2012.siggraph.org/

Croteam - Get Serious!
http://croteam.com/

[Phoronix] Valve's L4D2 Is Faster On Linux Than Windows
http://www.phoronix.com/scan.php?page=news_item&px=MTE1MjI

[Phoronix] Valve & Intel Work On Open-Source GPU Drivers
http://www.phoronix.com/scan.php?page=news_item&px=MTE0NDE

[Phoronix] One Week To SIGGRAPH OpenGL Announcements
http://www.phoronix.com/scan.php?page=news_item&px=MTE0OTI

[Phoronix] Serious Sam 3 Will Be On Steam For Linux
http://www.phoronix.com/scan.php?page=news_item&px=MTE0NjM

#内部リンク
BLOG.MINAWA.NET: Steam Box の謎 その2
http://blog.minawa.net/2012/03/steam-box-2.html

BLOG.MINAWA.NET: Linux版Steamのその後
http://blog.minawa.net/2012/04/linuxsteam_22.html

BLOG.MINAWA.NET: Electronic Artsの発表って、コレ? と、おまけ情報
http://blog.minawa.net/2012/05/electronic-arts.html

BLOG.MINAWA.NET: ValveがLinux版Steamを正式にアナウンス
http://blog.minawa.net/2012/07/valvelinuxsteam.html

0 件のコメント:

コメントを投稿