Language:
Page Info
Skill Level:
Engine Version:

ワールド合成のユーザーガイド

World Composition は大きなワールドの管理を簡略化することを目的としています。目的のひとつに、 ストリーミング情報の格納にパーシスタント レベルの使用回避があります。 理由は、チーム内のレベルデザイナが同時にレベルの作業を行うと、これがボトルネックとなってしまうからです。パーシスタント レベルは、ストリーミング情報を何も格納しない代わりにフォルダをスキャンして、 見つけたレベル全てをストリーミングレベルとして扱います。それぞれのストリーミングレベルには、パッケージヘッダに保存した情報があります。 World Composition は、メモリにレベルをロードせずにこの情報を読み込みむことができます。パーシスタント レベル以外の全レベルは、 最初は World Composition に読み込まれていません。ワールドのあらゆる部分を、いつでも手作業でロードまたはアンロードすることができます。

ワールド合成は、ワールド基点移動機能に依存します。 この機能は、距離に基づいたレベルストリーミングと使用すると、定数値がエンジンにハードコーディングされた「WORLD_MAX」に限定しないワールドの作成を有効にします。

World Composition をアクティブにする

ワールド合成が管理するワールドは、[World Settings (ワールド設定)]Enable World Composition フラグをオンに切り替えると有効にすることができます。

ワールド合成が管理するワールドの基点は、ワールド設定 の Enable World Origin Rebasing フラグをオフに切り替えると無効にすることができます。

WorldBrowserSettings.png

レベル階層

ワールド合成を有効にすると、プロジェクト内のレベルがすべて [Level (レベル)] ウィンドウに表示されます。このウィンドウを開くには、
[Windows] メニューをクリックして [Level (レベル)] を選択します。

[Level (レベル)] ウィンドウのエントリは、ワールド階層を表します。

LevelsWindow.png

名前のテキストが青いレベルは現在のレベルを表します。現在、ロードされたレベルは名前が白いテキストで表示され、アンロードされたレベルは名前がグレーアウト表示になります。

レベルをワールド合成に追加するには、名前を ダブルクリック します。ドラッグ&ドロップを使って、個々のレベル間の関係を作成することができます。 子レベルは親レベルの相対位置を格納するので、親レベルの位置が変更すると、全ての子レベルの位置も変化に応じて再計算されます。

[Level (レベル)] ウィンドウでは、レベルのロックと保存だけでなく、レベル名の右にあるボタンで各レベルの Level ブループリント を開くことができます。

レベル合成

Enable World Composition がオンの場合、[Level (レベル)] ウィンドウの上部にワールド合成を開くボタンがあります。

WorldComposition.png

これはワールドのレイアウトです。

world_layout.png

レイヤー

デフォルトでは、全レベルは Uncategorized レイヤーに割り当てられています。レイヤーは、ストリーミング距離に関する情報を保持するので、 特定のレイヤーに割り当てられたレベルはそのストリーミング距離を継承します。ストリーミング距離が無効にされたレイヤーに割り当てられたレベルは、距離のストリーミングから取り除かれるので、 ブループリントを使った制御が可能になります。

新規レイヤーは、既存のレイヤー名の右にある + ボタンをクリックして作成します。 一度にレイヤーに割り当てができるレイヤーは 1 つだけです。

レイヤーの削除や編集ができないので、ストリーミング距離を変更する場合は、自身の設定値とレベルを割り当てて新規のレイヤーを作成するといいかもしれません。 割り当てたレベルがないレイヤは、次回レベルを開くときに自動的に削除されます。

ミニマップ上のレイヤーをクリックすると、レイヤーでレベルをフィルタをかけることができます。Ctrl+マウスクリック 操作で、複数のレイヤー間のオン / オフを切り替えることができます。 オンに切り替えるレイヤーが存在しない場合 (デフォルト) 、フィルタリング処理は実行できません。

ミニマップ

パーシスタント レベルを除くそれぞれのレベルは、ワールド内に画像があり、位置が決まっています。レベルの画像は、 レベルのコンテンツが変更するたびに更新されます。このマップは、ワールドを上から捉えたプレビューを有効にして、カーネル イメージを作成し、ブルームの畳み込み機能の使用を設定する際に、 他のレベルの端にスナップします。Ctrl キーを押すと、レベルの移動がレベル エディタのスナップ設定を 使用するようになります。レベル位置は整数座標系で格納されるので、 隣接するレベル タイルを完全に一致させる場合、レベルは整数のバウンドサイズでなけれななりません。

