インテルと Creative Assembly のコラボレーション

この記事は、インテル® デベロッパー・ゾーンで公開されている「Inside the Intel and Creative Assembly* Collaboration」の日本語参考訳です。


この記事の PDF 版はこちらからご利用になれます。

インテルは、ゲーム開発者がインテル® プラットフォーム上で最大限のパフォーマンスを発揮できるよう、以前から支援してきました。インテルのアプリケーション・エンジニアは、信頼できるアドバイザーとして、ゲームが利用可能な計算能力とリソースを最大限に活用して、ラップトップでも、カスタムゲーミング PC でも、素晴らしい体験を提供できるように支援します。

現代の CPU は、圧倒的なパワーとパフォーマンスをもたらします。ゲーム開発者にとって、増え続けるコア数とメモリーやその他のシステムリソースの革新は、よりインタラクティブな非プレーヤー・キャラクター (NPC)、より多くの現実世界の物理特性をモデル化したエフェクト、そしてよりリアルなキャラクター・アニメーションなど、優れた体験を可能にします。さらに、ゲームの市場拡大の可能性も秘めています。

インテル® プラットフォームの処理能力を最大限に活用するには、通常、慎重に練り上げられたコーディング手法が求められます。必要に応じて、システム上のすべてのプロセッサー・コアにワークロードを分散させます。しかし、ゲームなどの複雑なシステムでは、スレッド化だけでは十分ではなく、以下の要因がより重要になることがあります。

  • メモリーアクセスを管理するアルゴリズムの選択と設計
  • キャッシュを効率良く利用するデータ設計
  • 数学処理を高速化する SIMD (Single Instruction Multiple Data) 命令の使用
  • 高度なアーキテクチャー機能の調査と使用
  • コードのボトルネックを排除してパフォーマンスを引き出す、インテル® VTune™ プロファイラーやインテル® グラフィックス・パフォーマンス・アナライザー (インテル® GPA) などの利用可能なツールの使用

インテルは、これらの要因を誰よりもよく理解しており、ハードウェアを最大限に活用できるように、インテルはあらゆる規模の革新的なゲーム開発スタジオと長期的な関係を築いています。インテルのアプリケーション・エンジニアは、信頼できるアドバイザーとして、コンテンツ、コード、ゲームプレイを分析し、専門的なアドバイスを提供することで、ゲーム開発者が創造的なビジョンを実現するのを支援しています。

この記事では、過去 10 年間のインテルのデスクトップおよびモバイル向けマルチコア・プロセッサーの進歩について取り上げます。また、受賞歴のある『Total War*』 (英語) シリーズにおけるインテルと Creative Assembly (英語) の 10 年に渡るコラボレーションを紹介します。そして、コア数の増加、命令セットの拡張、メモリーおよびその他のサブシステム・リソースの進化、オンチップ・グラフィックス処理の最適化など、進歩するテクノロジーによって可能になった多くの技術革新を検証します。

この記事を読むことで、『Total War*』シリーズのゲームが、ラップトップからゲーミング PC まで、現在および将来のすべてのインテル® プラットフォームで最適に動作することを保証するため、Creative Assembly とインテルが使用した多くの手法を理解できます。


クリックして拡大

始まりは 2 つのコア

今日の激戦を極めるゲーム市場で注目を浴びるためには、卓越したパフォーマンスが求められます。

2009 年、インテル® Core™2 Duo プロセッサーは理想的なソリューションでした。画期的なパフォーマンスと効率性で業界の賞賛を集めていましたが、インテルのアプリケーション・エンジニアである Steve Hughes がこのプロセッサーを Creative Assembly に紹介したときには、市場ではまだ比較的新しいプロセッサーでした。

Creative Assembly のテクニカル・ディレクターである Charlie Dell 氏は、当時を振り返って次のように述べています。
「Steve が、1 つのチップに 2 つのコアが搭載されているのはトリックではないと主張していたのを未だに覚えています。彼は、ここに本当に 2 つのコンピューターがあるんだと言っていました。その時点まで、弊社とインテルの関係はそれほど緊密なものではありませんでしたが、コア・スケーリングが『Total War*』シリーズにもたらすメリットを認識したことで、それが一変しました。」

1 つのチップに 2 つのコアがあることで、Creative Assembly は 1 つのコアで『Total War: NAPOLEON*』のすべての AI コードを実行し、もう一方のコアで可能な限り多くのフレームをレンダリングできるようになりました。その結果、フレームレートが 300% 向上しました。

マルチコアとハイパースレッディングの違い

マルチコア CPU には、1 つのシリコンチップ上に 2 つ以上の実行コア (計算エンジン) があります。チップは 1 つのプロセッサー・ソケットに接続され、オペレーティング・システムは各コアを個別のプロセッサーとして認識します。

実質的に、最近の CPU はすべて少なくとも 2 コアを搭載しています。中には 8 コア以上を搭載したものもあります。すべてのマルチコア CPU は、複数のアプリケーションを同時に実行するマルチタスク機能を強化し、クロックサイクルまたはゲームティックごとにより多くの作業を行えるようにすることで、ゲームのパフォーマンスを向上させます。

一方、インテル® ハイパースレッディング・テクノロジー (インテル® HT テクノリー) は、複数のスレッドが 1 つの実行コアのリソースを共有することで、コアを効率良く使用できるようにします。マルチスレッド・アプリケーションをインテル® HT テクノロジーが有効なマルチコア・プロセッサーで実行すると、利用可能なハードウェア・リソースが効率良く使用され、コアごとに 2 つのスレッドを処理します。

すべてではありませんが、ほとんどのインテル® Core™ プロセッサーは、コアごとに 2 つのスレッドをサポートしています。

マルチコアとハイパースレッディングの違いの詳細は、「物理コアと論理プロセッサーの違い」 (英語) を参照してください。

なぜパフォーマンスが向上したのでしょうか? シングルコア実行では、AI コードは 1/10 秒ごとに更新します。AI ティック間にコアはできるだけ多くのフレームを描画します (図 1)。


図 1. シングルコア実行。AI ティック間にコアはできるだけ多くのフレームを描画します。

ゲームコードを 2 つのコアに分割することで、AI コードを 1/10 秒ごとに更新しつつ、レンダリング・スレッドで可能な限り多くのフレームを描画し、最後の 2 つの AI ティック間のデータをリニア補完できます (図 2)。コア 2 に AI を移動することで、コア 1 は AI ティックが処理されるのを待機する必要がなくなり、フレームレートが 300% 向上しました。


図 2. デュアルコア実行。コア 2 で AI ティックを 1/10 秒ごとに更新し、コア 1 はできるだけ多くのフレームをレンダリングします。

クアッドコアの登場

2010 年、第 1 世代インテル® Core™ プロセッサー・ファミリー (インテル® Core™ i3 プロセッサー、インテル® Core™ i5 プロセッサー、およびインテル® Core™ i7 プロセッサー) の登場により、モバイル (ラップトップ) とデスクトップ PC の両方でより多くのコアとより強力な統合グラフックス・プロセッサーを利用できるようになりました。

2010 年の第 1 世代インテル® Core™ プロセッサー・ファミリー

CPU モデル インテル® Core™
i3 プロセッサー
インテル® Core™
i5 プロセッサー
インテル® Core™
i7 プロセッサー
コア数 2 4 4
スレッド数 4 8 8

Creative Assembly では、2 つのコア向けにコードを開発した経験を基に、コア数とスレッド数の増加に対応しました。追加されたマルチコアの処理能力を利用して、『Total War: NAPOLEON*』の軍艦の帆布やロープの索具をアニメーション化しました。

Steve Hughes は次のように述べています。
「布とロープのシミュレーションには、簡単に並列化できる多数の反復的なタスクがあります。初めてコードを並列化する場合、同様の方法で開始することをお勧めします。Creative Assembly との共同作業では、これは以降の複雑な作業のよい経験となりました。」

