[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として何もないレベル(トランジション機能を持つ)という感じにして
各ステージはサブレベルとして読み込むみたいな感じになりそう
以上