Landscape アクタに基くレベルは、、基本となるランドスケープ コンポーネント サイズに基いてスナップ処理されます。異なるレベルで Landscape アクタ間の編集を シームレスに行うためです。

すべての Landscape アクタはエディタ ビューポートで平行移動を無効化します。 ランドスケープが任意の量だけ移動はできず、他のランドスケープ レベルとの調整機能が失われているようにしてください。

ワールド合成に最初にレベルがロードされる時に、レベル内に新規の Level Bounds アクタが自動作成されます。 Level Bounds アクタはレベルのサイズ計算に使用されます。

Level Bounds アクタは、デフォルトではレベル内に存在するすべてのアクタを含むように自動的にリサイズされます。ただし、 中にはスカイボックスのように、かなり大きめのバウンディング ボックスを持つことができるアクタもあり、その場合ワールド ミニマップのレベル タイルが非常に大きくなる結果となります。 レベル境界の計算から除外したいこのようなアクタがある場合、 レベル境界の自動計算を無効にして、 Level Bounds アクタに固定サイズを設定することができます。

transform.png

Level Bounds アクタを機能させるためには、この時点でビューポートでリアルタイムが有効にされていなければなりません。

ミニマップ上の黄色い四角は、安全な編集領域を表します。安全な編集領域のサイズは、エンジンの WORLD_MAX constant と同等です。 この領域外のレベルは自動的に非表示となり、それらのレベル画像に反映されます。ワールド合成は、 作業中のレベルをエディタのワールド基点付近に保持しようとします。この機能は「focusing」と呼ばれ、 この安全な編集領域外のレベルでの編集を開始すると、現在のワールド基点を新しい位置に変更します。変更されたレベルは、ディスクへの保存時に、まだオリジナルのアクタ変換を保存するので、 変更されたレベルはアクタの絶対位置を変えません。

UI キー

world_layout_UI.jpg

番号

ステータスバー

説明

1

Layers

レイヤー名をクリックしてそのレイヤーによるフィルタリングに切り替えます。または、 + をクリックして新規レイヤーを作成します。

2

WORLD_MAX

「WORLD_MAX」 constant のスケールを示すバーです。

3

World Origin

ワールド基点の現在位置です。

4

Current level

現行レベルの名前です。

5

Mouse cursor position

マウスカーソルの現在のワールド位置です。

6

Marque selection

ワールド単位で示したマーキー選択ボックスのサイズです。

7

World size

すべてのレベル バウンディング ボックスの合計として計算された、ワールドのサイズです。

レベルの詳細

[Level] ウィンドウにあるレベルの詳細を表示するには、対象を選択してから、ツールバーの虫眼鏡アイコンをクリックします。これによって、 [Level Details (レベル詳細)] ウィンドウが呼び出され、ドロップダウン メニューの利用可能レベルの情報を切り替えることもできます。

level_details.png

タイル設定

設定

説明

Package Name

選択レベルのパッケージ名です。読み取り専用の情報です。

Parent Package Name

親レベルのパッケージ名です。レベルに指定された親が存在する場合、位置は親レベルに相対的な場所となります。

Position

0 のワールド基点からのレベルオフセットです。整数の 2D ベクターとして格納されます。レベル内の全アクタは、レベルがワールドに追加された時にこの値で変更されます (表示されます)。そしてレベルがワールドから削除されると再び変更されます (非表示)。

Absolute Position

レベルの絶対位置です。親レベルが無いレベルと同じ 位置 です。読み取り専用の情報です。

Z Order

ミニマップのレベルタイルの Z ソート順を定義します。重複タイルがいくつか存在したり、ユーザーが特定の順序でソートしたい場合に実用的です。

LOD 設定

ワールド構成のそれぞれのレベルは、最大 4 つまで LOD ストリーミング レベルを持つことができます。 ストリーミングの距離設定に合わせて、ストリーミングレベルは対応する LOD レベルと置き換えられます。LOD
レベルは、[Package name]_LOD# パターンを利用して World Composition によって認識されます。この時、数値は 1 から 4 でなくてはいけません。 LOD レベルは手動あるいは Simplygon を必要とする自動 LOD マップ ジェネレーターで作成することができます。

アンリアル エンジン 4 は Simplygon インテグレーションが組み込まれて出荷されますが、使用するには Simplygon からライセンスを取得する必要があります。

設定

説明

Num LOD

選択したレベルの LOD レベルの数です。

LOD[1..4]

Generate

