World of Warshipsのやり方:エクスポートの自動化とコンテンツの検証。 BigWorldエンジン-ゲームエンジン-ゲーム開発者向けファイル-ゲーム開発BigWorldゲームエンジン

この投稿では、ゲーム開発者に引き続き質問をします。 今回のインタビューは、プロジェクト「」のテクニカルディレクターであるMikhailZhivets氏によるものです。 Wargaming.net.

「NVIDIAWORLD」: プロジェクトで使用しているグラフィックエンジンは何ですか? 最小で推奨されるものは何ですか システム要求? それらは特定の機能によるものですか、それとも3Dマップの特定のレベルの普及によって導かれましたか? 最新世代のグラフィックカードのアクセシビリティを使用していますか、それとも標準をターゲットにしていますか?

World of Tanksプロジェクトは、BigWorldグラフィックエンジンを独自の変更で使用しますが、プロジェクトの詳細のために変更する必要がありました。 エンジンの機能は、たとえばWorld of Warcraftで行われているように、マップの動的にロードされた部分を持つオープンワールドに焦点を合わせていることです。 私たちは、アーティストのスケッチに近いモニター画面に画像を作成し、それらをシステム要件に適合させることができるテクノロジーを使用しようとしています。

「NVIDIAWORLD」: NVIDIAとATIのビデオカードはプログラミングの点で大幅に異なりますか? DirectXまたはOpenGLを介して記述し、両方のベンダーの効率的なコードを取得することは可能ですか、それともベンダーごとに異なるバージョンの関数を作成する必要がありますか? どのようなアプローチを使用しましたか?

M. Zh。:さまざまなメーカーのビデオカードには独自のビデオカードがあります 特定の機能..。 これは、特別なテクスチャ形式のサポート、または頂点シェーダーからのテクスチャへのアクセスになります。 同時に、DirectXまたはOpenGL APIによって提供される共通の機能を使用する場合、2つのベンダーのGPU間の違いは最小限であり、ATIとNVIDIAのビデオカードの違いの結果として、むしろより多くの機会があります。どんな制限よりも。 「特別な扱い」がエンジンに関係している限り、BigWorldはどのベンダーにも決定的な利点を提供しません。

「NVIDIAWORLD」: NVIDIAカードとATIカードで実行されるゲームの速度の違いは何ですか? これはゲームエンジンアルゴリズムのプロパティですか、それともゲームシーンに依存していますか? つまり、たとえば、あるゲームではポリゴンシーンが高く、別のゲームではオーバードロー率が高いか、複雑なアンチエイリアシングを伴う半透明のテクスチャが多いため、フィルレートが高いビデオカードの方がうまく対処できますか? (あなたのプログラムはアーキテクチャを「愛」していましたか?)

M. Zh。:違いは主に、ハードウェア機能(メモリバスの幅、ROPユニットの数、シェーダーユニットなどの違い)、およびドライバーの実装に要約されます。 CPUとGPUの負荷のバランスが取れていて、ステージが適切に編成されているほど、ビデオカードの機能が全体的なパフォーマンスに与える影響は少なくなります。 これには、テクスチャの数と解像度に対する無駄のない態度、パーティクルと透明なオブジェクトからの低いオーバードロー、LODの使用、オブジェクトのバッチへのグループ化などが含まれます。これらはすべて、同じように、エンジン開発者の肩にかかっています。とゲームデザイナー。

「NVIDIAWORLD」: ビデオカードをテストする場合、原則として、ほぼ同じゲームのセットが使用されます。 3Dシューティングゲーム、サードパーソンRPG、戦略などのさまざまなジャンルのテスト結果を表示する場合、この一般化はどの程度適切ですか。 人気のあるベンチマークは、ゲームのパフォーマンスを示していますか?

M. Zh。:アプリをジャンル別に分けません。 すべては、使用するアルゴリズムの開発者の手に委ねられています。 いずれにせよ、開発者はユーザーのシステムを可能な限りバランスの取れた状態でロードし、同時に製品の最大の魅力を実現しようとします。

Crysisや最新のNeedfor SpeedなどのゲームのFPS値を見ると、他の多くの最新ゲームのパフォーマンスを大まかに想像できるため、これらのテストは非常に指標的であると自信を持って言えます。 このレベルのゲームは、高品質の設定でグラフィックサブシステムを最大限にロードするため、ビデオカードのベンチマークとして使用できます。

「NVIDIAWORLD」: 解像度の増加に伴ってCPUの負荷が増加する理由は何ですか? 「角度」を最小限に抑えるためにモデルの詳細を増やすには、アニメーション、非表示のプリミティブのクリッピング、シャドウボリュームの構築などのためにより多くのCPUパワーが必要になるというのは本当ですか? この効果はあなたのゲームにありましたか?

M. Zh。:もちろん、エンジンがモデルのポリゴン性の自動増加、追加のテッセレーション、およびモデルのアニメーション用のフレーム数の増加を提供しない限り、解像度を上げてもCPU負荷に直接影響することはありません。 解像度を上げると、CPUの負荷が理由もなく大きくなる場合、問題は次のいずれかにあります。 ゲームコードまたはビデオカードドライバで。

「NVIDIAWORLD」: 異方性フィルタリングを有効にすると、CPU負荷が増加する可能性がありますか? フルシーンアンチエイリアスについても同じことが言えます。 これにより、シーン全体を2倍の解像度で描画する必要がある場合、理論的には三角形の数も増える可能性があります。

M. Zh。:両方の質問に対する答えはノーです。 異方性フィルタリングが有効になっている場合、テクスチャユニットの負荷が増加します。 FSAAを有効にすると、ピクセルパイプラインの作業量が増えます。 高解像度に関しては、ピクセル数を2倍にすると、ピクセルシェーダー、ROPユニット、およびTMUの操作数が増加します。

「NVIDIAWORLD」: 計算をGPUシェーダーに転送するプロセスは非常に長い間行われており、最初はT&L、クリッピングでした。 GPUでのモデルのアニメーションは最近考慮されていますか? まず第一に、CPUで計算するための3Dエンジンに関して何が残っていますか? (T&L以外にGPUを頼りにしましたか?)

M. Zh。:私たちのプロジェクトで使用されているエンジンは、GPUで計算を実行しません。 理論的には、たとえば、リアルタイムで多くのオブジェクトの物理を計算する必要がある場合、NVIDIA GPUで完全に計算を実行する同じPhysXを使用できますが、プロジェクトの詳細により、十分なCPU機能があります。

「NVIDIAWORLD」: 近年、ビデオアクセラレータは「スマート」になり、階層的なzバッファなどの目に見えないプリミティブを切り取る方法を使用しています。 それらはどれくらい効果的ですか? すべての三角形をビデオアクセラレータに押し込んで、すべてを単独で描画することは可能ですか? 最初の3Dゲーム(QuakeおよびUnrealシリーズ)の時代には、レンダリングされた三角形やBSPツリーなどを減らすために高度な方法が使用されていました。これは現在どの程度関連性がありますか?

M. Zh。:もちろん、どのオブジェクトを描画し、どのオブジェクトを表示しないかを個別に決定するために、ビデオアクセラレータを信頼するべきではありません。 GPUへの冗長情報の転送はパフォーマンスの低下につながるため、不要なものを早期にクリッピングする手法を適用する必要があります。 したがって、問題は、それほどではありませんが、依然として関連性があります。 特にあなたが描く必要がある場合 大きな数さまざまなオブジェクト。 実は、現代のカードは不要なカードを切り落とすだけでなく、より複雑な種類の照明などの計算も満載でした。 したがって、ビデオカードを支援する機会とリソースがある場合は、これを行う必要があります。

たとえば、BigWorldエンジンでは、Umbraライブラリを使用して、描画段階の前に非表示のオブジェクトを切り取ります。 シーンはBSPツリーであり、明らかに範囲外のシーンのフラグメントをすばやく効率的に破棄することもできます。

「NVIDIAWORLD」: かつて、P4危機の頃、システムのボトルネックはプロセッサであり、ビデオアクセラレータを「ロード」できず、ゲームのFPSを上げるという状況がありました。トップエンドのCPUモデルが必要でした。 現在、CPUとGPUの間に同様の関係がありますか、それともプロセッサが特定の重要なレベルのパフォーマンスを超えており、安価なプロセッサと強力なビデオカードを使用できますか? これは、QuakeやDoomなどのスタイルのグラフィックに重点を置いたゲームを指します。

M. Zh。:強力なビデオカードを備えた弱いプロセッサは、システムのボトルネックです。これは、低レベル(ドライバによる制御コマンドのフローの形成)と高レベル(適用されたロジック-ゲームループ、パーティクルの更新、文字)の両方の多くの操作があるためです。アニメーション、物理学、サウンドなど)は、CPUのパフォーマンスに直接依存します。 重要な役割は、プロセッサのキャッシュメモリによっても果たされます。これは、安価なモデルでは非常に小さいものです。

ビデオカードをできるだけ効率的に動作させるには、システムリソース、高速システムバス、および十分な容量のRAMと優れたパフォーマンスが必要です。 多くの場合、CPUに必要なデータを転送する時間がないという理由だけで、ビデオサブシステムはその機能を表示できません。 したがって、リソースを節約することになると、平均的なプロセッサ、平均をわずかに上回るマザーボードを購入するだけで十分ですが、ビデオカードを無駄にすることはありません。 .

「NVIDIAWORLD」: バージョンからバージョンへのDirectXは、ますますグラフィックエンジンのようになっています。 現在、3Dプログラムは実質的にDirect3D API呼び出しで構成されており、ほとんどの計算はその中で実行されているというのは本当ですか? どのように評価しますか 最新バージョン DirectX? ほぼ本格的なエンジンになりましたか?さらにいくつのバージョンが必要ですか?

M. Zh。: Direct3Dを個別のグラフィックエンジンと見なすことはできません。また、近い将来、Microsoftが独自のゲームエンジンを作成するなどの措置を講じる可能性はほとんどありません。 これは、さまざまなゲームプロジェクトのエンジン要件の多くの違いなど、さまざまな理由で実用的ではありません。 たとえば、カーシミュレーター、リアルタイムストラテジー、3Dシューティングゲームには 特徴的な機能これでは、3つのケースすべてで同じエンジンを同等に効果的に使用することはできません。

Direct3Dの10番目のバージョンでは、リソースを操作するときの新しいレベルの抽象化と、シェーダーを開発するときの追加の可能性があります。たとえば、ストリーム出力などのトリックが利用可能になりました。 同時に、D3Dは、開発者が特定のタスク用のゲームエンジンを設計するために使用できる、低レベルのAPIであるままです。

「NVIDIAWORLD」: 一般的、 最近ゲームと3Dエンジンの「グローバリゼーション」があります。 多くのゲームが作られている、より人気のあるプラットフォームがいくつかあります。 これは客観的なプロセスですか? 既製のフル機能のエンジンのライセンスを取得できるときに、開発者が今すぐ独自のエンジンを作成することは理にかなっていますか? たとえば、Unreal Engineの別のバージョンが最近リリースされ、すでに数万回ダウンロードされています。 すべてのゲームが1つまたは2つの3Dエンジンを使用するまでどのくらいかかりますか?

M. Zh。:私たちはBigWorldを使用しており、これまでのところ満足しています。 「グローバリゼーション」に関しては、奇跡が起こる可能性は低く、CryTek、Epic、および他の多くの人々は、お互いにゲームエンジン市場の一部を提供することを決定します。 原則として、同じエンジンで作成されたゲームは非常に似ていることを忘れないでください。これは必ずしも良いことではありません。 おそらく、エンジンの数は、ますます狭い専門分野へのシフトとともに、増加するだけです。 いずれにせよ、常にユニークなエンジンがあります。

「NVIDIAWORLD」: 最新のビデオカードは、生のパワーの点で非常に強力になり、効果の点で以前のモデルと変わらず、まず第一に、モードの大型モニター(1920x1200から)を備えたシステムでその可能性を明らかにすることができますか?アンチエイリアシングと完全異方性フィルタリング? フィルタリングやAAのファンではない、たとえば1280x1024のモニターを持っている人が、新しい技術プロセスでGTX285やRadeonなどの新しいビデオカードを購入することは理にかなっていますか?

M. Zh。:私はそうだと同意します。 しかし、それにもかかわらず、十分な色再現品質、高解像度、コントラストを備えたまともなモニターを忘れないでください。 あなたはゲームからはるかに多くの喜びを得るでしょう。 ただし、お気に入りのモニターを変更しないことにした場合でも、カードを交換する価値があります。新しいカードの古い計算アルゴリズムの一部はすでにハードウェアに実装されているため、システムのパフォーマンスが確実に向上します。 。

「NVIDIAWORLD」: 以前は、ゲーム開発者は、現時点で最も一般的なカードに焦点を合わせていたため、最新のビデオカードの機能と効果を慎重に使用していました。 つまり、たとえば、条件付きのDirectX nが出てきますが、ゲームは依然としてDirectXn-2用に作成されています。 最近状況は変わりましたか? 最近リリースされたビデオアクセラレータの新しいエフェクト機能をゲームで利用するのは簡単ですか?

M. Zh。: Windows 7が数年前に発売された場合、またはMicrosoftがDirectX10をWindowsVistaにリンクするというアイデアを放棄した場合、ゲーム開発者は少なくともバージョン10のAPIにずっと前に切り替えていたでしょう。 しかし、今では私たちが持っているものがあります。近年のヒットはすべてDX9を使用しており、DX10のサポートは多くの場合マーケティング戦略です。

「NVIDIAWORLD」: ゲームは通常、リリース時に最新のビデオアクセラレータのパワーをどの程度集中的に使用しますか? たとえば、GT200アーキテクチャのすべての機能が現在使用されていますか? リリース時に、新しいGPUが既存のゲームで少しだけパフォーマンスが向上するのは典型的な状況ですか?しかし、時間の経過とともに、新しいアーキテクチャ用のゲームの最適化と新しい機能の使用により、その価値は高まるようです。 ? あなたのゲームはどのくらい新しい機能を使用していますか?

M. Zh。:新しいアーキテクチャとその統一されたシェーダーモデルの場合、ほとんどすべての人が勝ちました。 GPUの頂点パイプラインとピクセルパイプラインのワークロードは、一方向または別の方向に大きなスキューがあった場所で横ばいになりました。 新機能に関しては、特定の機能をサポートするビデオカードの割合が高いほど、ゲーム開発者はプロジェクトでそれらを積極的に使用します。 私たちが使用するBigWorldは、DirectX9およびSM3.0の機能に重点を置いています。

「NVIDIAWORLD」: 今日、オンラインゲームは非常に人気があります。 これはビデオアクセラレータ業界にその痕跡を残しましたか? このようなゲームのエンジンは、多くのユーザーが持つ基本的な機能セットに重点を置いており、FPSレートは依然としてインターネット接続によって制限されているため、オンラインゲーム用のトップエンドのビデオアクセラレータを購入するのは無意味に思えます。 これはゲームグラフィックスの開発のブレーキではありませんか? アクセラレータを必要としない「フル2D」のブラウザゲームの人気が高まっています。

M. Zh。: World of Warcraftのサブスクライバーの数を見て、たとえばAionやAge of Conanと比較すると、答えは明らかです。オンラインゲーム、ゲームプレイ、精緻化の場合です。 ゲームの世界、エキサイティングなPvPコンポーネントおよびスケジュールに直接関係しないその他の瞬間。 プレイヤーは1つのMMORPGに住んでいないため、これはグラフィックスの開発のブレーキではありません。 新しいシューティングゲーム、カーシミュレーター、およびRPGは、必然的に3Dゲームの水準を引き上げ続けます。 MMOゲームはゆっくりですが確実に同じように進んでおり、より多くのゲーム視聴者を引き付けることを目指しています。 ちなみに、同じブリザードが新しいMMOGに取り組んでいると噂されており、新しいプロジェクトで8年前のエンジンを使用する可能性は低いです。

「NVIDIAWORLD」: SLIおよびCrossfireテクノロジーには、ゲーム開発者からのサポートがどの程度必要ですか? ゲームごとにこれらのテクノロジーの有効性が異なる理由は何ですか? ゲームエンジンの機能とゲームシーンのどちらを使用しますか? あなたのゲームはSLIとCrossfireを使用することでどのくらいのメリットがありますか?

M. Zh。: 2枚のビデオカード用にエンジンを最適化することは非常に難しいプロセスです。 GPUへのコンパクトなデータ転送を慎重に整理し、GPUとCPUの間の負荷に関してエンジンのバランスをとる必要があります。 アプリケーションが1つのカードで作業しているときに、バスを介したCPUまたはデータ転送にすでに依存している場合は、SLIまたはCrossfireを忘れる必要があります。 実際、これは、ペアのアクセラレータで作業する場合の特定のゲームの違いです。 私たちのゲームはまだSLIで約10%のパフォーマンス向上をもたらしますが、現在、そのようなモードでのパフォーマンスを向上させるために、いくつかのモジュールを最適化しています。

「NVIDIAWORLD」: 長い間、PC市場の危機とゲームからコンソールへの段階的な移行について多くのことが言われてきました。 しかし、これはまだ起こっていません。 将来的にこれを期待できますか? 標準のハードウェアにより、コンソールのグラフィックスのプログラミングがはるかに簡単になるというのは本当ですか? それとも、「ハードウェア」が均一性を平準化するという点で、セットトップボックスの永遠の遅れはありますか?

M. Zh。:ゲーム機には開発者にとって多くの利点がありますが(1つのプラットフォーム、1つの機能セット、その結果、すべてのプレーヤーで同じパフォーマンス)、PCゲーム、特にオンラインゲームの市場は絶えず成長しています。コンソールへの大規模な移行は期待できません。コスト。 より強力なハードウェアを備えたゲーム機のリリースは、現在のゲームの販売を通じて前世代のゲーム機の製造コストを払い戻すことを目指して、コンソールメーカー自身によって抑制されていることを忘れないでください。 そのため、プレイステーション4やXbox 720が発売されるまでには長い時間がかかり、現世代のコンソールに焦点を当てたプロジェクトが数多くあります。 ニンテンドーWiiのように、優れた結果を得るために高度なハードウェアがまったく不要な場合もあります。

「NVIDIAWORLD」: 現在のゲームでは、モデルから影を作成するための投影法と、移動するオブジェクト、モデル、武器、およびモデルの可動部分からの影の動的または静的に計算されたボリュームを使用したシャドウボリュームの方法の組み合わせは本当ですか?ほぼ普遍的に使用されていますか?

M. Zh。:シャドウボリュームの代わりに、同じプロジェクション手法がよく使用されますが、変更が加えられます(カスケードシャドウマップ、セルフシャドウ用の個別のシャドウマップなど)。 シャドウボリュームは明確なシャドウボーダーを提供しますが、高いフィルレート、追加のCPU計算、およびソフトシャドウエッジの複雑な実装に悩まされます。

「NVIDIAWORLD」: シーン全体の動的な照明を構築するという観点から、既存のシェーディング方法には視点がありますか? つまり、ビデオアクセラレータの能力が徐々に増加すると、それらを使用してダイナミクスのすべての照明を計算できますか? それとも、いくつかの新しい方法を適用する必要がありますか?

M. Zh。:投影シャドウは現代のゲームで長い道のりを歩んできました、そしてそれらの修正のいくつかはSSAOのような追加の効果と組み合わせて長い間使われるでしょう。 もちろん、無料のGPUレイトレーシングがある場合は、投影シャドウもボリュームシャドウもチャンスがありません。

「NVIDIAWORLD」: ゲームでのアプリケーションの観点から、事前計算されたラディアンス転送テクノロジーをどのように評価しますか? 将来的に使用しますか?

M. Zh。: PRTは時間のかかる計算を必要とし、アニメーションモデルと組み合わせることはできず、原則として、同じアンビエントオクルージョンと比較して視覚的に大きな利点はありません。 例として、PRTを使用するHalo 3を取り上げることができますが、同じGears ofWarやCrysisと比較して照明の品質は際立っていません。

「NVIDIAWORLD」: DirectX 11とFermiアーキテクチャ、DirectX 11アクセラレータとゲームを待つ価値はありますか、それともAPIのパススルーバージョンですか? Direct X 11アクセラレータの若いモデルは、絶対出力、充填率で、古いモデルよりも優れていますが、DirectX 10をサポートするより強力なモデルである可能性がありますか? Fermiアーキテクチャのリリースにより、ゲームグラフィックスのある種の質的な飛躍が期待できますか、それとも大幅な成長、三角形の増加、高解像度での速度の向上などが期待できますか? ゲームの開発時にFermiが利用可能だったとしたら、グラフィックの点でゲームはどのように異なりますか?

M. Zh。: DirectXの11番目のバージョンは、GPUでのコンピューティングの可能性を高めますが、DX10と比較すると、3Dグラフィックスに根本的な改善はありません。 フェルミに関して、私の意見で最も興味深い機能は、3Dモデルの完全にガイドされたテッセレーションです。

Wargaming.net、World ofTanksプロジェクトのテクニカルディレクター、Mikhail Zhivets

gamescomとIgroMirでのWorldof Warshipsのプレミアクローズドショーの後、ゲームの正式なリリースはますます近づいています。 クローズドアルファテストは現在本格化しており、Wargamingのサンクトペテルブルク部門であるLesta Studioの開発者は、まだ解決すべき多くの質問を抱えています。 同時に、私たちは何とか多くの障害を残すことができました。 以下は、エンジンのエクスポーターをShipsのニーズに適合させ、コンテンツ検証プロセスを構築した方法についてのストーリーです。

エンジンの標準配送

どのエンジンにも、3Dエディターから独自のデータ形式に3Dモデルをエクスポートするためのツールキットが含まれています。 World ofTanksの基礎となっているBigWorldも例外ではありません。 3DMaxおよびMayaからのエクスポートをサポートします。 ほとんどすべてのゲームプロジェクトでは、プロジェクトの詳細に標準のエクスポーターを適合させる必要があります。 私たちのプロジェクトでは、船のモデルは特定のものです。

マヤからの適応されたエクスポーターの最初のバージョンは、船のシーンのより複雑な構造を認識するためにそれを単に「再訓練」しました。 Python制御コードのビットが既存のC ++コードに追加され、wxWidgetのUIを備えたMayaのプラグインも追加されました。 次のようになりました。


カスタマイズされたエクスポーターのUI

結果として得られたツールには多くの欠点がありました。

エクスポートは、シーンに含まれる内容をエクスポーターに「伝える」必要があるユーザーの参加によってのみ実行できました。 このツールを使用してさまざまなプロセスを自動化すること、たとえば、配布キットを作成する段階でのコンテンツの自動検証は問題外でした。

エクスポータは、ユーザーに明らかなパラメータからはほど遠いことを知っておく必要があり、作業が遅く、実際にはシーン検証をサポートしていませんでした。また、サポートのために膨大な量のリソースを必要としました。

アーキテクチャは、機能の将来の拡張にとって大きな課題でした。 エクスポートは、実際には、データを1つの構造(ロードされたMayaシーン)から別の構造(BigWorld)に直接物理ファイルに変換する不可分操作(スパゲッティ関数のセット)でした。 シリアライザーとビジネスロジックが「モノリス」で実装され、データモデルがない場合、データ処理(前処理/後処理)を追加したり、他のツールでシリアライザーとデータモデルを再利用(コード再利用)したりすることはできません。独自のビジネスを実装します。-logic。 より複雑なコンテンツ制作プロセスを構築することは不可能でした。

時間の経過とともに、既存のコードに新しい機能を追加することはほとんど不可能になりました。 エクスポーターを「ゼロから」新しいアーキテクチャで書き直すことが決定されました。

過酷な日常生活

私たちのプロジェクトのレベルは、コンテンツの品質、複雑さ、および量に対する要件を高めています。 私たちのスタジオはここ数年で大きく成長しました。 現在、コンテンツの制作に関連するタスクに十分な量のリソースを割り当てる機会があります。 アーキテクチャ開発の幅広いバックグラウンドを持つ専門家、C ++ / C#のテクノロジーが私たちのところにやって来ました。 同時に、エクスポーターの開発者にとって、PythonとMayaAPIを使用した最初の経験でした。 これにより、考慮する必要のある追加のリスクが発生しました。

輸出業者のリファクタリングは2〜3人月と見積もっています。 ゲーム開発には楽観主義がなければできません。

次のリスクを特定しました。

正式な要件の欠如;
Pythonの習熟度。
MayaAPIの複雑さ。
プリミティブを処理するためのアルゴリズムのリファクタリング。

実際の時間の多くは、開発者からマネージャーに転向した人、昔の人、トーションフィールド、既存のエクスポーターコードなどの非公式のソースから要件を収集するために費やされました。 これらの知識の塊は、Confluenceの要件、仕様、およびUML図の形式で形式化および記述されています。

最初のプロトタイプは、名前空間とPythonモジュール(__init__。py)の概念を使用する必要があることを示しました。 また、C ++ライブラリ(.pyd)の機能を「透過的に」使用できるメカニズムが考案されました。

Maya APIの複雑さと混乱については、別の本を書くことができます。 すべての機能には、プロトタイピング、3Dアーティストおよびエンジン開発者との協議(レンダリング)が必要でした。

標準のエクスポーターには、ポリゴンの三角形分割、ネストされたノードの変換行列の計算など、多数のアルゴリズムが独自に実装されていました。 マヤAPIを使用することに賛成し、エクスポーターのパフォーマンスを大幅に向上させました。

マーフィーの法則にルールを追加するときが来ました。あなたが思いついたプロジェクトは、それを放棄しなければ、計画時間の「x3」以内で確実に実行されます。

結果は私たちが注いだ努力の価値がありました。 結局、モデルのエクスポートを担当するメインアーティストでさえ、数か月の運用の後、エクスポーターは「ほぼ完璧」であることがわかりました。

ボンネットの下を見てみましょう

私たちのスタジオでは、Pythonのスクリプトが積極的に使用されています。 エクスポーター全体を実装しようとしました。 当然、Pythonは、頂点バッファー、インデックスバッファーなどの大きなバイナリデータの処理には適していません。このようなコンテナーのデータモデルとシリアライザーは、Pythonに自然に「適合する」ライブラリ(.pyd)としてC ++で実装されました。データ・モデル。 すべてのビジネスロジックはPythonで実装されました。

エクスポータフレームワークは、Mayaからの「手動」エクスポートのタスクだけでなく、コンテンツ検証の自動化など、その機能を再利用できるすべてのタスクにも使用されるように計画されていました。 私たちが開発するツールキットには、Python API、コマンドライン、UIツールが必要です。

建築

エクスポーターフレームワークアーキテクチャはモジュール式で、階層化されています。 ドメイン層だけでなく、物理層と論理層もあります。 各レイヤーには、データモデル、ビジネスロジック、シリアライザー、および1つのレイヤーのデータモデルを別のレイヤーのデータモデルに変換できるコンバーターという個別のモジュールが含まれています。 物理層と論理層は、実際にはORMアーキテクチャの類似物を実装しています。

ドメイン層アーキテクチャは、ビジネスロジックを使用してデータモデルを便利に処理できるように設計されています。 これは完全に分離されており、物理ストレージにシリアル化する方法についての仮定は含まれていません。


エクスポーターの階層化アーキテクチャ

エクスポートプロセス

階層化アーキテクチャは、エクスポートプロセスの特定の機能を導入します。 実際には、異なるソース(MayaとBigWorld Engine)から2つ(またはそれ以上)のモデルを逆シリアル化しています。 その後、これらのモデルは1つの新しいモデルにマージされます。 次に、新しいモデルがBigWorld-Engine形式にシリアル化されます。


エクスポートプロセス

コンテンツ制作プロセスの柔軟性

実装されたアーキテクチャにより、複雑なコンテンツ制作プロセスを簡単に構築できます。 たとえば、私たちの主要な船のモデルは、技術的には3つの別々のMayaシーンで構成されており、それぞれが異なる部門によって同時に開発されています。

最初のシーンには、ビジュアルモデルと衝突モデルが含まれています。
2番目のシーンには、弾道モデルが含まれています。
3番目にはエフェクトポートが含まれています。

これに加えて、エンジンツールボックス(エディター)は、派生したエンジンフォーマットモデル(4番目のシーン)に独自のデータを追加(編集)します。

エクスポータは、4つのシーンすべてを1つの結果の船モデルに結合するという重要なタスクを簡単に解決します。

コンテンツの検証

コンテンツ検証システムを使用すると、各レイヤー(ソース)と結果のコンテンツの両方でコンテンツエラーを個別に検索できます。 現在、検証者の数は数十に達しています。 自動コンテンツ検証はディストリビューションビルドプロセスに組み込まれているため、人的要因を可能な限り排除し、コンテンツの整合性と技術的な純度を保証できます。


Mayaで船のモデルを検証する例

コンテンツの予算とバスルームのアヒル

コンテンツ検証プロセスの重要な部分は、ポリゴンの予算の検証など、予算のチェックです。 次の図は、特に、各ロードのビジュアルモデルの三角形の数に関する情報を示しています。


MayaUIプラグイン

このような検証の必要性を鮮明に示しているのは、以前のプロジェクトの1つについて同僚から話された話です。 地図上には、破壊できない家々で建てられた区画がありました。 カメラがこの領域に視線を向けるとすぐに、FPSはすぐに激しく落ちました。 問題を調査した後、家の1つに、小さな「プラスチック」のアヒルが泳いでいる浴槽があることがわかりました。 アヒルのモデルに約100万のポリゴンが含まれているという事実がなければ、これはすべて芸術家の面白いいたずらのように見えたでしょう。

実際には、予算値を遵守することは非常に困難です。 多くのモデルは客観的に例外です。 予算値を範囲の形式で設定しても問題は解決しません。時間の経過とともに、ポリゴンモデルは単に範囲の上限値になり始めるためです。 私たちの場合、このタイプのモデルの標準予算に対応しないモデルの個人予算を変更することを計画しています。

コンテンツ処理

輸出の各段階で、処理(前処理/後処理)が必要です。 たとえば、Mayaレイヤーの論理データモデルを防空大砲のドメインデータモデルに変換する前に、大砲のスケルトンをY軸で45度回転させ、スケルトンを削除する必要があります。 私たちのアーキテクチャは、エクスポートのどの段階でもさまざまな処理を透過的に統合することを可能にしました。




前処理前後のモデル例

X64サポート

ごく最近、私たちのアーティストは32ビットのMaya2012から64ビットのMaya2014に一斉に切り替えました。エクスポーターはほぼ完全にPythonで記述されているため、x64のサポートに実質的に問題はありません。 C ++で実装されたライブラリ(.pyd)だけが、少しの「シャーマニズム」を必要としました。

エクスポータは、それ自体がC ++ライブラリ(.pyd)の必要なアセンブリを定義してロードするため、x32プロセスとx64プロセスの両方で簡単に使用できるようになりました。

カードの確認

エクスポーターのアーキテクチャーを開発している間、それを再利用できる他のツールや自動化を事前に予測することはできませんでした。 カード検証の自動化は、「正しい」エクスポーターアーキテクチャが別のツールにどのように組み込まれたかの一例です。

マップの検証は、マップ上にある他のオブジェクトからのマップの依存関係のグラフを作成して検証します。 特に、マップは、風景(石、氷山)、建物(家、格納庫、マリーナ)、機器(飛行機、ボート)などの視覚モデルを使用します。

マップベリファイアの特徴は、エクスポータフレームワークを使用して、これらのビジュアルモデルのファイルの存在だけでなく、モデル自体も検証できることです。 これにより、地図開発部門(LA)が技術的に正しいモデルが使用されているという3Dモデル開発部門(3D Art)の言葉を取り入れなければならなかったときに、人的要因が排除されました。

ディストリビューションの構築

エクスポータフレームワークは、配布用のコンテンツパックを準備するプロセスで使用されています。 ディストリビューションには、次のようなモデルを含めないでください。

もう使用されていません。
まだ開発中です。
製品の後続バージョンを対象としています。

ゲームオブジェクト(ルートゲームオブジェクト)の基本リストに基づいて、依存関係グラフを作成する必要があります。 全リスト必要なコンテンツ。 エクスポータフレームワークを使用してモデルを逆シリアル化し、他に必要なモデル(コンテンツ参照)を「見つける」ことほど簡単なことはありません。

結果

私たちのエクスポーターの開発履歴は、それがシンプルで高度に専門化されたツールから、その即時のタスクを解決する強力なシステムにどのように進化したかを示しており、他のコンテンツ制作プロセスにも適用されています。 その成功した開発と再利用は、個々の「キューブ」を使用して他のシステムを構築できるようにするモジュラーアーキテクチャに基づいています。

近い将来、エクスポーターはBigWorldEngineファイル形式の変更に関連する別のテストを行う予定です。 基盤となるアーキテクチャで問題が発生することはなく、既存のファイル形式と新しいファイル形式の両方での作業をサポートできると確信しています。

  • ジャンルオリエンテーション:あらゆるジャンルの3DMMO;
  • プラットホーム: PC、PS3、Xbox 360、iOS(iPad)、Web;
  • プログラミング言語: C ++、Python;
  • ライセンス:インディーおよびコマーシャル。
  • オープンソース:提供されていない、または追加料金で提供されていない。
  • マルチプレイヤー:クライアントサーバー;
  • 利点:強力な、ほとんどすべてのサポート 現代のテクノロジー、最適化された、i​​OSサポート、そのような機能のために安い;
  • 短所:無料で提供されていません。
  • エンジン開発者: BigWorld Tech、Inc。

    BigWorld Engineは、MMOゲームを作成するための最も高度な3Dエンジンです。 Wargaming.netの「WorldofTanks」、「Pealm of the Titans」などのゲームや、他の世界のゲーム開発会社のゲームを作成するために使用されます。 このエンジンでは15以上のMMOゲームが作られています。 BigWorldTechnologyによって開発されました。

    最適化されたエンジンを使用すると、見事なグラフィックを備えた需要の少ないゲームを作成できます。 このエンジンを使用すると、ゲームをiOSに移植できます。 これはC ++プログラミング言語で書かれており、ゲームロジックの実装は便利なスクリプト言語Pythonで行われます。 強力なツールとクライアントサーバーエンジンがあります。 サウンドについては、FMODライブラリがサポートされており、その他のライブラリはプラグインシステムを介して接続されています。 XMLおよびMySQLデータベースで動作します。 ツールボックスには、強力なワールドエディタ、モデルエディタ、パーティクルエディタが含まれています。

    それは価格で非常に手頃な価格です。 BigWorldの構築:IndieEditionの価格はわずか299ドルです。 BigWorld:Indie SourceEdition-2,999ドル; BigWorld:CommercialEdition-個別に交渉。

    この高度なエンジンは、そのタイプの他の世界のエンジンよりも機能が劣っていません。 エンジンは、ロシア語、韓国語、アメリカ語、日本語で利用できます。 ドキュメントがあり、ブラウザで動作します。 一般的に、知識と勤勉さがあれば、仕事に取り掛かることができます。

    サードパーティのライセンスでは利用できなくなりました。 Wargamingは、エンジンの配布を停止することを決定しました。

    公式サイト: http://www.bigworldtech.com





    BigWorld Technologyツールチェーンは、ゲームの品質と適時性を強化する、完全なエンドツーエンドのMMOGコンテンツ作成システムを提供します。 すべてのツールは、大規模なチーム環境でゲームアセットを共同制作するように設計されており、リソースの効果的な使用とスムーズなコンテンツパイプラインを保証します。

  • 特定のビデオを見つけるのに問題がありますか? 次に、このページは、必要なビデオを見つけるのに役立ちます。 私たちはあなたの要求を簡単に処理し、あなたにすべての結果を提供します。 何に興味があり、何を探していても、方向を問わず、必要な動画を簡単に見つけることができます。


    最新のニュースに興味がある場合は、現時点で最も関連性の高いニュースレポートをあらゆる方向に提供する準備ができています。 サッカーの試合、政治イベントや世界、地球規模の問題の結果。 あなたが私たちの素晴らしい検索を使用する場合、あなたは常にすべてのイベントを知っているでしょう。 私たちが提供するビデオの認識とその品質は、私たちに依存するのではなく、インターネットにアップロードした人に依存します。 私たちはあなたが探しているものと要求するものをあなたに供給するだけです。 いずれにせよ、私たちの検索を使用して、あなたは世界のすべてのニュースを知るでしょう。


    しかし、世界経済も多くの人を悩ませている興味深いトピックです。 かなり多くは、さまざまな国の経済状況に依存します。 たとえば、食品や機器の輸出入。 同じ生活水準は、国の状態や給与などに直接依存します。 そのような情報はどのように役立つのでしょうか? それはあなたが結果に適応するのを助けるだけでなく、ある国または別の国に旅行することに対してあなたに警告することもできます。 あなたが悪名高い旅行者であるならば、それから私たちの検索を使うことを忘れないでください。


    今日、政治的陰謀を理解し、多くの異なる情報を見つけて比較するために必要な状況を理解することは非常に困難です。 したがって、下院議員のさまざまなスピーチと過去数年間の彼らの発言を簡単に見つけることができます。 政治や政界の状況を簡単に理解できます。 さまざまな国の政治があなたに明らかになり、あなたは簡単に来たるべき変化に備えるか、私たちの現実にすでに適応することができます。


    しかし、ここでは全世界からのさまざまなニュースだけでなく、ここで見つけることができます。 また、ビールやポップコーンのボトルを持って夕方に見るのが楽しい映画を簡単に見つけることができます。 私たちの検索データベースには、あらゆる好みや色の映画があり、自分で面白い写真を簡単に見つけることができます。 最も古くて見つけるのが最も難しい作品だけでなく、誰もが知っている古典(たとえば、スターウォーズ帝国の逆襲)も簡単に見つけることができます。


    少しリラックスしたいだけで面白いビデオを探しているなら、ここでも喉の渇きを癒すことができます。 私たちはあなたのために世界中からの百万の異なる面白いビデオを見つけるでしょう。 短いジョークは簡単にあなたを元気づけ、一日中あなたを楽しませます。 便利な検索システムを使用して、あなたはあなたを笑わせるものを正確に見つけることができます。


    ご存知のように、私たちはあなたが常に必要なものを正確に手に入れることができるようにたゆまぬ努力をしています。 私たちはあなたのためにこの素晴らしい検索を作成しました。あなたがビデオの形で必要な情報を見つけて、便利なプレーヤーでそれを見ることができるように。