Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

ゲームプレイのプログラミング

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

UObjects と Actor

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

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

Gameplay Framework クラス

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

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

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

pawn_lander.png

ポーン

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

キャラクター

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

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

controller_lander.png

コントローラー

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

プレイヤー コントローラー

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

AIController

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

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

camera_lander.png

HUD

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

カメラ

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 クラスの詳細は、 ゲームプレイ フレームワーク を参照してください。