[Simplygon ProxyLOD] 機能を使用して、レベルに収容されているスタティックメッシュ アクタを 1 つの単純化したプロキシメッシュへマージして、オリジナル レベルの簡素化バージョンを作成します。ランドスケープ アクタは最も高いランドスケープ LOD を使ってスタティック メッシュに変換されます。一般的にランドスケープアクタとたくさんのスタティックメッシュアクタを伴うレベルは、簡易化された 2 つのスタティックメッシュアクタを含む LOD レベルとなります。この操作により、ディスクに存在する以前の LOD レベルが上書きされます。

Distance

オリジナルのレベルストリーミング距離と相対的な距離です。例えば、オリジナル レベルのストリーミング距離が 1000 で LOD1 レベルが 1500 の距離に設定されている場合、 LOD1 レベルは [1000..2500] 範囲とオリジナルレベルが [0..1000] 範囲の時に表示されます。

Details percentage

オリジナルメッシュの縮小時に詳細を維持する割合です。

ワールド基点の移動

World Composition エディタは、任意の量でワールド基点の移動をサポートします。ワールド基点を移動すると、結果としてワールドに登録されたすべての アクタ にオフセットベクターを追加します。それぞれのアクタは、追加操作を行うために、子クラスでオーバーライドが可能な ApplyWorldOffset 関数があります。新規に AActor の派生クラスを作成して、これに絶対位置の値を格納した場合、ワールド基点の変更に対応して正しく機能させるためには、 ApplyWorldOffset 関数をオーバーライドして、絶対値を関数内へ移動しなくてはいけません。レンダリングと物理プリミティブは、ゲームスレッドのアクタへ平行移動します。

大きなワールドとマルチプレイヤー

現時点のワールド基点移動は、マルチプレイヤーゲームではサポートされていません。以下の 2 通りのソリューションは、特定のニーズに対して実行することができます。

  1. 各自のサーバーソリューションを実行する。MMO ライセンシーがよく行う方法です。

  2. クライアントとアンリアル デディケイテッド サーバー間にいくつかのレイヤーを実装することにより、クライアントから移動した絶対位置を変換し、正確な専用サーバーへ誘導します。専用サーバーはクライアントが存在するワールドの一部のみを保持します。

ただし、ワールド基点の移動を無効にしている場合、Dedicated サーバーでタイル処理されたワールドを実行することができます。 専用サーバーは距離に依存するすべてのレベルをロードし、それに接続されているクライアントは通常通りストリーミング距離設定を満たすレベルのみロードします。サーバーはクライアント別に可視設定のレベルのリストを保持し、このリストによってアクタ レプリケーションにフィルターをかけます。

ランドスケープ レベルの作成

レベル タイルを 右クリック すると、Landscape アクタの入っているコンテキストメニューが呼び出され、それらにランドスケープ プロキシ アクタの隣接レベルを追加するためのオプションが表示されます。これには隣接レベルのランドスケープがソースとなるランドスケープのサイズと同等であることが必要となります。

タイル化したランドスケープのインポート

[Levels (レベル)] パネル ツールバーにタイル化したランドスケープのインポート用のオプションがあります。タイル化したランドスケープはタイル化したハイトマップから作成されます。それぞれのハイトマップ タイルはその中にあるランドスケープ アクタのレベルを表します。タイル化されたハイトマップ / ウェイトマップは World Machine などのアプリケーションからのエクスポートが可能です。隣接するハイトマップ タイルは、境界線の頂点を共有します (World Machine では「エッジ頂点を共有」します)。また、それぞれのタイルの解像度は、このページ ランドスケープの作成 の推奨に従ってください。

tiled_heightmap_import.png

設定

説明

Select Heightmap Tiles...

インポートしたいハイトマップ タイルを複数選択できます。

Flip Tile Y Coordinate

タイルを Y 軸反転でインポートするかどうかを設定できます。ワールドマシンで作成したタイルをインポートする場合には、このオプションはオフにしてください。

Tile Coordinates Offset

原点からタイルをオフセットします。0 に設定すると、座標軸 x0_y0 のタイルがワールド基点に作成されます。

Import Configuration

選択したタイルの解像度に合わせて、可能な限りのランドスケープ コンフィギュレーションを作成します。

Landscape Scale

タイル化したランドスケープのスケール量です。

Material

使用するマテリアルです。マテリアルが選択されると、マテリアルに存在するそれぞれのランドスケープ レイヤーに対してウェイとマップと各レイヤーのブレンド方法の割り当てが可能になります。

タイル化されたランドスケープをインポートすると、ミニマップのコンテキストメニューを 右クリック すれば、選択中のレベルに対してハイトマップとウェイとマップを再インポートできます。