UE4でオープンワールドを構築した、A Boy and his Kite(いわゆるKite Demo)を使ってWorld Composition機能の使われ方を確認します。UE4.24を使います。
KiteデモのプロジェクトはLearnタブの中からダウンロード可能です。
スペック十分なら GDC_Landscape_01 というレベルを開くようにガイドされます。
24GBのメモリ搭載が必要とのことです。
何も配置されていないかのようなレベルが現れますが、これはランドスケープ等が全てサブレベルに配置されており、サブレベルがロードされていないためです。Playボタンを押すとプレイヤー周辺のランドスケープが自動的にロードされます。
Playボタンを押すと、レベルを自由に散策するモードになりますが、コンソールで"PlayKiteCine"と入力すると「少年と凧」の映像が再生されます。
Persistent LevelにEnable World Compositionがチェックされていることに注目です。
Enable World CompositionをチェックするとLevelsタブの使い方が根本的に変わります。複数のサブレベルが見えますが、これらは明示的に追加したものではなく、Persistent LevelであるGDC_Landscape_01の存在するフォルダ以下のレベルが自動的に管理下に入ります。
Levelsタブのサブレベルをダブルクリックするとサブレベルがロードされます。編集したい所だけを選んでロードできるのは便利です。
World Compsitionタブを開くには、Levelsタブのこのボタンを押します。
世界全体を上から俯瞰した図が出現します。
編集中やプレイ中にはWorld Compositionタブ内に矢印が表示され、現在地を表示するミニマップの役割もしてくれます。
Altキーを押すと、どのようにサブレベルで区切られているかが可視化されます。
ここで、マウスカーソルを動かすとマウスカーソル周囲のサブレベルの枠が緑色になります。これはプレイヤーがマウスカーソルの位置にいる時にロードされる領域であることを示しています。各サブレベルにカーソルをあわせた時に表示されるStreaming Distanceは、プレイヤーがこの距離以内に近づいた時にそのサブレベルがロードされることを示します。
上の、「Uncategorized」「Distance-AlwaysLoaded」「5km」「CineStreamLayer」という表示はレベルが属するレイヤーを示します。用語がややこしいですが、アクターが属するレイヤーとは別物です。このレイヤーの役割は名前からわかりにくいですが同じStreaming Distanceを共有するサブレベルです。Uncategorizedはいわばデフォルトのレイヤーで、50,000(500メートル)まで近づくとロードされます。Distance-AlwaysLoadedは 2,147,483,647(2000万キロメートル)が設定されており、つまり常にロードされたままになります。一方、CineStreamLayerはStreaming Distance Disabledとされ、プレイヤーとの距離によるロードを無効化、つまり開発者が自分でロードするサブレベルということになります。
Level Detailsタブを呼び出してみます。
ここでは、各サブレベルに対する設定を行えます。サブレベルのLODやFoliage, Grassをベイクするかなどが選べるようです。ここで編集できるのはロード中のサブレベルに限られており、選択肢に出るレベルはWorld Compositionタブで選んだレイヤーに属するレベルにフィルタリングされているようです。
各サブレベルにはLevelBoundsというアクタが存在し、World Composition上のサブレベルの区画を定義するのに使われています。区画は自動で計算されるようですが、手動で設定することもできるようになっています。
2019年はVirtual TexturingやBlueprint Custom Brushes、Landscape Layer system、Sky Atmosphere等、オープンワールド構築に役立ちそうな機能が次々に追加され、これからUE4を利用したオープンワールド制作が盛り上がりそうな予感がします。
その中でもWorld CompositionはKite Demoで使われていることもあり、歴史の長い部類です。実際試してみると、サブレベルを置くだけで勝手にストリーミングしてくれる手軽さは魅力で、いわゆるオープンワールド的な広大な世界を舞台としたゲーム以外でも便利に使えそうです。
No comments:
Post a Comment