World Streamer2クイックスタート(デモを見る)(使い方)

 

World Streamerとは?

World Streamer 2は超巨大な大陸を小さなピースとして分割して
ゲーム動作時のパソコンへの処理不可を軽減させる処理を行うアセットです。
バラバラのピースに分割した大陸をそれぞれ別のシーンとして保存し
カメラの描画位置に応じてシーンを読み込んだり、読み込みを開放したり
してパフォーマンスへの負荷を下げているようです。
YouTube Tutorial

 

まずはデモを動かしてみよう!

  1. WorldStreamer2をUnityパッケージマネージャーからインストール(3.0GB)
  2. ProjectウインドウからWorldStreamer→Tutorial Work and Game Scene→Game Streamer Sceneをダブルクリックでロード
  3. Hierarchyウインドウから 「World Streamer」オブジェクトをクリック
  4. Inspectorウインドウから 「Streamer」スクリプトコンポーネントを参照
  5. Unityメインメニュー → File→Build Settings… からシーンを確認
  6. 「Streamer」スクリプトコンポーネントのAdd Scenes to build settingsをクリックすると
    分割された大陸のシーンがビルドシーンに自動的に追加される。
  7. Game Streamer Sceneで再生ボタンを押すとロードが始まりデモシーンを動かせる!

動くかなあ?ワクワク
デモシーンを動かしながらSceneウインドウでカメラに写っていない大陸が描画されていなかったり、カメラを動かすたびに描画の切り替えがされていたら動作は成功だ!

 



 

使い方

WorldStreamer2クイックスタート。公式約1時間の動画を4分に短縮。Terrainをシーンに分割する手順を解説しています。素人ひとりゲーム制作

テキストだとわかりにくいので操作説明動画を作りました。
動画を見て、さらに分からなかった場合はブログのテキストで追いかけて操作方法を習得するとよりよいと思います。

 

A 巨大な大陸のシーンを作る

  1. 巨大(例では4km×4km)なテレインに配置したい物(建物・木・草・池など)をすべて配置する。

B 巨大な大陸を細分化する

  1. Tools → Nature Manufacture → World Streamer → Scene Manager → 新しくウインドウ 「Scene Manager」 が開く
  2. Terrain Managerタブで細分化する設定を指定できる
  3. ウインドウやや下のほう Terrain splitter で Terrain create folder 、Split size、Add terrain culling を設定する
  4. シーン上のTerrainを選択 → Scene Managerウインドウの Split selected terrains をクリック → 大陸の細分化処理が走り出す。
  5. この時点でテレインが指定したサイズに小さく分割されていることがシーンビューから確認できる。チュートリアル動画16:45
  6. 分割元となったテレインを非表示にする → 実際にデバッグプレイを再生させるとカメラの位置に応じて分割されたテレインが表示されたり、表示されなかったりと最適化された処理が動く。(先に手順Dを行ったのでもしかしたら手順Bだけでは動かないかも?)
  7. ソースとなるメッシュをOFFにする Use base map をオフにする
  8. Terrain lodでは数千ポリゴン以上のTerrainを描画したくない場合はlodを4くらいに設定するとよいらしい。

C 細分化したTerrain(大陸)を分割したシーンとして生成する

  1. Scene Manager → Streaming layersタブ → Add layers を選択すると、細分化したシーンを格納するフォルダが生成される。チュートリアル動画26:20
  2. 手順Dで指定する、SceneCollectionManagerアセットファイルが生成される
  3. GameObject Prefixに分割元となったテレインの名前を入力(テレイン名と一致していないとSplit All Scenes Into Virtual Gridが動作しない)
  4. Scene Prefixに生成されたScene Colletion Managerの名前を入力(入力された名前がシーン名に適応される)
  5. Split All Scenes Into Virtual Gridを押すとヒエラルキー上の分割したテレインの名前と階層が変わる。(処理が一瞬すぎてよく見てないと気が付かないので注意)
  6. 設定がうまくいっていると、一番下の Generate All Scenes From Virtual Grid ボタンを押すと分割したテレインをシーンファイルとして生成してくれる。(指定したフォルダに保存される。)

D 細分化したシーンをビルドセッティングに登録する

  1. World Streamerオブジェクトを作成(空のオブジェクト名前をつける)して、Streamerスクリプトをアタッチ、タグをSceneStreamerに設定(ボタンで自動的に変更できる)
  2. 、Collider Streamer Managerオブジェクトを作成(空のオブジェクト名前をつける) → Collider Streamer Managerスクリプトをアタッチ、タグをCollider Streamer Managerに設定(ボタンで自動的に変更できる)
  3. World Mover(空のオブジェクト名前をつける) → World Moverスクリプトをアタッチ
  4. World Streamerオブジェクト → Streamerスクリプト → Scene Collection ManagersのSizeを1に設定 → 手順Cで作成したSceneCollectionManagerアセットファイル(分割されたシーンを読み込む情報が入っているプロジェクトアセットファイル)をリストにアタッチ。
  5. Add scenes to bulid settingsを押すとScene Collection Managersで設定されたシーンがビルドセッティングに自動的にすべて追加してくれる。

E Playerの位置に応じて大陸を読み込んだり読み込まなかったりする

ここまでの手順がうまく動いてくれると、実際にカメラを動かした際に大陸をシーン単位で読み込んだり読み込まなくなったりして巨大な大陸のカリング設定ができているはずです。これで、処理負荷(メモリ使用量など)を減らすことに成功して、巨大な大陸を作成してもPCのリソースを節約しながらゲームをプレイすることができそうです。

 



 

あとがき・背景

パフォーマンスの件でも検証しますが、どれだけ巨大な大陸を配置しても
ゲームが快適に動作するのかがわからず、今回は大陸を別シーンとして
細切れに分割できる方法を発見し軽く触ってみました。

理想としては超巨大な(100km×100km)くらいの1枚の大陸を作成し
GaiaProTerrain Composer 2Polaris 2021などで地形を造形し
それらをWorldStreamer2で分割ロードする方法が最も楽な制作方法
ではないかと考えていますが、Unityがそれらの編集に耐えられず
クラッシュする可能性もあるので、実際はどうなのでしょうか?

尚、GaiaProは高機能で最強の大陸作成アセットですがUnityの
バージョンアップをするたびに3万円超の課金を必要とするので
購入の際はどれをメインで制作していくかよく考えてからの
購入をおすすめします。
(自分はそれを知らずにUnity2021へバージョンアップして泣きました。)

余談

契約の浮遊船では巨大な大陸を冒険するオープンワールドのゲームにしたかったですが
大陸を何処まで巨大にしてもゲームとして動作するのかがわからず
1ステージに1つの大陸を配置する形でオープンワールド形式を諦めました。
その際の大陸サイズは最大でも16km四方で、16kmでは問題なく動作しました。

とはいえ大陸制作以外にも原点位置から20000mくらい離れると
キャラクターの服が乖離し始める現象も確認している(Youtubeリンク貼る予定)ので
冒険の範囲を下手に大きくしすぎると技術的な問題で詰む予感がしています。

 

更新の履歴

今回(221228)

は「World Streamerとは?」「まずはデモを動かしてみよう!」「あとがき・背景」「余談」を執筆しました。より詳しい操作方法やアセットの特徴などは実際に触っていく中で少しづつ時間をかけて調査して行きます。

2回目更新(230602)

は「使い方」を執筆しました。文字情報だけではあまりにもわかりにくいので、
● 手順を数分以内にまとめたクイック操作ガイド動画を時間があれば作成します。
また技術的な課題として、今回は1つのシーンに作成した巨大な大陸を分割しましたが、
● 複数のシーンに作成した巨大な大陸を分割できないか?を検証します。
● もしくは1つのシーンに100km×100kmの大陸を編集作成できるかの検証を行う?
つもりです。あと、アセット自体が3.5GBあるので、
● 余計なアセットデータを省いた軽量な状態で正常動作ができるか?
も検証したいです。今回は記事に継ぎ足す形となりましたが次回はページを分けて

World Streamer2[検証]複数大陸の分割最適化はできるのか?(記事できたらリンク貼る)
World Streamer2[検証]最小限のアセットで動作させたい。(記事できたらリンク貼る)

というタイトルで別記事として更新したいです。

終わり

コメント

タイトルとURLをコピーしました