[UE4][ue4jam2018]ステージ作成の反省

概要

ue4jamで作ったミニゲームのステージ作成についての反省。

・1つのLevelに全部詰め込む方法でやったけど

・ほんとはLevel分けた方がいいよなぁ

・たぶんこうしたらいいかな

という話です。

前提

・ゴルフのミニゲームである

・地形はLandscapeで作る

・「スタート」「ゴール」「カメラ」の三要素があれば成立する

やったこと

1レベルに複数ステージを詰め込んだ。

(タイトルとリザルトも入っている)

・スタート地点用アクター(ゴルフのボール置くピンのメッシュ)

・ゴール地点アクター(グリーンと旗と穴)

・ステージごとのカメラ

上3つを一つの組として、

GameModeBaseクラスのBeginPlayでワールド内の各アクターを検索し、アクター名の末尾の数字で組を決定した。

なぜそうしたか

・Level遷移について詳しくなかった

・今回、Level遷移についてチャレンジ目標に設定していなかった

問題点

・1つのLevelに複数つめこんでいることについて

・このLevelデータ壊れたら全アウト

・誤操作で違うステージいじっちゃうかも

・メモリ的な負荷

→1ステージ1レベルにする

・開始時に検索することについて

・BeginPlay時の処理負荷になっちゃうから、最初からGameModeが変数として知っていた方が良さそう

・でも、GameModeそのものには直接値を設定できない

→1ステージ1レベルにしてればそもそも問題になる負荷にならなさそう

→それでも問題になりそうなら、Level BPでReferenceを指定するとか

改善案

・テンプレートになるようなレベルを作る

・スタート、ゴール、Landscape配置済み

・ゲームモード、コントローラ指定済み

・スタートとゴールはレベルブループリントでreference設定済み

→新ステージを作るときは、テンプレを複製して配置とLandscapeをいじるだけでよい

・レベル切り替えの仕組みをGameMode側が備える

・たぶんPersistantとして何もないレベル(トランジション機能を持つ)という感じにして

各ステージはサブレベルとして読み込むみたいな感じになりそう

以上​