UE4 レベルのロードディング画面
ローディング画面について
大抵のゲームはゲーム開始時やステージ移動の際にローディング画面をはさむ。重たいステージを読み込むためには時間がかかり、プレイヤーが操作可能になるまでに時間がある。 ローディング画面はロードの進行度合いを示す場合もあるけど、ロード中にゲームがフリーズしたと思わせないための役割をしている。
OpenLevel と LoadStreamLevel
UE4ではレベル間の移動手段が2つ。
BPにはOpenLevel()とLoadStreamLevel()がある。2つの違いは処理(レベルの読み込み)が終わるまで待つか・待たないか。
つまりOpenLevel()では重いレベルを読みこむと他の処理が止まり、画面がフリーズしたかのように見える。
ならLoadStreamLevel()は良いのかと言ったらそうじゃない。次のレベルを裏で先読みをして、任意にロードする際の処理を軽くするためにある。
LoadStreamLevel()にはMake Visible After Load(ロード後に表示するかどうか)のフラグがあり、チェックを入れないとレベルが表示されない。 "その場でロードを完了させて表示させたい"という意味ではOpenLevel()と変わらない気がする。 テンプレートのレベルでは分からないけど、InfinityBladeのレベルアセット読みこみではロード待ちを体感できる。
カクつかないロード画面が欲しい
ロードがカクつくのはどうしようもないので、ごまかすためにロード画面のUMGを作ってみた。しかしそんなに甘くはなかった...
ロードするとUMGが一瞬カクついた。どうやらUMGの処理も止まるようだ。(アニメーションのないロード画面ならごまかせるかもだけど...)
今度は、UE4サンプルプロジェクトのActionRPGの非同期ローディングを参考に、カクつかないロード画面を実装したいなと思う。