【UE4】Blank プロジェクトの中身を追いかけてみる
色んなキッカケがありまして、3年ぶりにUE4を触ることになりました。元々の知識不足と度重なるバージョンアップで知らないことだらけで、まずは空のプロジェクトを追いかけてみることにします。
実は3年以上前に別ブログで「テンプレートのFirstPerson(4.8.2)を解析してみる」と称して追いかけたことはありますが、今回はFirstPerson ではなく空っぽの Blank プロジェクトでおさらいも兼ねて初心に戻った気持ちで挑みます。
目次
確認バージョン
4.24
※言語は英語に変更しています。
Blank プロジェクト
新規作成し確認するのは こちらの[Blank] プロジェクトです。BPプロジェクトとして作成しました。
世界を確認する
Blank プロジェクトはUE4の世界を構築するための最低限のセットアップが含まれたプロジェクトになっている様です。再生するとWASDで移動できたり、よくあるファーストパーソンシューティングの操作がついてきます。それでは、処理の流れをざっくり追いかけてみます。
処理を追いかけるには
- プロジェクトの設定を確認する
- レベルブループリントを確認する
- レベルに配置されたアクターを確認する
この3ステップを踏めば良いはず。基本は頭から追いかける。これはいつの時代も変わらないのでしょう。
プロジェクト設定を確認する
メニューバーの[Edit] -> [Project Settings…] からプロジェクト設定を開きます。[Maps & Modes] の Default Modes 見てみると Default GameMode に GameModeBase が設定されています。
となりの+ボタンにフォーカスするとCreate New Blueprint のTips が表示されました。ここからGameMode 用のBlueprintが作れる様なので作ってみます。
Blueprint名(以後BP) はMyGameMode としました。作成すると先ほどのDefault GameMode がMyGameMode に置き換わります。 作成した MyGameMode にはSelected GameMode に列挙されている様な Class が予めデフォルト値として設定されています。
Default Pawn Class | ワールドに配置して操作できるオブジェクト。 |
HUD Class | 2D的要素。コックピット的なものやキャラクター頭上のHPバーなど。 |
Player Controller Class | Pawn を持ち、ユーザー入力を受け取りPawnを操作する。 |
Game State Class | ゲームの進行状態を保持したりできる。 |
Player State Class | プレイヤーの状態を持ちたい時に使う。 |
Spectator Class | 観戦者?使用する時まで良く分からないと思うので、こちらを参照。 |
MyGameMode BP を開いてみる
コンテンツブラウザから作成した MyGameMode BP を開いて中身を確認します。
開くとViewPort タブが選択された状態です。ViewPort には何もないので隣の[Construction Script] タブを選択してみます。
Construction Script ノードは接続されていないのでここでは何の処理も行っていないことになります。では次にEvent Graph タブを選択します。
Event Graph の[Event Begin Play], [Event Tick] ノードそれぞれ何も設定されていないのでこちらも特に処理はしていないことになります。
作成したばかりの MyGameMode には何の処理も入っていない綺麗な状態であることが分かります。
レベルブループリントを確認する
次はレベルブループリント(レベルBP)を確認します。レベルBPはツールバーの[BluePrints] ->[Open Level Blueprint] から開きます。
何もありません。ということは何も処理していないことになります。
レベルに配置されたアクターを確認する
最後にレベルに配置されたアクターをそれぞれ確認します。
Atmospheric Fog は名前の通りフォグ、Floor は床にLight Source は光源・ディレクショナルライト、Player Start はプレイヤーの開始位置、Sky Sphere は空・スカイボックス、SkyLight は環境光。SphereRefrectionCapture は名前長いけど要は反射でBlank プロジェクトには意味が無さそう。
あれ?カメラは?
画面を映すカメラが見当たりません。ゲームを再生するとレベルには CameraActor が現れます。ということはどこかカメラのインスタンスが生成されているということ。
少し調べてみるとGameMode のデフォルト設定達が怪しい。そこだけまだ詳しく見ていない。もっと調べると Player Controller が怪しい。そこでMyGameMode を作成した時と同じ要領で MyPlayerController BP を作成して中のBPを確認してみます。今回はMyGameMode BP を開き[Class Detail] -> [Classes] -> [Player Controller Class]からMyPlayerController BP を作成します。
この MyPlayerControler BPを開くと・・・
いました。おぉカメラよ、そんな所にいたとは・・・。
Player Controller がカメラを持っていることが確認出来ました。これがデフォルトカメラっぽい。
ユーザー操作は?
同じ要領でDefault Pawn をMyPawn として MyGameMode に設定し再生するとユーザー操作が効かなくなる。 Default Pawn にプレイヤー操作の基本機能が詰まっていることが分かる。となると実際にゲームを開発する時には今回と同じ様に独自の継承した MyPawn を作成し、継承先で次々処理を記述していく形になりそうです。
Blankは大体こんな感じ。
まとめ
今回は Blank BP プロジェクトの処理を追いかけてみましたが、頭からしっかり追いかけていけばそこまで困ることは無さそうです。BPを追いかけていると頻繁にエンジンのソースコードを覗きたくなる機会が増えるのでプロジェクトを作成する時ははじめから[C++プロジェクト]として作成しておく方が良いかもと感じました。