チームは、アニメーション・コードを専用のスレッドで処理してフレームレートを向上する一方、前景オブジェクトを優先したり、遠くにあるほかのものをアニメーション化できることに気付きました。

このゲームの前景オブジェクトには、船やその帆布、ロープの索具などがあります (図 3)。船、帆、索具は背景オブジェクトでもありますが、背景オブジェクトの場合はすべて前景アニメーションよりも低い LOD レベルでレンダリングされます。追加されたコアにより、遠景でよりユニークなアニメーションを実行できるようになりました。また、距離に応じて LOD レベルを変えられるようになりました。つまり、より多くのコアを利用可能なマシンで、ゲームの視覚効果の品質が向上しました。


クリックして拡大

図 3. 『Total War: NAPOLEON*』のこのシーンのように、遠くのオブジェクトよりも
前景の船のレンダリングとディテールが優先されます。(画像の出典: Creative Assembly)

マルチコアとオンダイ・グラフィックス処理

2011 年、第 2 世代インテル® Core™ プロセッサー・ファミリーにインテル® HD グラフィックス 3000 が搭載されました。ゲームにとって、このオンチップ・グラフィックス・プロセッサーは、ディスクリート・グラフィックス・プロセッサーの代替となるものでした。第 2 世代インテル® Core™ プロセッサーを搭載したアルファ版ソフトウェア開発プラットフォームへの早期アクセスにより、Creative Assembly はインテル® グラフィックス向けにコードを最適化する最初の機会を得ることができました。

Charlie Dell 氏によると、『Total War: SHOGUN 2*』には多くのカスタムコードが含まれています。コア数とスレッド数は 2 倍の 4 コア、8 スレッドになりました。インテグレーテッド・プロセッサー・グラフィックスにより、処理能力が大幅に向上しました。これにより、Creative Assembly は、仮想カメラからの距離に応じて、異なる LOD レベルでさらにユニークなアニメーションを再生できるようになりました (図 4)。


図 4. 『Total War*』シリーズで使用されている手法の 1 つで、仮想カメラからの距離に応じて、
異なる LOD レベルでオブジェクトをレンダリングします。

しかし、新しい機能には新しい課題がつきものです。この場合、ピクセル・マスク・アレイ (PMA) のデプスストールが課題となりました。この問題は、第 8 世代インテル® グラフィックスまで続きました。Github* (英語) からこの問題に対するパッチを入手できます。

インテルと Creative Assembly は協力して、人気シリーズ『Total War*』の 6 つのゲーム『EMPIRE*』、『NAPOLEON*』、『SHOGUN 2*』、『ROME II*』、『WARHAMMER II*』、および『THREE KINGDOMS*』を開発しました。封建時代の日本、古代および中世のヨーロッパ、18 世紀のフランスなどの戦場から、魔法やモンスターが跋扈するファンタジーの世界まで、ゲームの舞台はさまざまですが、『Total War*』のタイトルには、以下の共通点があります。

  • プレーヤーは数千人の軍を指揮します。
  • 軍事行動の戦略と戦術はターン制です。
  • 戦闘はリアルタイムでストリーミングされます。
  • 最先端のアニメーション技術により、臨場感溢れる戦闘をシミュレーションします。

CPU、GPU、メモリーをすべて考慮する

これまでは、マルチコア・プロセッサーによってもたらされるスケーリングの利点に注目してきました。しかし、それはほんの一部でしかありません。システムにどれだけのコアがあっても、それらのコアとその上で実行されるコードは、システムの GPU とメモリーリソースをうまく利用しなければなりません。

つまり、より優れたスケーリングを達成するには、ワークロードを単一の CPU から複数のコアやスレッドに分散するだけでは十分ではありません。

Charlie 氏と Steve は、スケーラブルな並列コードを記述することは、CPU と GPU ワークロード間の絶え間ない戦いに挑むようなものだと言っています。

  • GPU 上の処理が多すぎると、マルチコアのスケーリングが得られません。
  • CPU 上の処理が多すぎると、全体のパフォーマンスが低下します。

