Mutable Populations は、既存の Mutable オブジェクトからカスタマイズされた群衆やキャラクターの集団を自動的に生成する追加プラグインです。
Population エディタで、ランダム性を制御して、リアルタイムまたはプロダクション パイプライン上でバリエーションやコンテンツを作成できます。 また、エディタを使用してさまざまな集団向けの生成ルールを定義することで、共通の起源、文化やギルドを持つ統一感のあるグループを作成することもできます。 リリース後は、新しいアセットにタグ付けすると、既存の集団のバリエーションを自動的に増やすことができます。
このプラグインは、Mutable を使用して集団を生成する方法の一例として提供されています。 集団はプロジェクトごとに固有のため、オリジナルのシステムを作成するためのテンプレートとして使用することができます。
カスタマイズ可能オブジェクト、クラス、集団
Mutable Populations は、Population クラスと出現確率で構成される内部設定に基づき、ランダムにカスタマイズ可能オブジェクト インスタンスを生成します。
各 Population クラスは、その代表的な特性を定義する単一のカスタマイズ可能オブジェクトに基づいています。 これは、ランダムに生成されるカスタマイズ可能オブジェクト インスタンスに対して、どのパラメータ値を生成するか、またその頻度を指定します。
Customizable Populationクラス
カスタマイズ可能な Population クラスは Unreal Engine に追加された新しいタイプのアセットです。 Population クラスは、基本となるカスタマイズ可能オブジェクトとその特性を定義します。
各特性は、1 つのパラメータに対する許容可能なオプションの範囲と、この Population クラスに基づいて Population によって生成された、ランダムなカスタマイズ可能オブジェクト インスタンスへの出現確率で構成されます。 パラメータの種類に応じて、特定のオプションが表示される頻度を設定したり、単一の値を有効値としたり、連続した数値の出現確率をカーブで定義したりできます。 また、このクラスではタグを利用して、整数またはブール型のパラメータをグローバルに、または個別に拒否リストや許可リストに使用することもできます。
カスタマイズ可能な Population クラスは、コンテンツ ブラウザの [Add New (新規追加)] メニューから作成できます。
Customizable Population
これは、選択された Population クラスとその使用頻度に応じてランダムなカスタマイズ可能オブジェクト インスタンスを生成する、新しいタイプのアセットです。
1 つの集団には、複数の異なるカスタマイズ可能オブジェクトから、または同一のカスタマイズ可能オブジェクトの異なる Population クラスから、カスタマイズ可能オブジェクト インスタンスを生成できます。
カスタマイズ可能な集団は、コンテンツ ブラウザの [Add New (新規追加)] メニューから作成できます。
カスタマイズ可能な集団は、集団または Population クラスが保存されるたびに、カスタマイズ可能オブジェクト インスタンスの生成アルゴリズムを更新します。この更新では、その時点での各 Population クラスに含まれるカスタマイズ可能オブジェクトのパラメータが使用されます。 また、プロジェクトがパッケージ化される際にも更新され、最新の状態が保たれます。
Population クラス エディタ
左側のパネルには、Population クラスのオプションが含まれています。
基本となるカスタマイズ可能オブジェクトを選択します。
そのクラスの特性を定義します。
グローバル クラス タグの許可リストと拒否リストを設定します。
カスタマイズ可能オブジェクトでは、パラメータごとに 1 つの特性を設定します。
各特性は、コンストレイントを使用して定義されます。 コンストレイントは、Population クラスに基づくランダムなカスタマイズ可能オブジェクト インスタンスにおける、各パラメータの値とその出現確率を定義します。
パラメータの型に応じて、特性を定義するために、さまざまなタイプのコンストレイントが使用されます。
1 つの特性に対して複数のコンストレイントを使用することができます。それぞれのコンストレイントには、他のコンストレイントに対する相対的な適用確率がウェイトによって定義されています。
有効な特性が指定されていないパラメータは、Population クラスによってランダム化されます。各オプションは、Population クラスから生成されたカスタマイズ可能オブジェクト インスタンスに均等に出現します。
中央のパネルでは、カスタマイズ可能オブジェクトの Population タグを定義します。 これらのタグは、このカスタマイズ可能オブジェクトを共有する Population クラスから使用および変更できます。 タグは、グローバルな許可リストおよび拒否リスト、または「タグ」タイプのコンストレイントを使用する特性の設定を通じて、ランダムなカスタマイズ可能オブジェクト インスタンスに含まれる内容を制御するために使用されます。
パネルでは、次のことを実行できます。
4. タグを使用できるように、追加や削除を行います。 新しいタグは、テキスト ボックスを使用して追加できます。 テキスト ボックスの下には既存のタグがリスト表示されており、そこから削除することもできます。
5. タグを設定するパラメータを選択します。
6. 列挙型の各オプションに適用できるタグを定義します。
カーブ エディタは、パネルの右上 (12) にあります。 最後に [Open in Editor (エディタで開く)] ボタンが押された時点でのカーブ コンストレイントが表示され、カーブを調整するのに使用できます。
パネルの右下 (7) には、現在の設定で生成される内容がプレビュー表示されます。 これは、[Test Population Class (Population クラスをテスト)] ボタン (8) を押すたびに生成されます。 生成されるカスタマイズ可能オブジェクト インスタンスの数は、ボタンの隣にある下向き矢印を使用して設定することができ、デフォルト値は 10 です。
ここでインスタンスを選択して調査できます。この画像では左端のインスタンスが選択されています。 [Inspect Instance (インスタンスを調査)] (10) ボタンを使用して、エディタで選択したカスタマイズ可能オブジェクト インスタンスを確認および変更できます。 [Inspect Skeletal Mesh (スケルタルメッシュを調査)] (11) ボタンを使用して、生成されたスケルタルメッシュを確認できます。
[Generate Instances (インスタンスを生成)] ボタン (9) を使用して、ランダムなカスタマイズ可能オブジェクト インスタンス アセットを生成できます。 これらは通常のカスタマイズ可能オブジェクト インスタンスで、エディタからゲーム アセットとして使用されます。作成後は、それ以上ランダムな生成は行われません。
ランタイム時にランダムなカスタマイズ可能オブジェクト インスタンスを生成するには、Population アセットにある Generate Population 関数と Regenerate Population 関数を使用します。
Population のタグ
タグはタグ マネージャーのテキスト ボックスを使用して作成します。 タグは、列挙型パラメータの各オプションに個別に割り当てることができるように設計されています。 割り当てられたタグは、特定のパラメータ オプションが Population クラスで使用されるかどうかを示すために使われます。 これは、タグを許可リストや拒否リストに登録することによって行われます。 この設定方法についてはこのセクションの後半で説明し、その際に使用する真理値表をセクションの最後に掲載しています。タグは、Population クラスで使用されるパラメータをフィルタリングするための手段として機能します。
タグを使用するには、タグを作成します (4)。次にいくつかのパラメータ オプションを割り当て (6) (5)、最後にそれらをグローバル設定 (3) または単一のパラメータに適用されるコンストレイント (2) の許可リストと拒否リストに登録します。
タグはカスタマイズ可能オブジェクトに格納されるため、同じカスタマイズ可能オブジェクトに属する異なる Population クラスは、同じパラメータとパラメータ オプションに対して同じタグにアクセスすることができます。
Population タグの主な目的は、タグを列挙型の各オプションに割り当てることです。拒否リストや許可リストと組み合わせることで、オプションが追加または削除されるたびに、それに依存する 各 Population クラスのコンストレイントを手動で変更することなく、増え続けるオプションを管理することができます。
各 Population クラスには、その Population クラスから生成されるカスタマイズ可能オブジェクト インスタンスに何が含まれるか、含まれないかを包括的に定義するための、一般的な許可リストと拒否リストがあります。
整数パラメータやブール型パラメータにもタグ コンストレイントを設定することができます。 これらのコンストレイントは、タグ コンストレイントを定義している特定の特性に対してのみ、グローバルな許可リストと拒否リストをオーバーライドします。 これにより、一般的な許可リストと拒否リストに例外を指定することができ、Population クラスの特定のパラメータを微調整することができます。
なんらかの条件が適用されるまで、タグ リストは以下のロジックに従います。
列挙型のオプションにあるタグがこのパラメータのタグ リストに含まれていない場合、すべてのオプションの出現確率は同じです。
列挙型の少なくとも 1 つのオプションのタグが、このパラメータのコンストレイント リストに含まれている場合、コンストレイントの拒否リストに含まれるタグを持たない列挙型オプションのみが表示されます。 列挙型オプションのタグが許可リストに含まれる場合、許可リストにタグがあり、拒否リストのタグを持たないオプションのみが表示されます (この結果については、セクションの最後に掲載されている表で説明しています)。
2 番目の項目と同じですが、グローバルなリストの場合は、 列挙型の少なくとも 1 つのオプションのタグが、このパラメータのグローバルなリストに含まれている場合、グローバルな拒否リストに含まれるタグを持たない列挙型オプションのみが表示されます。 列挙型オプションのタグが許可リストに含まれる場合、許可リストにタグがあり、拒否リストのタグを持たないオプションのみが表示されます。 この結果については、セクションの最後に掲載されている表で説明しています。
許可リストと拒否リストの真理値表
| 列挙型オプションのタグが許可リストに含まれている | 列挙型オプションのタグが拒否リストに含まれている | 同じ列挙型内の別のオプションのタグが許可リストに含まれている | この列挙型オプションが、ランダムなカスタマイズ可能オブジェクト インスタンスに表示されるかどうか |
|---|---|---|---|
オフ | オフ | オフ | はい |
はい | オフ | オフ | はい |
オフ | はい | オフ | オフ |
オフ | オフ | はい | オフ |
はい | はい | オフ | オフ |
はい | オフ | はい | はい |
オフ | はい | はい | オフ |
はい | はい | はい | オフ |