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.

プログラミングの基礎

個々のゲームは、そのゲームに特化したコード、コンテンツ、設定を全て含むゲーム プロジェクトによって定義されます。ゲームプレイ コードは、 1 つ以上のゲームプレイ モジュールに含まれ、 各ゲーム プロジェクトにはモジュールが最低 1 つ含まれています。アート アセット、サウンドなどのコンテンツはエディタにインポートされ、 パッケージとマップに格納されます。利用できるゲーム設定は、スタートアップ時にロードされる コンフィギュレーション ファイル に定義されています。これらの全てが一緒になって、 アンリアル エンジンで作成されるゲームの基礎を形成します。

ProjectModuleClassOrg.png

ゲーム プロジェクトの作成 のページで新規ゲーム プロジェクトの作成手順を説明しています。ゲーム プロジェクトが作成できたら、次はプロジェクトの ディレクトリ構造 に慣れてください。これにより、既存のファイルが何を表し、プロジェクトに新規ファイルを追加すると何がどこにいつ入るのかが分かりやすくなります。プロジェクトでエディタを操作する場合、 コマンドライン引数 を使用すれば、ゲーム プレビュー モードへ直接ジャンプしたり特定のマップ上で開始できるようになります。

モジュール

エンジンそのものがモジュールの集まりで構成されているように、各ゲームも 1 つ以上のゲームプレイ モジュール構成されます。これらは、関連クラスの集まりのためのコンテナであるという意味において、エンジンの過去のバージョンのパッケージに似ています。アンリアル エンジン 4 では、ゲームプレイはすべて C++ で行われるため、モジュールは独自のパッケージ ファイルではなく実際には DLL です。

ゲームプレイ モジュールの作成および使用に関する詳細は Gameplay モジュール ページを参照してください。

Module API

モジュール外からアクセスする必要のある関数とクラスは、 *_API マクロによって公開されなければなりません。公開される各アイテムはコンパイル時間という負荷が伴うため、必要なもののみを公開するようにしてください。アクセスする必要のある関数がクラス内で 1 つだけの場合は、クラスではなくその関数をエクスポーズすればコンパイル時間を大幅に短縮できます。

クラスおよび関数を他のモジュールへエクスポーズする方法については モジュール API 指定子 ページを参照してください。

クラス

Gameplay クラスは、標準の C++ ヘッダファイルと記法をエンジンで定義された特別なマクロと併用して定義され、アンリアル エンジン固有のクラスの特性の定義を支援します。

クラス構造体と作成の包括的な説明は アンリアルのアーキテクチャ を参照してください。

クラスの実装

最も基本的なレベルでは、アクタはレベルに配置可能なゲームプレイ オブジェクトです。全てのアクタは、 AActor クラスから拡張されます。このクラスは スポーン可能 なゲームプレイ オブジェクトの基本クラスです。

アクタはある意味、 コンポーネント と呼ばれる特別なタイプのオブジェクトを保持するコンテナと考えられます。例えば、 CameraActorCameraComponent を格納します。

camera_actor.png

FOV (視野角) のようなカメラの機能は、全て CameraComponent 内に格納されます。つまり CameraComponent は、これらのオブジェクトに対し同一のカメラ機能を実装するために、 キャラクターのように別のアクタに含むことができます。

pawn_actor.png

異なるタイプのコンポーネントを、アクタの移動方法、レンダリング方法、また機能の他の部分に使用することができます。コンポーネントを含むすべてのオブジェクトは、 UObject クラスから拡張されます。 UObject クラスは、全ゲームプレイオブジェクトの基底クラスです。つまり、このクラスはワールド内へ直接インスタンス化することはできず、アクタに属さなければいけません。

各アクタまたは各オブジェクトは、クラスの単一インスタンスです。クラスは、アクタまたはオブジェクトのテンプレートを設定します。テンプレートは、アクタあるいはオブジェクトに設定可能な変数、 そしてアクタまたはオブジェクト内で実行可能な関数を定義します。C++ コードでオブジェクトとアクタの新規クラスまたはタイプを作成することができます。Blueprint クラスを使っていくつかのオブジェクトを拡張することもできますが、 Blueprint クラスでは主に新規アクタを設定するクラスを作成することができます。新規の C++ クラスを作成して、このクラスから Blueprint クラスを派生させることによって、これら両方を組み合わせることも出来ます。新規のアクタおよびオブジェクトのためのクラス作成に関する詳細は、 クラス作成の基本 ページを参照してください。

オブジェクト、アクタ、コンポーネントに関する詳細は、 ゲームプレイのプログラミング をご覧ください。