Steve は次のように述べています。
「多数の戦闘部隊を追加する際に、CPU 負荷と GPU 負荷の数学的な関係の適切なバランスを取ることが『Total War*』では鍵でした。例えば、10,000 部隊を追加すると、GPU フレーム時間は 10,000 部隊 × 1 部隊の描画にかかる時間分長くなります。しかし、CPU では 10,000 部隊の準備にかかる時間は、10,000 部隊 × 準備にかかる CPU 時間 ÷ コア数になります。」

部隊数を増やすと、GPU ではすぐにボトルネックになることは明らかです。その結果、CPU のスケーリングが止まります。

疑似インポスター (後述) などの手法は、処理が必要な個々のインスタンス数を減らすことで、CPU 負荷を軽減します。積極的なカリングは、処理するジオメトリーの量を減らすことで、GPU の負荷を軽減します。

小さな並列タスクに分割されていないシリアルタスクは、CPU ボトルネックの主な原因となります。Steve は次のようにアドバイスしています。
「最適化されているが、スレッド化されていないタスクをより速く実行する最良の方法は、より高速で効率良い CPU で実行することです。」

デッドロックと競合状態は、エラーやクラッシュの原因となる一般的な要因であり、これらを見つけることが重要です。

ロックレス・プログラミングとは、スレッドの同期ポイントを設けることで、パフォーマンスを低下させる mutex (ロック) やクリティカル・セクションの使用を回避する方法です。

最小限の同期ポイントで実行することを目的としており、Creative Assembly では、これらの条件を特定するため、インテル® VTune™ プロファイラーなどのインテル® パフォーマンス・プロファイル・ツールを使用しました。

また、長年の経験から、正しくスピンしていないスレッドを見つけて解決しました。

チームは、以下のことも推奨しています。

  • 2 つのコアが同じキャッシュラインを操作しないようにします。
  • 定期的にパフォーマンスをプロファイルして、ホットスポットとパフォーマンスのボトルネックを見つけます。
  • メッシュのレンダリング順序を最適化するデータ構造にします。
  • インテル® グラフィックス・パフォーマンス・アナライザー (インテル® GPA) を使用して、インストルメンテーションによりホットスポットとボトルネックを特定します。
  • フレーム解析で計算負荷が最も高い呼び出しをピンポイントで特定して、CPU 依存および GPU 依存の問題を見つけて修正します。

市場シェアを拡大するためのスケーリング

インテル® Core™ i7 プロセッサーやインテル® Core™ i9 プロセッサーのような高性能プロセッサーを搭載した PC 向けにゲームをスケーリングすることは素晴らしいことですが、多くのプレーヤーはそれよりも低い性能のマシンでプレイしています。これには、ラップトップが含まれます。ラップトップには、通常、ディスクリート GPU カードではなく、オンチップのグラフィックス・プロセッサーであるインテル® グラフィックスが搭載されています。グラフィックスだけでなく、コンテンツをスケーリングすることで、さまざまな CPU で優れた体験を実現できます。これは、可能な限り多くのプレーヤーにリーチするのにも役立ちます。

「Steam* の使用数を見ると、『Total War*』をプレイしているプレーヤーの多くはラップトップを使用していることが分かります。」と Steve は指摘しています。この点を考慮して、2013 年の『ROME II*』では、Creative Assembly はマルチコアとインテル® グラフィックスの最適化の両方を行いました。

『SHOGUN 2*』の開発で学んだことを活かし、『ROME II*』ではマルチタッチ・サポートと AOIT (Adaptive Order Independent Transparency) の 2 つの機能を実装しました。

マルチタッチは、コントロール・サーフェス上の複数のタッチポイントを検出する機能であり、マルチタッチ対応デバイスでのゲームプレイの操作性を向上します。

AOIT は、半透明オブジェクトが重なっている部分の色配合を解析し、最終的なイメージに最も影響する 4 色の値を選択します。このアルゴリズムは、パーティクル・システムで生成される煙や、コンピューターによって生成される葉 (透明度により縁を柔らかく見せることが可能) において特に有用です。Creative Assembly によると、ディテールの向上は、訓練されていない目には分かりにくいものでした。

インテル® Iris® グラフィックスのピクセル同期拡張が AOIT サポートしたことで、競合状態を避けながら、さまざまな色の値の比較を素早く行えるようにしました。

新しい優先事項

ムーアの法則に従って、コア数とスレッド数は増加しました。これは、Creative Assembly が『ROME II*』をリリースしてから『WARHAMMER*』をリリースするまでの 4 年間で証明されました。その間、コア数とスレッド数は 4 コア、8 スレッドから、6 コア、12 スレッドへ、そしてさらに 8 コア、16 スレッドへと増加しました。その結果、さらに新しい可能性と課題が開発者にもたらされました。

Steve は次のように述べています。
「コアによるスケーリングでは、これが限界です。これは、マルチコア・プログラミングでは、ある時点まではコア数の増加に比例してパフォーマンスが向上しますが、それ以降はパフォーマンスが低下するためです。」
つまり、アムダールの法則 (英語) が働きます。

ある岩が別の岩と相互作用する物理エンジンを想像してみてください。2 つの岩の衝突は、比較的小さな処理能力を必要としますが、岩が山のようにある場合や、爆発した建物の破片の場合、衝突検出の複雑さは直線的に増加し、必要な処理能力は指数関数的に増加します。

これは、『Total War*』の大規模な軍隊にも当てはまります。戦場に多くの兵士を配備すると、それぞれが互いに衝突しないようにする必要があります。兵士の数は直線的に増えますが、必要な処理能力は指数関数的に増えます。

これは、人間や動物の皮膚、岩、木、建物、旗、葉、武器、モンスターなど、ほぼすべてのゲームのビジュアルにも当てはまります。ゲームのビジュアルや魅力を高めるため、より多くのコンテンツを追加することは、単純なことではありません。

Steve は次のように説明しています。
「スレッド化したコードは、メモリーアクセスに注意が必要です。多くの並列プロセスは、仮想メモリー、L2 および L3 キャッシュ、VRAM など、さまざまなメモリーにアクセスします。コア数が増加すると、メモリー管理とデータの扱いにより一層の注意が必要になります。」

これは、プロセッサー速度という別の課題につながります。コア数が増加すると、並列コードとシリアルコードを同時に処理する能力は、CPU の物理速度の影響を受けます。
「フレームレートはよく話題に上ります。コア数が増えれば、より高いフレームレートでレンダリングでき、より高速なコアではさらに高いフレームレートを実現できます。しかし、ゲームのフレームレートを上げるのではなく、利用可能なパフォーマンスで視覚効果の品質を高めるコンテンツを増やし、ユーザー体験をより充実させることができます。」と Steve は言っています。

次のように考えることができます。視覚効果の品質を高めるため毎秒 10 フレーム (FPS) で AI ティックを処理している場合、90FPSでゲームティックを処理することで、さらに高い品質の視覚効果を得ることができます。使用するコア数は同じですが、結果として 9 倍高速になります。

最大限のスピードアップを達成するには、効率良いレンダリング・パイプラインを実行しているかどうかが鍵となります。
「このために我々は多大な努力を払っています。レンダリング・パイプラインは、自動車の組み立てラインのようなものです。自動車メーカーは 45 ~ 90 秒に 1 台のペースで車を生産しているとよく言っていますが、一般的に 1 台の車は10~20時間、あるいはそれ以上の時間を組み立てラインで費やしています。レンダリング・パイプラインを組み立てラインと考えれば、適切に配置されている限り、コードはスムーズかつ効率良くパイプラインを流れていきます。」と Steve は説明しています。

Creative Assembly のレンダリング技術ディレクターである Tamas Rabel 氏は、Game Developers Conference 2019 において、『Total War: THREE KINGDOM*』の並列ワークロードのレンダリング・パイプライン命令キューについて技術的な詳細を披露しました。Tamas Rabel 氏のプレゼンテーションは、インテル® ソフトウェア・デベロッパー・ゾーン (英語) で視聴できます。

Steve は、次のように補足しています。
「デュアルチャネル・メモリー、インテル® Smart Caches、オーバークロッキング (モデル番号に「K」を含むプロセッサー)、インテル® Optane™ メモリーなど、インテル® ハードウェアの利用可能なすべてのシステムリソースを最大限に活用する必要がありました。」

ラボモード

注目すべき対象が変わったことで、インテルと Creative Assembly の協力関係が根本的に変わりました。
「我々のパートナーシップは、『Warhammer II*』に取り組み始めた頃に新たなステージへと発展しました。最適化とパフォーマンス・チューニングだけでなく、ゲームの設計においても協力するようになりました。」と Steve は振り返っています。

Charlie 氏は、新たな関係の最初の成果について、次のように述べています。
「6 ~ 8 個の超高速で高性能なコアを実行し、インテルとの共同作業で得たすべてのコーディング技術を使用することで、オープンな戦場に何千人もの兵士を投入できるようになりました。しかし、ほかの戦闘では課題が持ち上がりました。」
例えば、包囲戦で何千人もの NPC が包囲塔や城壁と相互作用しなければならない場合、オープンフィールドの戦闘ではうまく機能するルールが適用できませんでした。


クリックして拡大

図 5a. 『Warhammer II*』のラボモード・コントロールでは、通常は表示されない
パラメーターをプレーヤーが制御できます。(画像の出典: Creative Assembly)

それほど多くの兵士を投入する物理的スペースがなかったためです。また、最新の処理能力とレンダリング能力によって可能になった大量の兵士に対応するためゲームのルールを変更するには、すでに開発サイクルが進んでおり遅すぎました。ゲームのルールを変更する代わりに、Creative Assembly はその計算処理能力を競争上の優位性を得るために利用しました。「ラボモード」を発明したのです。

『WARHAMMER II*』のラボモード (図 5a と 5b) は、通常は表示されないパラメーターをユーザーが調整できるようにします。重力、爆発、ダメージ、その他多くのエフェクトを突然大きくしたり、小さくしたり、またはオフにすることが可能です。

その結果、壮大で荒唐無稽な戦いになることがしばしばありました。例えば、プレーヤーが爆発の威力を大きくしたり、小さくすると、何かが爆発したときに、兵士は戦場を横切って何百メートルも飛んでいくことになります。場合によっては、スペース外に飛んでいくこともあります。


クリックして拡大

図 5b. 『WARHAMMER II*』のラボモードでは、プレーヤーが巨大な兵器や
モンスターを作成することができます。(画像の出典: Creative Assembly)

この機能は、プレーヤーに非常に好評でした。YouTube* には、ラボモードのゲームプレイ動画が多数投稿されました。Creative Assembly は、宣伝用の公式トレーラー (英語) も作成しました。

プレイフィールドの継続的なレベル化

2019 年には、メイン・ゲーム・モードの『Total War: THREE KINGDOMS*』で部隊のサイズが大きくなり、リアルさが増しました。
「Creative Assembly はインテルと協力して、『Total War*』を幅広いハードウェアでプレイできるように努めています。驚異的な数の兵士を戦場に投入できることは、シングルプレーヤー・モードや、同等の性能のコンピューターを使用する他のプレーヤーと対戦する際には素晴らしい機能です。しかし、あるプレーヤーがカスタムゲーミング PC を使用し、別のプレーヤーが既製のノートパソコンを使用して対戦する場合にも機能させることは、常に課題です。」と、Steve は述べています。

第 9 世代インテル® Core™ デスクトップ・プロセッサー (その他のチップも利用可能) (英語)

CPU モデル インテル® Core™
i5-9600K プロセッサー
インテル® Core™
i7- 9700K プロセッサー
インテル® Core™
i9-9900K プロセッサー
コア数 6 8 8
スレッド数 6 8 16
周波数 最大 4.60GHz 最大 4.90GHz 最大 5GHz

第 9 世代インテル® Core™ デスクトップ・プロセッサー (その他のチップも利用可能) (英語)

CPU モデル インテル® Core™
i5-9400H プロセッサー
インテル® Core™
i7-9750H プロセッサー
インテル® Core™
i9-9980HK プロセッサー
コア数 4 6 8
スレッド数 8 12 16
周波数 最大 4.30GHz 最大 4.50GHz 最大 5GHz

第 9 世代インテル® Core™ プロセッサーの機能:

  • 最大 8 コア、16 スレッド
  • 最大 64GB デュアルチャネル DDR4 2666 メモリーをサポート
  • インテル® UHD グラフィックス 630 で 4K 動画と 360 度映像を提供
  • ソリッド・ステート・ストレージ搭載インテル® Optane™ メモリーでロードと起動時間を短縮
  • モデル番号に「K」を含むプロセッサーでオーバークロッキングをサポート

「我々は、Creative Assembly がインテル® プラットフォームを最大限活用する戦略を立てられるように支援しました。」と Steve は続けます。最もよく使用されるゲームデータを 1 つのストレージファイルにまとめてインテル® Optane™メモリーにロードするなど、比較的簡単な作業もありました。これにより、重要なゲームコンテンツを素早く取得でき、システムの応答性が非常に高速になります。

より複雑な戦略もありました。例えば、『THREE KINGDOMS*』では都市の大きさに特別な注意が必要でした。都市には多くの建物があるだけでなく、それらの建物はすべて破壊可能でした。

建物が破壊された際に、スケーラブルな量の破片や瓦礫をレンダリングする最適な方法を見つけることは、レンダリングの課題の 1 つです。Creative Assembly とインテルのエンジニアは、過去の『Total War*』シリーズの開発経験から学んだ技術と教訓を応用して、さまざまな LOD 手法を効果的に使用しました。

その一例である擬似インポスターは、カメラからの距離に基づいて異なる LOD で建物をレンダリングするために使用され、低電力、中電力、高電力のシステムでパフォーマンスを向上させるのに役立ちました。Creative Assembly は疑似インポスターを使用して、2 つの LOD レベル (200 トライアングル未満と 50 トライアングル未満) で低ポリゴン数 (200 トライアングル未満) のキャラクターをレンダリングしました。

『WARHAMMER*』までは、事前にレンダリングされたアニメーションを使用する古典的なビルボードシステムを採用していました。パーティクル・システムのスパークメーカーには、数百メガバイトのビデオ RAM (VRAM) が必要になることがあります。その場合、保存できる素材情報が限られてしまうため、拡散色しか保存できませんでした。つまり、槍を持った兵士達は区別することができず、遠くに行くほど効果が増幅されました。対立する軍隊や部隊を区別するため、同じ隊の兵士を色分けしていました。

『WARHAMMER*』では、疑似インポスター手法により、アニメーションで従来の運動学的な骨格の使用が可能になりました。骨ごとに数ビットしか使用しませんが、利用可能な PC 性能に応じてスケーリングする、よりリアルな効果を達成しました。

Steve は、最初からハイパースレッディングを念頭にレンダリング・パイプラインを設計することの重要性を強調しています。
「ゲーム内のすべてのスレッドを調整するため、慎重にバランスを取ります。ベストプラクティスとして、ハイパースレッディングの恩恵を最大限に受けるため、プロジェクトの最初にハイパースレッディングを考慮して計画を立てることをお勧めします。」

これは、CPU と GPU でワークロードをできる限り高速に動作させることと、CPU と GPU のワークロードのバランスを取ることのトレードオフに戻ります。

Steve は次のアドバイスを提案しています。

  • 見えないものは描画 (カリング) しないようにします。
  • 可能な場合は LOD と疑似インポスターを使用して、バーテックス数を減らします。
  • 複雑さの異なる幅広いレンダリング手法を用意して、ターゲット応じて最適な手法を選択することで、シェーダーの負荷を減らします。
  • コストが高いシーン要素を特定して最適化します。
  • メインスレッドとグラフィックス・スレッドの両方でタスクをスレッド化します (『Total War*』ゲームには、ゲームを実行するメインスレッドと、コンテンツを準備して GPU へ送信するグラフィックス・スレッドの 2 つのスレッドがあります)。

「どのターゲットマシンでも CPU と GPU がボトルネックにならないように、CPU 負荷と GPU 負荷のバランスを取ることが目標です。」と Steve は述べています。

王朝モード

『WARHAMMER*』のラボモードがプレーヤーに非常に好評であったため、Creative Assembly はインテルのエンジニアと協力して、ラボモード開発で学んだことを活かし、高性能 PC を持つプレーヤー向けに新しいアーケードスタイルのゲームプレイ・モードを作成しました。王朝モードでは、個々のプレーヤーまたはチームが 3 人のヒーローとして押し寄せる敵の部隊と戦ってポイントを獲得します。


クリックして拡大

図 6. インテルと Creative Assembly が協力して開発した新しいアーケードスタイルのゲームプレイ・モード。
プレーヤーは 3 人のヒーローを選択して、押し寄せる敵と闘います。(画像の出典: Creative Assembly)

『Total War*』シリーズでは、軍隊は「部隊」(兵士のグループ) で構成されています。新しいモードは、PC の性能に応じて、より大きなサイズの部隊をレンダリングします。第 9 世代インテル® Core™ i9 プロセッサーを搭載したマシンなど、コア数が多く、高速なプロセッサーを搭載したマシンでは、フレームレートが大幅に向上します。これは、部隊のサイズや相互作用が大きいほど CPU に負荷がかかるためです。しかし、必ずしも低い性能の CPU が追加される CPU 負荷をうまく処理できないわけではありません。


クリックして拡大

図 7. 高速な高性能 PC で王朝モードでプレイすると、敵の部隊が数千の兵士で構成されます。(画像の出典: Creative Assembly)

まとめ

圧倒的なインパクトとパフォーマンスが重要な役割を果たすゲームでは、高速で高性能なインテルのコアが、あらゆるインテル® プラットフォームで最高のゲーム体験を提供します。

「10 年以上にわたり、インテルと Creative Assembly は協力して、最小要件の PC でもプレイでき、ハイエンドの PC では驚異的な体験を提供するゲームの開発に取り組んできました。」と Charlie 氏は述べています。

インテルのアプリケーション・エンジニアは、コンテンツ、コード、ゲームプレイを分析し、専門的なアドバイスを提供してきました。シェーダーやインテル® グラフィックス拡張の形でコードを提供することもありました。そして、インテルの協力はゲームの設計にまでおよび、『WARHAMMER II*』と『THREE KINGDOMS*』のプレーヤーを喜ばせました。

Creative Assembly は、リリース前のインテル® ソフトウェア開発製品と新しいハードウェア・プラットフォームのテストに協力しました。定期的なサポートとオンサイトのエンジニアリング会議に加えて、集中的なプロファイルとデバッグ作業により、プロジェクトの進行を確実にしました。その過程で、両チームは豊富な知識を共有しました。常に新しいことを学び、新しい目標を達成し、新しいハードウェアやソフトウェアを吸収しました。

結果的に、Creative Assembly は、あらゆる PC プラットフォームの性能を最大限に活用し、ラップトップや高性能のゲーミング PC で優れたパフォーマンスを発揮する、受賞歴のあるタイトルをリリースすることができました。そしてインテルは、ゲームプレイを未来へと導く新技術への投資を続けています。

今後、インテル® プラットフォームが、どのような創造的なビジョンを実現してくれるのかが楽しみです。

関連情報

インテル® プラットフォームの詳細と、インテル® ソフトウェア・ツール、ケーススタディー、サンプルコード、ハウツーガイドは、こちら (英語) を参照してください。


製品とパフォーマンス情報

1 インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804

関連記事