UDN
Search public documentation:
LevelStreamingHowToJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
UE3 ホーム > レベルストリーミング > レベルのストリーミングの手順
レベルのストリーミングの手順
概要
Persistent レベル
- プレーヤにゲームを開始させたい場所をプレーヤスタート地点として配置します。持続レベルではこのプレーヤスタート地点が空間に浮いていることが多いのですが、一旦レベルをストリーム インすると、最初にストリームされたレベルの中なら、プレーヤにゲームを開始させたい地点はどこへでも移動することができます。ゲームを始める時には持続レベルを起動することになりますが、プレーヤは実は持続レベルではなく、ストリームされたレベルのうちのひとつにあるジオメトリを歩き進むことになります。
- マップには、管理しやすいように、例えば「Headquarters_P」などの、持続レベルと分かるような名前をつけて保存しておきます。
- Generic ブラウザを開き、[Level] タブをクリックします。ここで、ストリーム インしたいレベルを記載しておく必要があります。「Headquarters」が 3 つのマップで構成される場合、3 つすべてをここに追加します。この作業は、[Level] のプルダウンメニューから、[Level]→[New From File](ファイルから新規) を選択して行います。ストリーミング レベルを追加する順番は重要ではありませんが、 UnrealEd? の今後のバージョンではレベルが整理できるよう順番の並べ替えもサポートする予定です。最終的には下のイメージのような状態で終わるはずです。 レベルのストリーム インには、距離と Kismet の二つの方法があります。距離によるストリーミング入出力は、レベル原点からの距離に基づいて行われます。一方、Kismet によるストリーミングを使うと、デザイナーは Kismet スクリプトを介して、思い通りのレベルの入出力が行えるようになり、この方法がもっともよく使われています。
- レベルのストリーム インには、距離と Kismet の 2 つの方法があります。
- 距離によるストリーミング入出力は、レベル原点からのプレイヤーの距離に基づいて行われます。
- Kismet のストリーミングは、デザイナーが Kismet スクリプトを介して思い通りのレベルの入出力が行えるので、よく使われる方法です。
Persistentレベルの作成方法
- UnrealEd? で新規マップを作成
- 立方体など、単純な形状の BSP ジオメトリを追加
- プレーヤスタート地点を追加
- レベルブラウザにストリームしたいレベルを追加
- マップを保存して命名
Kismet でのスクリプト済みストリーミングの方法
- Kismet を開く
- レベルをスタートアップに設定([New Event](新しいイベント) → [Level Loaded](レベルのロード))
- 存在するレベルの数だけ[Stream Level](レベル ストリーム)を実行([New Action](新しい操作)→[レベル]→[Stream Level](レベル ストリーム))
- [Stream Level](レベル ストリーム)の各操作をクリックして、LevelName ([レベル名) と表示されたところにレベル名を入力して、対応するレベルを追加する。
- [Stream Level](レベル ストリーム)の各操作への[Load](ロード) とレベルのロードを接続
スクリプト済みストリーミングの手順リスト
- Kismet を開く
- LevelLoaded (レベルのロード) および StreamLevel (レベル ストリーム) の操作を追加し、スタートアップを Load に接続
- Stream Level(レベル ストリーム)で左クリックし、[LevelName] (レベル名) のフィールドにストリームしたいレベルの名前を追加し、bMakeVisibleAfterLoad フラグをチェック
- マップを保存しゲームを起動
距離ベースによるストリーミング
距離によるストリーミングの手順リスト
- "Generic Browser" を開く
- "Level" (レベル) のタブをクリック
- Generic ブラウザのファイルメニューから[Level]→[New From File](ファイルから新規作成) を選択し、ストリーム インしたいレベルを選択
- "Distance" ストリーミングを選択
- "Persistent Level" が選択状態であることを確認し、右端に WorldInfo のプロパティを展開。WorldInfo_# で右クリックして "Edit Properties" を選択
- 開いているプロパティ メニューで、WorldInfo に続いて StreamingLevels を展開
- レベルをワールドにストリーム インする、ゲーム内におけるプレーヤからの距離を入力し、この距離を測定する原点となるワールド スペースの座標位置を変更します。
ストリームしたレベルを操作する
ローディングおよびイベント
通常レベルがロードされた時に多くのイベントを展開させる "Level Startup" (レベル スタートアップ) の操作に代わり、新しいKismetの操作が追加されました。この操作は "Level Loaded And Visible" (レベルをロードして可視にする) という名の機能です。基本的には "Level Startup" と同様の働きをしますが、 "Change Level Visibility" (レベルの可視性を変更) の操作と併用するように作られています。レベルがプレーヤに可視になっているときは、CLV とストリーム インのいずれの方法でも、[bMakeVisibleAfterLoad] (ロード後可視にする) がチェックされていれば、 "Loaded And Visible" (ロードして可視にする) が発動されます。 "Remote Events" (リモート イベント) と一緒に使うことにより、ストリームしたレベルを、イベントの授受のほか、ロードおよびアンロードも必要に応じて行うことができる、自己完結のエンティティとすることができます。例えば下のイメージでは、主題となるレベルが可視になると共にプレーヤがテレポートし、他のレベルからリモート イベントが発動されると何らかの生物のスポーンも行います。 例5: ストリーム レベルのサンプル スクリプトアクタのレベル間の移動
2007 年 12 月 QA 承認済みビルドの時点で、アクタを単純に 1 つのレベルからコピー (Ctrl + C) して、現在のレベルを変更し、貼り付ける (Ctrl + V) だけで、アクタのレベル間移動ができるようになりました。しかしながら、これは MoveSelectedActorsToCurrentLevel のものと似たようなパスウェイを使用するので、アクタ間の潜在的なリファレンスを解決するためには、アクタを スクラッチ ワールドに直列化しなければいけません。この機能は変更リスト #203995 と #206418 で導入されました。 2007 年 1 月 QA 承認済みビルド以前のビルドでは、一度にたくさんのアクタを移動させた場合は、 メモリ不足 が起こったかも知れませんが、これはエディタ トランザクション バッファのパフォーマンス (とメモリ使用量) を修正した際に修正されました (変更リスト #206829)。 また、2007 年 1 月 QA 承認ビルドでは、 レベル ブラウザ参照 内の [New Level from Selected Actors] (選択されたアクタから新しいレベル) ボタンで、アクタを新しいレベルへ移動することができます (変更リスト #206324)。最適化
ほとんどのデベロッパーは、パフォーマンスやワークフローのためには、ストリーミング レベルが高ければ高いほど良いと感じるはずです。しかしながら、これは現在システムにある制限要因で調節されるはずです。すなわち、一つのレベルに設置されたアクタは、他のレベルにより kismet 内で直接リファレンスされることができません。遠隔イベントは、ストリーミング レベル全体でイベントをトリガするために発動され、受信されますが、この時点ではレベル全体でアクタを直接することはできません。上記の写真では、Pathnode_0 と Pathnode_1 はこのスクリプトと同じレベルに位置していなければならず、この場合では Headquarters_2 です。もし、これらどちらかのノードが HQ_1 または 3 にあった場合は、これらの操作は機能しません。 2007 年 12 月 QA 承認済みビルド以降、既存のレベルをストリーミング チャンクにより簡単に分ける機能があります。- ワールド内でたくさんのアクタを選択します。
- レベル ブラウザの Level (レベル) にある New Level from Selected Actors (選択されたアクタから新しいレベル) を選択します。
- 新しいストリーミング レベルがディスクに作成され、ワールドに追加されます。その後、選択されたアクタは新しいレベルに移動されます。