##Unrealに書いてある公式リファレンスを見て....
読んでみたものの個人的には難しく書いてあってよくわからない!
開発していると普通に使ってるけど本当に理解してる?
なんてことありませんか?
今回はそこを簡単に説明していこうと思います。
あくまでもこれなんだっけって思ったときに
最低限必要な知識として解説します。
下記がフレームワーク回りを説明している記事
https://docs.unrealengine.com/ja/Gameplay/Framework/QuickReference/index.html
##解説
###UObject
UE4で定義される多くのクラスはUObjectを継承しています。
UObjectに関してはポインタにUPROPERTYをつけることによりエンジン側でメモリを管理してくれます。
###Actor
Level(World上)に配置可能なオブジェクトです。
もちろん、ゲームプレイ中にSpawnやDestoryすることが可能ですべてのActorの基本クラス。
(Unityで言うところのGameObject)
Componentを追加で付与することもできます。
他にも様々なタイプのActorが存在しています。
例
StaticMeshActor :壁や床などのMesh
TriggerActor : イベントによって実行可能トリガー
PlayerStartActor : その名の通りプレイヤーがスタートする位置を決める
###Component
Componentには様々なタイプが存在していてそれぞれがActorにアタッチができます。
例
#####ActorComponent
再利用可能なComponentとして作成されており、できるだけ1つのActorに依存しないように作成します。
Transformやコリジョンはありません。
#####SceneComponent
Transformを所持しており位置、回転、サイズなどWorld上で操作可能です。
#####PrimitiveComponent
物理、コリジョン(ボックス、カプセル、球体)、オーバーラップなど
#####StaticMeshComponent
壁や床などのMesh
###Pawn
プレイヤーやAIによって制御可能なすべてのActorの基本クラス。
キャラクターなどを作成する際に最低限必要な機能があるのでその用途で使われます。
その他にも物理的な表現が可能だったりContorollerを所有することが可能。
###Character
Pawnクラスより高度な機能を備えたCharactorクラスでPawnを継承したクラス。
Pawnより人型のキャラクター作成に向いていて、
歩行、走行、ジャンプ、飛行、水泳を行るようにComponentが付属しています。
###Controller
Pawnに指示を出すためのActorです。
ControllerにはPlayerControllerとAIControllerの2つがあります。
#####PlayerController
基本的にはプレイヤーにジャンプや移動などをさせるときにこの機能を使います。
しかしPawnなどに実装すべてを書くことが可能なのでその点を注意しましょう。
用途としては
クライアントに複数のプレイヤーがいたり、動的にプレイヤーを変更したいなど複数のニーズがある場合に使うのがいいでしょう。
#####AIController
ずばりAI的な行動するときに使うものです。
PlayerContollerはプレイヤーの入力を待つものですがAIContollerはゲームワールドの入力に対応していて
ワールドを観察し行動など選択します。NPCなどに使います。
###HUD
ゲーム画面に出てくるHUD(Headup Display)を制御するクラス
PlayerContorollerから取得することができます。
1つのLevelにつき1つのHUDを作成することができます。
HUDにはUserWidget(UI)をつけることで現在のHPなどを表示することが可能です。
###Camera
CameraActorとPlayerCameraManagerが存在しています。
#####CameraActor
ワールドに配置可能なカメラ。プレイヤーに依存しない。
#####PlayerCameraManager
PlayerContorollerに紐付けされていて
プレイヤーがどのようにみているのかをプレイヤー視点で表します。
###GameMode
ゲームの定義(例:勝敗やゲームルール)
GamoModeはサーバー上でのみ存在していてプレイ中に変化してはいけませんしプレイヤーの一時的なデータを保有してはいけません。
###GameState
ゲームの状態(例:スコア、プレイヤーリスト)
接続されたプレイヤーのリストやスコアを保持します。
すべてのサーバー上とクライアント上に存在しています。
###PlayerState
プレイヤー個人(例:残機や名前)
自身のステータスを管理します。
プレイヤー一人一人に存在していて
すべてのサーバー上とクライアント上に存在しています。
しかしAIはPlayerStateを持ちません。
※PlayerStateと聞くとプレイヤーのすべての状態管理するように思いがちですが実際はPawnなどに実装し、残機やPawnが死んだあとも継続して残りづづけるものなどをPlayerStateに書くようしましょう。
###Interface
ある情報を共有するためのものです。
複数のActorのクラスに設定することが可能です。
これを使うことにより異なるオブジェクトを同タイプのオブジェクトと判断したりいずれかが実行されたときに伝えることができます。
###GameInstance
GameInstance はエンジンが起動するとき真っ先に 1 つ生成され、エンジンの電源を落とすまで破壊も差し替えも行われません常にシングルトンとして動作します!)
ゆえに、ゲーム全体に関わる挙動を定義するのに最適なオブジェクトです。
アクターではないのでレベルに依存しません。
よって、レベルを跨いでも存在し続けられるので、
レベル遷移しても保持しておきたい値をキャッシュするのに最適なオブジェクトです。
DefaultEngine.iniで設定することが可能です。
##まとめ
UnrealEngineには様々な機能があり複雑でわかりにくい!なんてことがあるでしょう。
ですがこれらを的確に正確に使うことで今後の管理などが楽になります。
みなさんもぜひ勉強してUnrealマスターになりましょう!
##最後に
以上でゲームプレイフレームワークについて各種機能の解説は終了です。
間違っていたりした場合は教えてください。