Suutaの秘密基地

動く...動く...

UE4 レベルのロードディング画面

ローディング画面について

大抵のゲームはゲーム開始時やステージ移動の際にローディング画面をはさむ。重たいステージを読み込むためには時間がかかり、プレイヤーが操作可能になるまでに時間がある。 ローディング画面はロードの進行度合いを示す場合もあるけど、ロード中にゲームがフリーズしたと思わせないための役割をしている。

OpenLevel と LoadStreamLevel

UE4ではレベル間の移動手段が2つ。
BPにはOpenLevel()LoadStreamLevel()がある。2つの違いは処理(レベルの読み込み)が終わるまで待つか・待たないか。 つまりOpenLevel()では重いレベルを読みこむと他の処理が止まり、画面がフリーズしたかのように見える。
ならLoadStreamLevel()は良いのかと言ったらそうじゃない。次のレベルを裏で先読みをして、任意にロードする際の処理を軽くするためにある。

LoadStreamLevel()にはMake Visible After Load(ロード後に表示するかどうか)のフラグがあり、チェックを入れないとレベルが表示されない。 "その場でロードを完了させて表示させたい"という意味ではOpenLevel()と変わらない気がする。 テンプレートのレベルでは分からないけど、InfinityBladeのレベルアセット読みこみではロード待ちを体感できる。

カクつかないロード画面が欲しい

ロードがカクつくのはどうしようもないので、ごまかすためにロード画面のUMGを作ってみた。しかしそんなに甘くはなかった... ロードするとUMGが一瞬カクついた。どうやらUMGの処理も止まるようだ。(アニメーションのないロード画面ならごまかせるかもだけど...)
今度は、UE4サンプルプロジェクトのActionRPGの非同期ローディングを参考に、カクつかないロード画面を実装したいなと思う。