2015年03月12日

元Nvidia技術者「新作ゲームがバグだらけの理由・・・」 次世代APIが窮状を救う?


nvidia-logo.jpg

 最新作がバグばかりでまともに遊べない、なんてのがトレンドになってしまった近年のゲーム業界。

 中には発売から一年以上たってるのに不具合が残ってるケースも。



 そんな中、海外のゲーム開発コミュニティのGameDev.netで、NVIDIAの元ドライバー開発者を名乗る人間が、不具合を引き起こすその原因と見解を述べています。





ゲームの不具合を取り巻く現状

以下は投稿内容の抄訳要約になります。

■問題を抱えて登場するゲーム。対応に走るドライバー。


 AAAクラスのタイトルでさえ問題だらけでやってくる。致命的なAPIバイオレーションや、ドライバーに負荷をかける劣悪なシェーダー。これらが日々常々起きては発見され、パッチやドライバーの修正に追われている。


 すでに多くのオプションパッチがドライバー上に存在しているが、これらはゲームごとに切り替えて適用する必要がある。

 中にはシェーダーをまるごと取り替えるカスタムバージョンなどもあるが、メジャーな大作ゲームが発売される際に新しいドライバーがリリースされるのもそういった理由からだ。




■ドライバーも果てしなく膨大。開発に不親切なAPI


 そのドライバーが開発者の手に負えないほど巨大になっている。考えてみてほしい。100万から200万ものコードがハードウェアを抽象化するためだけに存在するのだ。APIのバージョン毎にさらに100万も追加されてしまう。

 コマンドの応答を扱うロジックだけでも1000近くあり、その内部の複雑さは膨大で曲がりくねっている。ドライバーの中のファストパスを確認するのでさえ非常にトリッキーな作業だ。

 さらにAPIはハードウェアのマッチングには大して役に立っていない。そのおかげでベストな状態の時でさえ、開発の把握しきれない事象の多くがドライバーの裏で生じてしまっている。




最適化が不十分なマルチスレッドとマルチGPU


 これに加えてマルチスレッドとマルチGPUが上記の問題をさらに厄介にしている。


 マルチスレッディングの最適化については、2005年より各社が本腰を挙げている。しかし世界有数のエンジニアが知識を絞りながらも、既存のドライバーやAPIでは、そのパフォーマンスゲインは非常に小さなものに留まっている。

 マルチGPU開発の方はさらにカタストロフィックで、仮にそれに取り組もうものなら、”神の手助け”が必要なほど複雑だ。デベロッパーがマルチGPUに取り組む場合、ソフト開発リソースの半分以上を消費してしまうだろう。


 いずれにしろ、マルチスレッディングのパフォーマンスアップも、マルチGPUの問題も、既存のAPIで解消することは困難だと投稿者は見る。



ドライバーでは限界。次世代APIに期待するしかない。



 究極的には、これらの問題を解消しようとしているのが新たなAPIだ。


 何故ゲームが不具合を抱えてくるのか?それはAPIが複雑だからだ。効率が悪いと気付かずにスローパスを選んでしまう要因が多々あり、ドライバー開発者もデベロッパーがミスをするということを知っているので、大抵のケースではその場しのぎのパッチを出すしかない。


 ドライバーのメンテナンスも容易ではない。AMDやNVIDIAはともかく、IntelやPowerVR等のIHVは、そのためのリソースを維持することができない。さらに重要なのが、開発者にレンダリングパイプラインの正確な記述方法を説明することだが、それもほぼ不可能になっている。

 GPUの性能を引き出すにも、ドライバーの最適化が必要になってくるが、ゲームソースコードをAMDやNVIDIAが物理的に取得し、解析した上でドライバーに適用しなければならない。しかしそれは現実的な手法とは言えない。


 また極端な話、ドライバーのデバッギングというのは不可能だ。それはゲームのパフォーマンスを下げるレンダリングパイプラインも含む。しかしメーカーは、競合との兼ね合いからこれらの問題を明かすことはないだろう。それがまたゲームとドライバー間のミスマッチを生んでしまう。






 いずれにしろ新たなAPIは正しいステップである。と投稿者は最後に結論を述べています。次世代APIに懸念材料がないわけではないのですが、ドライバーだけではどのみち限界があるということなんでしょう。

 またメモリ管理の明示化やパイプラインの単純化を目指す次世代APIは上記の問題を解決する糸口にもなります。

 そしてDirectXやOpenGLのこれまでのリビジョンが期待通りのものではなかったために、新たなAPIへの期待がなおさら大きくなっているようです。








 *大変興味深い意見ですが、参考程度でお願いします。

 またこの技術者Promitという方は、NVIDIAに居たのは数年前の話であること、インターンとしてDirectX関連のチームに居たということなのでその点も留意した方が良いと思います。

 本人は”自分はドライバーのスペシャリストとは言えないし、正直なとこ自分の仕事は未熟だった”とのことですが、ドライバーレベルの解析などを行っていたそうで、ドライバーやゲームにまつわる仕事は現在でも行っている模様。

 ちなみに、当時はDirectX10移行期で、VISTAでゲームがぶっ壊れまくったりとか、そりゃ大変だったみたいです。










訳文はけっこう端折ってます。ソースはMSや各メーカーの思惑など色々要点が飛ぶんですが、興味がある方は原文をどうぞ。



タグ:Mantle DirectX12
posted by 日々さか@海外 at 11:10| Comment(0) | TrackBack(0) | API (DirectX12、Vulkan、Mantle) | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/415474582

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。