ことはじめ
最近UE4を勉強していて、とっかかりに基本的な考え方とか、オブジェクトの意味合いとかが気になった
とりあえずEpicの公式ドキュメントをかいつまんでメモっていこうと思う
ActorとPawnとCharacterの違い
- Actor
- UE4のワールド内に配置可能な全てのオブジェクトはActorクラスを親に持つ
- UE4全体のオブジェクトの基本となるObjectクラスから派生したクラス
- コンポーネントを付与することができる(?)
- Unityで言うところのGameObject
- Pawn
- Controllerを所有することができるオブジェクト
- Controllerを介して操作をすることができる
- Character
- Pawnの上位互換(?)
- 人の形をしたPawn
-
CapsuleComponent
とCharacterMovementComponent
がデフォルトでアタッチされている - アニメーションや、ネットワーク関係の動作に強い(?)
コントローラーについて
- Controller
- Pawnに指示を出すことができるアクタ
- AIControllerとPlayerControllerの2種類が存在する
- PlayerController
- プレイヤーの入力を仲介して対象のPawnに指示を送るオブジェクトという認識
- AIController
- ↑のAI版 NPCの操作を仲介する 多分
コントローラー関係についてはまだ不明なことが多いが、ラジコンで言うところの人とコントローラーと車みたいな関係だと思っている
ゲームの情報表示関連
- HUD
-
普通にUIとかを管理してるやつだと思うHUDはUE4以前によく使われていたそうで、現在はUIならUMGとかいうのが幅を利かせているらしい -
PlayerController
と関連付いてる(?) - Camera
- ちょっとよくわからないので別途掘り下げたほうがよさげ
↑のCamera
について引用
引用 ゲームプレイのプログラミング | Unreal Engine ドキュメント
PlayerCameraManager はプレイヤーの「眼球」で、挙動を管理します。
各 PlayerController は、通常これらのいずれかを持ちます。詳細は、 camera workflow ページをご覧ください。
カメラについて追記
実行時にCamera Actorなるオブジェクトがレベル内に勝手に生成されていて気持ち悪かったので色々調べてみたけど、結局サンプルとかでも同じようにCameraActorが生成されており、しかも特に使われていなかったので、そういうものだと思うことにした。誰か詳しい人がいれば是非この辺りの詳細について教えていただきたい。
ゲームのルールを設定する系オブジェクト
- GameMode
- ゲームの定義 (勝敗条件やゲームのルールなど)
- GameState
- ゲームの状態 (スコアやプレイヤーのリストなど)
- PlayerState
- プレイヤー個人の状態 (プレイヤー名やHP、MPなど?)
- AIは
PlayerState
を持たない
ここの項目には、公式ドキュメントにはネットワーク用語がちょくちょくでていたので、そういったところも意識した設計になっているのかも?
さいごに
↑に書いたオブジェクト達を全てまとめてGameplayFramework
という呼び方をしているように見えた
また公式ドキュメントには、GamePlayFramework
のクラス達をわかりやすくクラス図にして説明もしているので是非読んでもらいたい
自信のないものについては文の末尾に(?)がついているので、そういうものだと思って読んでもらいたい(ていうか全体的に解釈が正しいか自信がない)
今回UE4の基本について調べておおよその流れは把握できた気がするので、これを軸に気になった箇所を掘り下げていけたらと思う
参考にしたサイト
ゲームプレイのプログラミング | Unreal Engine ドキュメント
https://docs.unrealengine.com/ja/Programming/UnrealArchitecture/index.html?lang=ja
アンリアル アーキテクチャー - Let's Enjoy Unreal Engine
http://unrealengine.hatenablog.com/entry/2014/04/24/221643
もんしょの巣穴blog [UE4] UE4のフレームワーク
http://monsho.blog63.fc2.com/blog-entry-119.html
【UE4】移動方向に対するキャラクターとカメラの回転
http://game-ue4.hatenablog.com/entry/2017/11/20/180426