ゲームエンジン
このページは執筆中です。 |
ゲームエンジンはコンピューターゲーム・ビデオゲームを開発するためにデザインされたシステムである。典型的なゲームエンジンは2D・3Dグラフィックのためのレンダリングエンジン、物理エンジンまたは衝突検出(と衝突解決)、サウンド、スクリプティング、アニメーション、人工知能(AI)、ストリーミング、メモリ管理、スレッディング、ローカライゼーション、シーンフラフなど多彩な機能を提供する場合が多い。同じゲームエンジンでもまったく違うジャンルのゲーム開発に使うことができ、最新のゲームエンジンは同じゲームを様々なプラットフォームに配布できる。
歴史
ゲームエンジンという概念が確立される前のゲームは、通常は一つのゲームのためにゲーム全体のコードを作成するのが一般的であった。
一般的な要件と構成要素
ゲームエンジンは、複雑なゲームアプリケーションを効率的に開発・実行するために、多様な機能とツールを提供する必要がある。ジェイソン・グレゴリー(Jason Gregory)の著書『ゲームエンジン・アーキテクチャ (Game Engine Architecture)』によると、現代的なゲームエンジンは一般的に次のような階層と構成要素で成り立っている。
基盤システム (Foundations)
エンジンの最下層には、ハードウェアとOSの違いを抽象化し、上位階層が効率的に動作するように支援する基盤システムが存在する。
- プラットフォーム抽象化レイヤー: 多様なハードウェア(PC、コンソール、モバイル)とOS上で、同一のコードで動作するように支援する。
- 基盤ユーティリティ: メモリ管理、数学ライブラリ(ベクトル、行列、クォータニオン)、データ構造(コンテナ)、アルゴリズムなど。
低レベルエンジンシステム (Low-Level Engine Systems)
ゲームの実行とリソース管理を担当するコアシステムである。
- リソース管理システム: テクスチャ、モデル、サウンドなど、ゲームアセットの読み込み、キャッシング、メモリ解放を担当する。
- ゲームループ: ユーザー入力処理、ゲーム状態の更新、画面レンダリングを周期的に繰り返す核心的なループ。
- デバッグおよび開発ツール: ロギング、プロファイリング、インゲームコンソールなど、開発の便宜を図るためのツール群。
- HID (ヒューマン・インターフェース・デバイス): キーボード、マウス、ゲームパッドなど、多様な入力デバイスの処理。
グラフィックス、モーション、サウンド (Graphics, Motion and Sound)
ユーザーに見え、聞こえる視聴覚的要素を処理する。
- レンダリングエンジン: 2D/3Dグラフィックスを画面に描画するシステム。ラスタライズ、シェーディング、ライティング、視覚効果などを含む。
- アニメーションシステム: キャラクターの骨格(Skeleton)とクリップ(Clip)を制御して動きを作り出す。スキニング、ブレンディング技術などが含まれる。
- 物理エンジン: 衝突検出(Collision Detection)と剛体動力学(Rigid Body Dynamics)をシミュレーションし、現実的な物理反応を実装する。
- オーディオエンジン: BGM、効果音の再生および3D空間音響処理を担当する。
ゲームプレイシステム (Gameplay)
実際のゲームのルールとロジックを実装する階層である。
- ゲームワールドおよびオブジェクトモデル: ゲーム内の世界を構成するオブジェクト(Actor, GameObject)の階層構造とライフサイクルを管理する。
- スクリプティングシステム: C++などの低レベル言語の代わりに、Lua、C#、Pythonなどの高レベル言語でゲームロジックを記述できるようにする。
- AIシステム: 経路探索(Pathfinding)、ビヘイビアツリー(Behavior Tree)など、NPCの知的な行動を制御する。
ツールおよびアセットパイプライン (Tools and Asset Pipeline)
- ワールドエディタ: ゲームワールドを視覚的に構成し、オブジェクトを配置するツール。
- アセットパイプライン: 外部ツール(Maya, Photoshopなど)で制作されたリソースを、エンジンで使用可能なフォーマットに変換して取り込むプロセス。
主なゲームエンジン
オープンソース
| 名前 | 開発言語 | スクリプト言語 | クロスプラットフォーム | 2D / 3D | 代表的なゲーム | ライセンス | 備考 |
|---|---|---|---|---|---|---|---|
| Godot Engine | C++ | GDScript, C#, C++ | はい | 2D / 3D | Sonic Colors: Ultimate (一部) | MIT | 軽量かつ強力な機能を提供し、急速に成長しているエンジン |
| Cocos2d-x | C++ | Lua, JavaScript, C++ | はい | 2D | クッキーラン:キングダム、LINE ゲットリッチ | MIT | 2Dモバイルゲーム開発で広く使用されている |
| O3DE (Open 3D Engine) | C++ | Lua, Python | はい | 3D | Deadhaus Sonata | Apache 2.0 | Amazon Lumberyardの後継、Linux Foundation管理 |
| Bevy | Rust | Rust | はい | 2D / 3D | MIT / Apache 2.0 | データ指向(ECS)アーキテクチャを採用したRustベースのエンジン | |
| OGRE | C++ | はい | 3D | Torchlight | MIT | 厳密にはレンダリングエンジンだが、ゲームエンジンとしてもよく使用される | |
| id Techシリーズ | C/C++ | はい | 2D / 3D | DOOM, Quakeシリーズ | GPL | FPSジャンルを開拓した歴史的なエンジン群 |
商用
| 名前 | スクリプト言語 | クロスプラットフォーム | 2D / 3D | 代表的なゲーム | 備考 |
|---|---|---|---|---|---|
| Unreal Engine | C++, Blueprint (ビジュアル) | はい | 3D / 2D | フォートナイト、鉄拳8、PUBG | 高品質なグラフィックスと強力な性能、AAAゲームの標準 |
| Unity | C# | はい | 2D / 3D | 原神、ハースストーン、Pokémon GO | 高い汎用性と膨大なアセットストア、モバイルおよびインディーズゲームの強者 |
| CryEngine | C++, FlowGraph (ビジュアル) | はい | 3D | Crysisシリーズ、Hunt: Showdown | 優れたグラフィックスと自然環境描写に強み |
| GameMaker | GML (GameMaker Language) | はい | 2D | Undertale、Katana ZERO | 2Dゲーム制作に特化、入門者に適している |