はじめに#
このセクションの内容は、学堂オンラインの MOOC「3D ゲームエンジンアーキテクチャ設計の基礎」の内容です。個人的には、テキストと画像のバージョンに変換しました(個人的にはテキストバージョンのチュートリアルの方が好きで、読む速度がはるかに速いです)。
元のコースのリンク:3D ゲームエンジンアーキテクチャ設計の基礎。
リソース管理#
リソース管理の概要#
ゲームリソースの組織と管理。その目的は、さまざまな種類のゲームリソースを効果的に組織化し、ゲームプログラムが必要な時に迅速かつ正確に提供することです。リソースの組織化は、さまざまな種類のリソースの特性と使用方法に基づいて、リソースデータのメモリ構造を設計することを指します。リソース管理は、リソースの読み込みと解放、リソースのスケジューリングなど、統一されたリソース処理方法を抽象化および定義することを指します。
リソース管理のプロセス図は以下の通りです:
ゲームリソースの管理:
-
ファイル管理:ファイルの読み込みと解放、ファイルの解析、ファイルの形式変換、ファイルリソースのパッケージング、ファイルリソースの転送などのプロセスを含みます。
-
メモリ管理:メモリの割り当て、アクセスの保証、メモリの解放などの機能を含みます。
-
状態管理:通常、ゲームリソースはメモリに重複して保存されません。リソースの状態に基づいて、読み込みや使用などの操作を決定します。状態遷移図を使用して、リソースの読み込みや解放の操作を管理します。リソースの状態には、未定義、定義済み、未読み込み、読み込み済み、使用中などがあります。リソースの状態遷移図の例:
-
スケジューリングアルゴリズム:原則として、リソースデータをできるだけ少なく移動させることが目標です。移動せざるを得ない場合は、一定の条件に基づいて移動戦略を決定します。一般的に使用されるスケジューリングアルゴリズムには、リソースの優先順位付け、LRU アルゴリズム、現在の操作に基づいて最も可能性の高いリソースを決定するなどがあります。
-
マルチスレッド処理
リソース管理の例#
OGRE リソース管理#
主要なクラスのクラス図は以下の通りです:
上記の 3 つのコアクラスの関係図は以下の通りです:
OGRE リソースのライフサイクルのシーケンス図は以下の通りです:
Panda3D リソース管理#
Panda3D リソース管理の主要なクラスモジュール:
Panda3D 非同期リソースローダーのクラス図:
Panda3D 非同期ロードのシーケンス図: