
この記事に記載されているすべての図は、テストオブジェクトの例として提供されており、ゲームの最終的な品質を反映するものではありません。 自慢したいのですが、申し訳ありませんが、まだできません。
私の名前はDmitry Nikiforovです。私はAllodsチームのエフェクトアーティストです。 Skyforgeプロジェクトの作業は2011年5月に始まり、それ以前はAllods Online MMORPGのエフェクトを作成していました。
ゲームの効果は長い間大きな役割を与えられてきました。 ゲームの一般的な雰囲気とスタイルをサポートし、よりカラフルで壮観なゲームプレイを明らかにします。 例えば、炎のない火の玉と、最後の壮大な爆発を想像できますか?
現在、視覚効果はゲーム内イベントの単なる有益なマーカーではありません。 エフェクトは、アニメーショングラフィックスから、独自のルール、技術要件、アプローチを備えた独立したアート分野に進化しました。
技術的には、この効果はゲーム業界全体を前進させます。 これまたはその視覚効果を達成するために、大規模な研究と膨大な数のテストが実行されます。

どのようにエフェクトを作成しますか? 正確に受信する必要があるもの、必要な効果の種類によって異なります。 滝や火を吐くドラゴンで作業する場合、アーティストはコンセプトアートを描き、それをFXアーティストに転送します。 前述の火の玉のように、効果がキャラクターの特定の能力を伴う場合、プロセスはやや複雑になります。 撮って描くだけではうまくいきません。 アーティストの計画を実行するには、チーム全体が準備してブレインストーミングを行う必要があります。 ビジュアルデザインは、ゲームメカニクスの特定のイベントを最も効果的かつ壮観に表示するように開発されています。 次に、「材料」のサンプルを選択する必要がありますが、その中から目的の効果を構成します。 フィルム、写真からの静止画が選択され、ドラフトスケッチでさえも、紙くずに作成されます。 必要に応じて、ストーリーボードの将来の効果のコンセプトアートが編集されます。 次に、ゲームメカニクスのデザインをダミーエフェクトでテストします。見た目は良いですか? そして、その効果が生産に移されます。
テクノロジー
MMOプロジェクトの成功は、技術面も含めて継続的に開発される必要があります。 この鮮やかな例は、ブリザードのすごいです。 ゲームの起動時と今日のゲームとグラフィック機能のセットを比較するだけで十分です。
Skyforgeでは、Mayaが長い間使用してきたエフェクトのミドルウェアには言及せず、すべての高度なゲームエンジンと同様に、独自のエディターをゼロから作成しました。 これにはいくつかの理由がありました。 まず、すでに「Allods」には、Mayaで将来のエフェクトの小さな「パーツ」のみを作成し、ゲームエディタですでに完成したエフェクトを収集する伝統があります。 次に、Mayaビューポートとゲームエディターでのエフェクトの視覚化が異なります。 第三に、新しいプロジェクトのMayaパーティクルエンジンでは不十分でした。
独自のエフェクトエディタにより、ゲームエンジンでの視覚化のエクスポートとそれに続くカスタマイズの時間を大幅に節約できるため、作業の結果をすぐに確認できます。 エディターの機能は、最新のテクノロジーの要件に応じて常に拡大しています。 どのアーティストでも、必要なツールを「注文」できます。 エディタにはまだ名前がありません。 (アイデアはありますか?提案は受け入れられます!:)
ゲームの効果について聞いたとき、何が思い浮かびますか? 確かに、これらは煙、火、爆発のような動的なシミュレーションです。 ただし、ゲームのほとんどの場合、リアルタイムで計算できる動的な効果はありません。

PhysXテクノロジーを使用した場合と使用しない場合の効果の例。
効果を事前に計算し、シミュレーション結果を小さなバイナリファイルに保存する方が簡単で便利であることがわかりました。
まず、常に予測可能な結果が得られます。 リアルタイムの物理エンジンに効果の計算ミスを与えると、出力がアーティストが意図したものと正確に一致するかどうかはわかりません。 主要部分が計算され、残りがリアルタイムでシミュレートされる複合効果をとると、詳細と粒子の数が一般的に増加しているにもかかわらず、リアルタイム部分が全体像からノックアウトされていることがわかります。 最大の問題は衝突処理です。
第二に、このシナリオでは、動的エンジンに追加の負荷が発生しますが、リアルタイムでさまざまな効果をすべて提供することはまだできません。
Skyforgeプロジェクトでは、すべての効果が(現時点で)計算されます。 エディターでのみ本格的な動的シミュレーションが表示されます。 この結果は記録され、通常のアニメーションのように適切なタイミングで再生されます。 すでに述べたように、エディターの機能はMayaの機能よりもはるかに広い(ゲームエフェクトの点で)。 ビルボードスプライト(常にカメラに面している長方形の平面)のような通常のパーティクルに加えて、ダイレクトスプライト(その軸の1つが通常は移動方向の側面に向けられている平面)もあります。

「ビルボードスプライト」パーティクル


「ダイレクトスプライト」タイプのパーティクルと、それらが使用されるエフェクトの例 。
スプライトの代わりに、パーティクルの代わりにソフトウェアトレイルを描くことができます。 これらは、パーティクルの寿命中に各フレームに手順的に構築される幾何学的なリボンです。


「トレイル」タイプの粒子と、それらが使用される効果の例。
また、パーティクルレンダリングを、以前Mayaでモデル化された、いわゆるインスタンスである完全なジオメトリに置き換えることもできます。


「インスタンス化されたジオメトリ」タイプのパーティクルと、それらが使用されるエフェクトの例。
さらに、パーティクルの代わりに光源をレンダリングできます。


「ライト」タイプのパーティクルと、それらが使用されるエフェクトの例。
ゲームエンジンはレンダリングに遅延シェーディングテクノロジーを使用し、G-Bufferから事前に計算された多数のレイヤーを構成することで最終的な画像が構築されます。 このアプローチでは、半透明のオブジェクト(まずエフェクトを含む)を正しく表示することができないため、それらは個別にレンダリングされます。 通常、ライトシェーダーは照明に関係なくエフェクトに使用されます。そのため、エフェクトが周囲の世界から出ないように、カラーグレーディングが適用され、ローカルゾーンのライティングが考慮されます。
ブレンドオプションは、パーティクルの種類とマテリアル設定に依存し、いくつかのシェーダーコードオプションがある場合があります。 スプライトパーティクルの場合、これは加算およびアルファブレンディングの両方です。 さらに、液体の特殊なシェーダーがあり、レイヤーの「厚さ」に応じて色を取得し、屈折パラメーターを変更し、ビューの角度に応じて表面のグレアと反射の強度を変更します。


「ウォーターシェーダー」マテリアルを含むパーティクルと、それらが使用されるエフェクトの例。
パーティクルエミッターによって生成されたジオメトリには、ゲームで使用されるシェーダーコードを含めることができます。 ただし、ほとんどの場合、エフェクトは加算またはアルファブレンディングを備えた軽量シェーダーを使用します。 トレイルには、アルファ、加算、乗算、さらには逆の4つのブレンディングオプションがある個別のシェーダーが使用されます。
エフェクトエディタを使用すると、いくつかのシェーディングパラメータ(色、透明度、自己照明)を制御し、パーティクルごとに個別に制御できます。 これが、ほとんどのテクスチャが変色する理由です。 テクスチャ自体はテクスチャアトラスに収集されます。テクスチャアトラスは、テクスチャ空間の同じ領域にある1つ以上の画像です(爆発、火、煙などのシーケンス)。
テクスチャは、さまざまなマテリアルプロパティをシミュレートするために複数のマスクチャネルを持つことができます。 メインテクスチャには、色と透明度のマスクが含まれています。 素材に応じて、テクスチャアトラスには法線マップ、自己発光のマスク、光沢、グレアの強度、光透過率も含まれる場合があります。

テクスチャサテンの例。
粒子は、グローバルな光源によって照らされ、IBL(画像ベースの照明)にも反応します。 この図は、「太陽」の位置に応じて煙がどのように照らされるかを示し、自己照明マスクの働きも示しています。

粒子と照明。
粒子管理
エフェクトエディタを使用すると、いくつかの方法でパーティクルを生成できます。
特定の数のパーティクルを指定して、それぞれの位置と出現時間を設定するか、一定の間隔/秒でパーティクルを生成できます。
ポイントおよびボリュームパーティクルジェネレータ、さまざまな「フォースフィールド」があり、目的の動作(重力、乱流、プッシュフィールドおよびプルフィールド)を確保します。 プレーンまたはボリュームを使用してパーティクルの動きを制限する補助衝突オブジェクトもあります。 次の図は、「球体」タイプの衝突オブジェクトと重力場の動作を示しています。

「衝突」のオブジェクト。
各エフェクトは、1つ以上のいわゆるパーティクルシステムで構成されています。 Mayaプログラムでも同様の原理を見ることができます。
パーティクルシステムには1つ以上のパーティクルジェネレータが含まれており、システム内のすべてのパーティクルは同じルール(色、動的フィールド、衝突など)に従います。 システム内のすべてのパーティクルは1つのタイプ(スプライト、インスタンス、またはトレイル)のみであり、すべて同じマテリアルを持ちます。 通常の効果には3〜7個の粒子システムが含まれますが、複雑な効果には10個を超えるシステムが含まれます。 各システムには、レンダリングに独自のDraw Callが必要です。したがって、エフェクト内のパーティクルシステムが少ないほど、ビデオカードでの表示が容易になります。

芸術
映画の場合のように、ゲームでは、エフェクト内のオブジェクトとパーティクルの相互作用がいかに妥当かつ物理的に正確に発生するかについては誰も興味を持ちません。 主なものはエンターテイメントです。 しかし、ゲームでは、壮大な効果を使用頻度で割る必要があります。
火の玉を投げることができる古典的な魔術師のキャラクターがあるとしましょう。 これが1分に1回しか適用できないまれな能力である場合、かなり長い時間(最大数秒)表示される複雑なアニメーションで大きな「壮大な」爆発を起こすことができます。
これが少なくとも1秒ごとに使用できる「スパム機能」である場合、爆発は完全に異なります。 これは、小さな刺激のない効果である必要があります。また、すぐに除去する必要があります。 このような効果は0.25秒しか存続できません。

ゲームは主にゲームプレイです。 効果自体は二次的であり、メカニズムをサポートします。 このルールを可能な限り忠実に守れば、ゲームにはかわいらしさがまったくなくなります。 チェッカーや道路標識のように、ゲームの周囲は乾燥しています。なぜなら、どんなに美しい写真であっても、ゲームプレイから注意をそらすのは避けられないからです。 幸いなことに、私たちがターゲットにしている大勢の観客は、美しいものを愛し、待っています。 エフェクトアーティストのタスクは、ゲームメカニクスと矛盾しないように、それを補完するように考案して実装することです。

Skyforge自体のエフェクトのスタイルは、Allods Onlineとは異なります。 レンダリングでは、HDR適応と動的光源を使用したグローバルイルミネーションが使用されます。 これはすべて、視覚効果に特定の要件を課します。 それらはそれぞれ、特定の物理現象のように見えるはずです(たとえ魔法であっても)、抽象的なもののようではなく、そうでなければ、効果は一般的な文体からノックアウトされます。 「Allods」で漫画を作成し、Skyforgeでハリウッドの大ヒット作を作成した場合。

アートインエフェクトについては、別の記事を書くことができますので、ここで停止します。 写真ではありますが、10回読むよりも、自分ですべてを1回見る方が常に良いです。 ゲームのクローズドベータテストでもこの機会を利用できます。
エフェクトアーティストの職業は常に課題です。 厳しい制限の下でもっともらしい結果を達成することが必要です。 ほとんどの場合、これは視聴者の欺ceptionであり、技術とアーティストのスキルの混合物です。 私たちの専門は、自然現象、技術的および技術的プロセスのダイナミクス、さらにはストーブのガスバーナーのような単純な家庭用電化製品の操作さえも考慮して理解する能力によって区別されます。 したがって、突然立ち往生している人、滝、噴水、燃えているurを見て、急いで結論に至らないでください。たぶん彼は単なるエフェクトアーティストです。
その他の資料は、Skyforge開発者のWebサイトとVkontakteコミュニティで見ることができます。