シーン グラフでは、ワールド構築とグレーボックスの実行から完全にプレイ可能なレベルへ、ほんの数ステップで素早く移行できます。
シーン グラフは、Verse の各種特性を活用する Verse ネイティブ システムです。 インタラクティブにカスタムビルドしたオブジェクトを備え、ゲームプレイ体験を実現するプロジェクトをさらにカスタマイズする方法が用意されています。
シーン グラフにより、プロジェクトの安定性が向上します。Verse によりバックグラウンドで負荷の高いすべての処理が実行され、各エンティティが必ず想定どおりに動作するためです。 さらに、Verse ではシーン エンティティやコンポーネントのあらゆる部分を詳細に設定できるため、シーンに多様な変化を加えることができます。
プロジェクトで Scene Graph を有効にする
シーン グラフをプロジェクトで使用するには、以下のとおり実行します。
ツールバーの [Project (プロジェクト)] > [Project Settings (プロジェクト設定)] を選択して [Project Settings] ウィンドウを開きます。
[Project Settings] ウィンドウの [Beta Access (ベータ アクセス)] で、[Scene Graph Tools (Scene Graph ツール)] を有効にします。 Scene Graph は、ベータでデフォルトで有効になっています。
Scene Graph の各機能を表示できることを確認するには、ツールバー で [Place Actors (アクタを配置)] を選択し、[Entities (エンティティ)] を [Place Actors] ドロップダウンで選択します。
メタバースのオブジェクト
メタバースとは 3D ワールドで人びとが交流しプレイができる、リアルタイムのオンライン ソーシャル エンターテインメント体験です。 Epic Games は UEFN 向けのシーン グラフ システムを、ユーザーがメタバース体験を構築できるように設計しています。
Scene Graph システムでは、Unreal Engine のアクタ クラスを使用しないで、オブジェクトのインスタンスを作成し、再利用できます。 シーン グラフのコアには構成要素セットがあり、それらの要素でゲームを構築するためのデータとロジックを使用し、同時にどのゲーミング環境でもオブジェクトをレンダリングおよびシミュレートします。
アクタとエンティティは交換可能ではありません。両者はシーンで連動する異なるシステムです。
Scene Graph では、ビューポートに、デザイン決定と結果すべてが即座に表示される、3D リアルタイム シミュレーション フレームワークを作成できます。 詳細パネルまたはプレハブ エディタで編集できます。
ベンダーから購入した、または作成したアセットをインポートし、オブジェクトとプレハブをカスタム ビルドするために Scene Graph で使用できます。
シーン グラフでビルドしたオブジェクトは、すべて何度も再利用可能であり、メモリを大量に消費することはありません。 シーン グラフ ビルド システムは、コンテンツ間の境界を厳格に維持する一方、複雑なコンテンツ共有と共有シミュレーションを実現するように設計されています。
エンティティとコンポーネント
エンティティとコンポーネントは Scene Graph のバックボーンです。 これらはオブジェクトの定義と動作を制御することで機能します。
エンティティは、コンポーネントや他のエンティティのコンテナとなるものです。 空のエンティティには、目に見えるエフェクトや機能はありません。 コンポーネントはエンティティに対するデータと動作を提供するものです。 エンティティに追加されたコンポーネントの組み合わせにより、シーン内でエンティティが実行する内容が定義されます。
エンティティには、異なるコンポーネントを任意の数だけ含めることができます。 ただし、エンティティに一度に追加できるのは、特定のコンポーネント型のコンポーネント 1 つだけです。 たとえば、エンティティで使用できる light_component 型は 1 つだけです。 共通型のコンポーネントを複数使用するには、コンポーネントの各インスタンスを保持する新規エンティティを作成します。
一部のコンポーネント型は、UEFN で作成されたアセットによって生成されます。 アセット生成コンポーネントは、メッシュ、サウンド、パーティクルシステムのアセットなど、プロジェクト内の既存のコンテンツに基づき自動で作成されるコンポーネントのクラスです。 これらのアセットは、生成されたコンポーネントで変更可能なプロパティを公開する場合もあります。
コンポーネントには編集可能なプロパティがあります。 これらのプロパティは、スタティックメッシュやパーティクル システムなどの物理的なプロパティのことも、プラットフォームの動きを定義する、カスタム Verse コードやゲームプレイ タグなどの論理的なプロパティのこともあります。 デフォルトでは、すべてのエンティティに、ワールド内のどこにエンティティが存在するかを指定するためのトランスフォーム コンポーネントがあります。
Verse でエンティティを作成することは、自動でトランスフォーム コンポーネントを作成することではありません。
シーン グラフでは、メッシュ、サウンドキューなどからの物理データを活用することで、大道具とゲーム メカニクスを素早くまとめることができます。
メッシュ コンポーネントをエンティティに追加し、メッシュがコンポーネントのメッシュ スロットで選択されたときに、エンティティはスタティックメッシュの実体になります。 つまり、建築物や個別の大道具をすばやくモックアップし、シーンですぐに使用できます。
たとえば、以下の動画では、1 つのエンティティが群生している常緑樹になります。
このような群生している木をそのままプレハブに変えたり、その他のエンティティと組み合わせて森のプレハブを作成したりできます。
1 つのエンティティ (シミュレーション エンティティ) は、シミュレーションを表すためにプロジェクトのルートにあります。 このシーンは、各エンティティがシミュレーション エンティティでネストされるときに作成されます。 各エンティティをマップに追加することにより、シミュレーション エンティティの子エンティティが自動的に作成されます。
プレハブのトップ エンティティは、他のプレハブと下にネストされているエンティティを含む、プレハブのルート エンティティです。 親プレハブは、子の外観と動作で構成され、シーンの他のオブジェクトとやり取りします。
画像をクリックすると拡大表示されます。
プレハブ ルート エンティティ → WoodenHouse_Tiny_Prefab
子プレハブ → WoodenHouse_RoofSmall_Prefab_C_1
子エンティティ → Building_WIndowCircle_Bright2
子エンティティ → Building_WIndowCircle_Bright4
子エンティティ → Building_WIndowCircle_Dark2
子エンティティ → Building_WIndowCircle_Dark4
子エンティティ → WoodenHouse_Floor
子エンティティ → WoodenHouse_RoofCap2
子エンティティ → WoodenHouse_RoofCap3
子エンティティ → WoodenHouse_RoofWindow2
子プレハブ → WoodenHouse_SmallFloor_Prefab_C_1
子エンティティ → WoodenHouse_Floor
子エンティティ → WoodenHouse_Wall10
子エンティティ → WoodenHouse_WallDoor_C4
子プレハブ → WoodenHouse_Windows_Prefab_C_3
子エンティティ → Building_WindowPlane_Bright3
子エンティティ → Building_WindowPlane_Bright4
子エンティティ → Building_WindowPlane_Dark3
子エンティティ → Building_WindowPlane_Dark4
子エンティティ → WoodenHouse_Windoows_10
子プレハブそれぞれには特徴として、シーンでプレハブがどのような外観であり、他のプレハブとどのように連携するのかを決定するコンポーネントがあります。 Verse を使用して、別のプレハブと子プレハブを交換したり、さらに特定のプレハブとエンティティをターゲットにしたりすることができます。また、Building_WindowPlane_Bright および Building_WindowPlane_Dark エンティティに使用する色を変更することもできます。
コンポーネントには、エンティティの一部または全体が動作する方法を決定できるように数多くのタイプがあります。 Scene Graph で利用できる多様なコンポーネント タイプの詳細については、「コンポーネント」を参照してください。
エンティティとコンポーネントの詳細については、「エンティティとコンポーネントを操作する」を参照してください。
プレハブ
Scene Graph では、エンティティを祖先と子孫の関係でまとめてパッケージ化することで、プレハブを作成します。 祖先は、親、祖父母、曽祖父母など、他のエンティティよりも上位のエンティティ レベルです。 子孫は、子、孫など、下位のエンティティ レベルです。
すべての選択エンティティ、エンティティ階層、それらのコンポーネントは即座にプレハブのこのエンティティ ツリーに追加されます。 プレハブがあると、プレハブ エディタでそのプレハブの全インスタンスをカスタマイズできます。
プレハブのインスタンスを作成するには、コンテンツブラウザからビューポートにプレハブをドラッグします。 プレハブ階層の中にプレハブをネストすることもできます。 この階層を使用して、階層のすべてのインスタンスとプレハブに変更を加えることができます。
これは、プレハブを更新し、改良するときに時間の節約になります。対象オブジェクトの全インスタンスを見つけて個別に更新する必要がないためです。
さらに、階層でサブピースを選択し、異なるコンポーネント値でオーバーライドすることにより、外観が似たオブジェクトを多数作成できます。 プレハブ エディタで編集するときに、オブジェクトを回転し、新しいコンポーネント値を異なるプレハブ インスタンスに追加することもできます。
このエディタによりすべての変更にマークが付き、[Details (詳細)] パネルで個別のコンポーネント属性にオーバーライド トグル アイコンが表示されます。 また、コンポーネント カードのドロップダウン メニュー ボタンに異なるコンポーネント アイコンも付きます。
元のプレハブ デザインに戻すには、個別のコンポーネント オーバーライド トグルをクリックします。 オブジェクトは自動的に親プレハブの状態に戻ります。 さらにコンポーネント カードのドロップダウン メニュー ボタンをクリックして、[Clear Override (オーバーライドをクリア)] を選択します。
プレハブの変更の詳細については、「プレハブとプレハブ インスタンス」を参照してください。
以下の動画では、シーン グラフを使用して 2 つの城の部屋のプレハブを作成します。
部屋は複製されています。 部屋の 1 つの要素は、フロア メッシュを選択してオリジナルを置き換えることで変更され、新しいプレハブが作成されます。 パーツをコピーして置き換え続けることにより、小さい城や村をすばやくモックアップできます。 これはコンポーネントとも連携するため、城の部屋のそれぞれに別の動作を追加できます。
プレハブを編集しても、元のオブジェクトやそのコピーの安定性やメモリ使用量に影響はありません。 つまり、レベル レイアウト、抽象デザイン、アートを仕上げて、自身の島のカスタム オブジェクトを作成できます。 シーン グラフ ビルディング システムでは、作成したプレハブを再利用し、フォートナイトに独自のゲーム ユニバースを構築できます。
Scene Graph での Verse
Verse はプログラミング言語で、シーン グラフで、ワールドからエンティティをスポーンおよび削除する場合や、カスタム コンポーネントと動作を作成する場合に使用します。
Verse を利用して、前のサンプルの家に揺れる屋外のランタンを作成できます。 Verse には、ランタンがどのように動くのかを決定する、揺れ、回転、持続時間の各プロパティを定義する方法が用意されています。
プロジェクトで作成したプレハブは、プロジェクトの「Assets.digest.verse」ファイルの Verse クラスとして 公開されます。 プレハブで定義されたエンティティとコンポーネントは、プレハブの GetEntities() と GetComponents() の呼び出しを通じて Verse でアクセスできます。
Scene Graph で Verse の使用を開始するには、「Verse を使用して独自のコンポーネントを作成する」を参照してください。
実地体験
この Scene Graph サンプル テンプレートにより、Scene Graph の各機能で作業するときの基本コンセプトを把握でき、プレハブと Verse を使用してプロジェクトを作成するときのパワーを説明する、基盤ワークフローを開始できます。 それぞれの例では、Scene Graph を使用してデザインをイテレートし、興味深く機能的なゲーム オブジェクトとゲームプレイを作成できることを示しています。
Scene Graph を使用して面白いゲームプレイを作成する方法についての詳細は、「Scene Graph を使用してプラットフォーマーを作成する」をご覧ください。
詳細なチュートリアルについては、公開されている Scene Graph のチュートリアルをご確認ください。