Unreal Architecture

基本的なゲームプレイ要素であるアクタとオブジェクトの説明

Choose your operating system:

Windows

macOS

Linux

本ページの目標は、コードベースに着手しやすいように、エンジンのコアとなる機能の概要を提供し、核となるアーキテクチャの概念を紹介することです。

UObjects と Actor

アクタ は、ワールドに配置可能なすべてのゲームプレイ オブジェクトの基本クラスである AActor クラスから継承するクラスのインスタンスです。 オブジェクト は、アクタを含め、Unreal Engine すべてのオブジェクトの基本クラスである UObject クラスのインスタンスです。従って、実際のところ、Unreal Engine のすべてのインスタンスはオブジェクトです。ただし、 アクタ という用語が階層の AActor から継承したクラスのインスタンスを指すために一般的に使われるのに対し、オブジェクトは AActor クラスから継承しないクラスのインスタンスを指すために使われます。作成するクラスの大半は、階層のいずれかのポイントで AActor から継承しています。

通常、オブジェクトがより特化した部分であるのに対して、アクタはアイテムあるいはエンティティ全体とみなすことができます。アクタは指定されたオブジェクトである コンポーネント を使用して、機能の特性を定義したり、プロパティのコレクションに値を与えます。車を例にとってみましょう。車全体はアクタですが、車輪やドアといった車の部品はすべて、その車のコンポーネントとなります。

Gameplay Framework クラス

基本的なゲームプレイ クラスにはプレイヤー、味方、敵を表す機能に加えて、プレイヤー入力もしくは AI ロジックでこれらのアバターを制御する機能が含まれます。プレイヤー用のヘッドアップ ディスプレイや カメラを作成するクラスもあります。最後に、 GameMode GameState 、および PlayerState などのゲームプレイ クラスは、ゲーム ルールを設定し、ゲームとプレイヤーの進行状況をトラックします。

これらのクラスはすべて、必要に応じてレベル内に配置したりスポーンすることが可能なアクタのタイプを作成します。

ワールドでプレイヤー、友達、敵を表現する

pawn_lander.png

Pawn

ポーン はワールドで「エージェント」となりうるアクタです。ポーンはコントローラで所有することが可能で、入力の受け取りを簡単に設定でき、他のプレイヤーのような様々なことが行えます。ポーンは人間の形を前提としていないことにご注意ください。

Character

Character は人間の形をしたポーンです。コリジョン用の CapsuleComponent と CharacterMovementComponent がデフォルトで付いています。人間の基本動作が可能で、ネットワーク全体でスムーズに動きをレプリケートでき、アニメーション関連機能も付いています。

プレイヤー入力や AI ロジックでポーンを制御する

controller_lander.png

Controller

Controller はポーンに指示を出す役目のアクタです。通常、 AIController と PlayerController の 2 タイプがあります。コントローラはポーンを「所有」して制御することができます。

PlayerController

PlayerController は、ポーンと、それをコントロールする人プレーヤーとの間のインターフェースです。PlayerController は、基本的に人プレイヤーの意思を表します。

AIController

AIController は、ポーンを制御することができるシミュレートされた「意思」のようなものです。

プレイヤーに情報を表示する

camera_lander.png

HUD

HUD はヘッドアップ ディスプレイです。多くのゲームで一般的な 2D オンスクリーン ディスプレイです。Health 、 ammo 、 gun reticle 等と思ってください。各 PlayerController には、これらのいずれかが通常あります。

Camera

PlayerCameraManager はプレイヤーの「眼球」で、挙動を管理します。各 PlayerController は、通常これらのいずれかを持ちます。詳細は、 camera workflow ページをご覧ください。

ゲームのルールを設定しトラックする

hud_lander.png

GameMode

「ゲーム」のコンセプトは 2 つのクラスに分割されます。 Game Mode と Game State は、ゲーム ルールや勝敗条件など含めたゲームの定義です。サーバー上にのみ存在します。通常はプレイ中に変更されるデータがあまりあってはならず、クライアントが知る必要のある一時的なデータは絶対にあってはいけません。

GameState

GameState はゲームのステートを含みます。接続されたプレイヤーのリスト、スコア、チェス ゲームの駒の位置、オープンなワールドゲームで完了したミッションのリストなどが含まれます。GameState はサーバーとすべてのクライアント上に存在し、自由にレプリケートして全てのマシンを最新の状態に保つことができます。

PlayerState

PlayerState は、人プレーヤーやプレイヤーをシミュレートしているボットなどの、ゲームの参加者のステートです。ゲームの一部として存在する非プレイヤーの AI は PlayerState を持ちません。PlayerState として適切なデータの例には、プレイヤー名、スコア、MOBA などの場合のインマッチ レベル、CTF ゲームでプレイヤーが今フラグを持っているかどうか、などがあります。すべてのマシン上ですべてのプレイヤーに対して PlayerStates が存在し (PlayerControllers とは異なります) 、自由にレプリケートして同期することができます。

Framework クラスの関係

このフローチャートは、中核となるこれらのゲームプレイ クラスの関係性を表したものです。ゲームは GameMode と GameState で構成されています。ゲームに参加している人プレイヤーは PlayerControllers と関連付いています。 これらの PlayerControllers により、プレイヤーはゲームでポーンを所有することができ、レベルで物理的な実体を持つことが可能になります。PlayerControllers はまた、入力制御、ヘッドアップ ディスプレイ (HDD) 、 カメラ ビューに対応する PlayerCameraManager もプレイヤーに提供します。

GameFramework.png

Gameplay Framework クラスの詳細は、 ゲームプレイ フレームワーク を参照してください。

それでは、 プログラミング クイック スタート C++ プログラミング チュートリアル で UE4 を使ったプログラミングを初めてみましょう。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル