ゲームエンジンは、主にビデオゲーム開発用に設計されたソフトウェアフレームワークであり、レベルエディタなどの特殊なソフトウェアライブラリやパッケージが含まれる場合があります。[ 1 ] 「エンジン」という用語は「ソフトウェアエンジン」と直接同義であり、ソフトウェア業界のさまざまな分野で使用されています。
さらに、ゲームエンジンは 、特定のフレームワークの背後にあるインターフェースとしての統合開発環境を指す場合もあり、通常はビデオゲーム開発のためのビジュアル開発ツールと機能のスイートです。[ 2 ] [ 3 ]
ゲーム開発者は、ゲームエンジンを使用して、デスクトップ、モバイルデバイス、ビデオゲームコンソール、その他の種類のコンピュータなど、さまざまなプラットフォームでビデオゲームを作成および公開できます。ゲームエンジンで一般的にカバーされるコア機能は、 2Dまたは3Dレンダラー、物理エンジン、オーディオエンジン、スクリプト、アニメーション、人工知能、ネットワーク、ストリーミング、メモリ管理、スレッド、ローカライズサポート、シーングラフ、およびシネマティクスです。ゲームエンジン開発者は、さまざまなゲームを制作するためにゲームエンジンに組み込まれた抽象化を再利用または適応させることによって、または単一のターゲットプラットフォームから他のターゲットプラットフォームにビデオゲームを移植することによって、ゲーム開発を節約することがよくあります。 [ 4 ]

多くの場合、ゲームエンジンは再利用可能なソフトウェアコンポーネントに加えて、一連のビジュアル開発ツールを提供します。これらのツールは通常、統合開発環境で提供され、データ駆動型の方法でゲームを簡素化し、迅速に開発できるようにします。ゲームエンジン開発者は、ゲーム開発者がゲームを構築するために必要な多くの要素を含む堅牢なソフトウェアスイートを開発することで、実装者のニーズを先取りしようとすることがよくあります。ほとんどのゲームエンジンスイートは、グラフィックス、サウンド、物理演算、人工知能(AI)機能など、開発を容易にする機能を提供します。これらのゲームエンジンは、ビジネス用語の意味と同様に、柔軟で再利用可能なソフトウェアプラットフォームを提供し、コスト、複雑さ、市場投入までの時間を削減しながら、ゲームアプリケーションを開発するために必要なすべてのコア機能をすぐに提供するため、「ミドルウェア」と呼ばれることがあります。これらはすべて、競争の激しいビデオゲーム業界で重要な要素です。[ 5 ]
他のタイプのミドルウェアと同様に、ゲームエンジンは通常プラットフォーム抽象化を提供し、ゲームのソースコードにほとんど、あるいは全く変更を加えることなく、さまざまなプラットフォーム(ゲーム機やパーソナルコンピュータを含む)で同じゲームを実行できるようにします。多くの場合、プログラマーはコンポーネントベースのアーキテクチャでゲームエンジンを設計し、エンジン内の特定のシステムを、より専門的な(そして多くの場合より高価な)ゲームミドルウェアコンポーネントで置き換えたり拡張したりできるようにします。一部のゲームエンジンは、柔軟に統合された製品を拡張またはカスタマイズするという一般的なアプローチではなく、選択的に組み合わせてカスタムエンジンを作成できる、緩やかに接続された一連のゲームミドルウェアコンポーネントで構成されています。どのように実現されたとしても、ゲームエンジンはさまざまな用途に適用されるため、拡張性は依然として高い優先事項です。「ゲームエンジン」という名前は具体的ですが、エンドユーザーは、マーケティングデモ、建築ビジュアライゼーション、トレーニングシミュレーション、モデリング環境など、リアルタイムのグラフィック要件を持つ他の種類のインタラクティブアプリケーションにゲームエンジンを再利用することがよくあります。[ 6 ]
ゲームエンジンの中には、ゲームに必要な幅広い機能ではなく、リアルタイム 3D レンダリング機能のみを提供するものもあります。これらのエンジンは、ゲーム開発者が残りの機能を実装するか、他のゲームミドルウェア コンポーネントから組み立てる必要があることを前提としています。このようなタイプのエンジンは、包括的な用語である「ゲームエンジン」ではなく、一般的に「グラフィックス エンジン」、「レンダリング エンジン」、または「3D エンジン」と呼ばれます。この用語は一貫して使用されていません。多くのフル機能の 3D ゲーム エンジンは、単に「3D エンジン」と呼ばれています。グラフィックス エンジンの例としては、Crystal Space、Genesis3D、Irrlicht、OGRE、RealmForge、Truevision3D、Vision Engineなどがあります。最新のゲーム エンジンまたはグラフィックス エンジンは、一般的にシーン グラフを提供します。これは、3D ゲーム ワールドのオブジェクト指向表現であり、ゲーム デザインを簡素化し、広大な仮想ワールドのより効率的なレンダリングに使用できます。[ 7 ]ほとんどのゲームエンジンやグラフィックスエンジンはグラフィックスAPIを使用しており、GPUとの通信が容易になっています。しかし、古いゲームにはハードウェアアクセラレーションやGPUがなく、独自のソフトウェアレンダラーを構築する必要がありました。
技術の進歩に伴い、エンジンの構成要素が陳腐化したり、特定のプロジェクトの要件を満たせなくなったりすることがあります。全く新しいエンジンをプログラミングする複雑さは、望ましくない遅延(あるいはプロジェクトの最初からやり直し)につながる可能性があるため、エンジン開発チームは既存のエンジンを新しい機能や構成要素で更新することを選択する場合があります。
ゲームエンジンはビデオゲーム分野に限らず、他の科学分野でも利用されています。その理由の一つは、ゲームエンジンが高性能コンピューティングではなく、一般消費者向けコンピューティング機器向けに最適化されているため、研究者が低価格のマシンで使用できるプログラムを開発できるからです。また、ゲームエンジンは、グラフィックス、ネットワーク、インタラクティブ性など、科学ソフトウェアに必要な多くのコンピューティング操作を簡素化し、これらの機能を独自に開発する必要性を軽減します。[ 8 ]

ゲームエンジンが登場する以前は、ゲームは通常、単一のエンティティとして作成されていました。たとえば、 Atari 2600用のゲームは、ディスプレイ ハードウェアを最適に利用するために、ボトムアップで設計する必要がありました。このコア ディスプレイ ルーチンは、古いシステム向けのゲーム開発者によって現在カーネルと呼ばれています。他のプラットフォームではより自由度がありましたが、ディスプレイが問題にならない場合でも、メモリの制約により、エンジンに必要なデータ量の多い設計を作成しようとする試みは通常妨げられました。より柔軟なプラットフォームでも、ゲーム間で再利用できるものはほとんどありませんでした。当時市場の最先端であったアーケードハードウェアの急速な進歩により、後世代のゲームでは追加のリソースを活用するまったく異なるゲーム デザインが使用されるため、コードの大部分は結局破棄される必要がありました。そのため、1980 年代までのほとんどのゲーム デザインは、少数のレベルとグラフィック データを備えたハードコードされたルール セットによって設計されていました。アーケード ビデオゲームの黄金時代以降、ビデオゲーム会社が自社製ソフトウェアで使用するために、自社製のゲーム エンジンを開発することが一般的になりました。
1980年代半ばの家庭用ゲーム機における自社開発ゲームエンジンの注目すべき例としては、任天堂の宮本茂氏のチームがファミリーコンピュータ(NES)向けに開発した滑らかな横スクロールエンジンが挙げられる。彼らが横スクロールレースゲーム「エキサイトバイク」 (1984年)のために開発したエンジンは、後にスクロールプラットフォームゲーム「スーパーマリオブラザーズ」 (1985年)にも採用された。これにより、マリオは以前のプラットフォームゲームのように一定速度で移動するのではなく、歩行から走行へと滑らかに加速することが可能になった。[ 9 ]
1990年代に3Dコンピュータグラフィックスが登場するまでサードパーティ製のゲームエンジンは一般的ではなかったが、 1980年代には独立系ビデオゲーム開発向けにいくつかの2Dゲーム作成システムが制作された。これらには、ピンボール構築セット(1983年)、ASCIIのウォーゲーム構築キット(1983年)[ 10 ]、サンダーフォース構築(1984年)[ 11 ]、アドベンチャー構築セット(1984年)、ギャリー・キッチンのゲームメーカー(1985年)、ウォーゲーム構築セット(1986年)、シューティングゲーム構築キット(1987年)、アーケードゲーム構築キット(1988年)、そして最も人気があったのは1998年以降のASCIIのRPGメーカーエンジンである。クリック&プレイ(1994年)も現在も入手可能なレガシー製品である。[ 12 ]
ゲームエンジンという用語は、特にファーストパーソンシューターなどの3Dゲームの台頭とともに1990年代半ばに登場し、多くの場合、専用のファーストパーソンシューターエンジンが使用されました。たとえば、ティム・スウィーニーが設立したEpic Gamesは、1998年にUnreal Engineを発表しました。[ 13 ]
Id SoftwareのDoomやQuakeゲームの人気は非常に高く、開発者たちはゼロから開発するのではなく、ソフトウェアの中核部分のライセンスを取得し、独自のグラフィック、キャラクター、武器、レベルを設計しました。これらは「ゲームコンテンツ」または「ゲームアセット」でした。ゲーム固有のルールとデータを衝突判定やゲームエンティティなどの基本概念から分離することで、チームは成長し、専門化することが可能になりました。[ 12 ]
id SoftwareのQuake III ArenaやEpic GamesのUnreal (1998)などの後のゲームは、エンジンとコンテンツを別々に開発するというこのアプローチを念頭に置いて設計されました。このような技術のライセンス供与は、一部のゲーム開発者にとって有用な補助的な収入源であることが証明されています。ハイエンドの商用ゲームエンジンの単一ライセンスは1万ドルから数百万ドルに及ぶ場合があり、Unreal Engineに見られるように、ライセンス取得者の数は数十社に達することもあります。少なくとも、再利用可能なエンジンはゲームの続編の開発をより速く簡単にし、競争の激しいビデオゲーム業界では貴重な利点となります。2000年頃にはEpic Gamesとid Softwareの間には激しいライバル関係がありましたが、その後、Epic GamesのUnreal Engineはid Tech 4とその後継のid Tech 5よりもはるかに人気が高まりました。[ 14 ]
現代のゲームエンジンは、最も複雑なアプリケーションの一つであり、多くの場合、精密に制御されたユーザーエクスペリエンスを保証するために、数十もの精緻に調整されたシステムが相互作用しています。ゲームエンジンの継続的な進化により、レンダリング、スクリプト、アートワーク、レベルデザインの間には明確な分離が生まれました。そのため、例えば、一般的なゲーム開発チームでは、実際のプログラマーの数倍ものアーティストを抱えることが今では一般的です。[ 15 ]
サードパーティ製のゲームエンジンは主にファーストパーソン・シューティングゲームの開発に用いられていますが、他のジャンルでも広く利用されています。例えば、 『 The Elder Scrolls III: Morrowind』や『Dark Age of Camelot』ではGamebryoが、そして『Lineage II 』ではUnreal Engine 2が使用されています。また、家庭用ゲーム機向けに開発されたゲームにもゲームエンジンが使われており、『Grand Theft Auto』や『Burnout』シリーズではRenderWareが使用されています。
現代のマルチコアシステムとリアリズムに対する要求の高まりにより、スレッドの活用がより重要になってきています。ゲームエンジン内の個別の実行スレッドは、レンダリング、アセットストリーミング、オーディオ再生、物理シミュレーションなどの負荷の高い処理を管理します。レーシングゲームは、他のコアサブシステムが移動されるずっと前から、物理エンジンを別のスレッドで実行することで、スレッド化の最前線に立ってきました。これは、レンダリングや関連タスクの更新頻度がわずか30~60Hzで済むためです 。たとえば、PlayStation 3では、Need For Speedの物理エンジンは100Hzで動作していました が、Forza Motorsport 2は360Hzで動作していました 。
この用語は1990年代に初めて使われたが、1980年代の初期のシステムでゲームエンジンと見なされるものは少なく、例えばSierraのAdventure Game Interpreter(AGI)やSCIシステム、LucasArtsのSCUMMシステム、Incentive SoftwareのFreescapeエンジン(1986年[ 16 ] )などが挙げられる。現代のゲームエンジンのほとんどとは異なり、これらのゲームエンジンはサードパーティ製品で使用されたことは一度もない(ただし、 Humongous Entertainmentにライセンス供与され使用されたSCUMMシステムは除く)。
ゲームエンジン技術が成熟し、より使いやすくなるにつれて、ゲームエンジンの応用範囲は拡大しています。現在では、CryEngineが例であるように、ビジュアライゼーション、トレーニング、医療、軍事シミュレーションなどのシリアスゲームにも使用されています。 [ 17 ]アクセシビリティを向上させるために、モバイルフォン( Android、iPhoneなど) やWeb ブラウザ( WebGL、Shockwave、Flash、Trinigyの WebVision、Silverlight、Unity Web Player、O3D、純粋なDHTMLなど)を含む新しいハードウェア プラットフォームもゲームエンジンの対象となっています。 [ 18 ]
さらに、Java、C#、. NET(TorqueX、Visual3D.NETなど)、Python(Panda3D)、Lua Script (Leadwerks)などの高レベル言語をベースにしたゲームエンジンも増えています。現在、ほとんどの3Dリッチゲームはグラフィックカードの性能によって制限されているため、高レベル言語の翻訳オーバーヘッドによる潜在的な速度低下は無視できる程度になり、これらの言語によって得られる生産性の向上はゲームエンジン開発者の利益になります。[ 19 ]これらの最近の傾向は、 Microsoftなどの企業がインディーゲーム開発を支援するために推進しています。Microsoftは、Xboxおよび関連製品でリリースされるすべてのビデオゲームの主要なソフトウェア開発キット(SDK)としてXNAを開発しました。これには、小売店で販売するためのゲームをパッケージ化するために必要な広範なリソースを持たない小規模開発者向けに特別に設計されたXbox Live Indie Games [ 20 ]チャンネルが含まれます。マネージドフレームワークをサポートするプラットフォーム向けのゲームエンジンの開発は、これまで以上に簡単かつ安価になっています。[ 21 ]
ゲームエンジンのプロデューサーは、ユーザーが製品をどのように使用できるかを決定します。ゲームが産業であるのと同様に、ゲームが構築されているエンジンも産業です。主要なゲームエンジンは、サブスクリプション料金やライセンス料など、さまざまな価格で提供されています。[ 22 ]現在、 UnityとUnreal Engineは、ゲーム開発者にとって最も人気のある2つの選択肢です。[ 23 ]さまざまなゲームエンジンは、その上に独自のツールを構築することで違いが曖昧になっていますが、さまざまなゲーム開発者は、システムに慣れすぎて変更できないか、有料の壁に関係なく、そのようなエンジンの大きな利点に魅力を感じる場合があります。
Godotのような無料のオープンソースエンジンは人気が高まっており、特に2023年のUnityの価格論争以降、ゲーム開発者やスタジオは寛容なライセンスのエンジンを求めるようになった。[ 24 ]
より広義には、ゲームエンジン自体をミドルウェアと呼ぶこともできる。しかし、ビデオゲームにおいては、ミドルウェアはゲームエンジン内の機能サブシステムを指すことが多い。ゲームミドルウェアの中には、一つの機能しか持たないものもあるが、汎用ミドルウェアよりも説得力のある、あるいは効率的な方法でその機能を実現する。
最も広く使用されているミドルウェア パッケージ[ 25 ] 4 つは、機能のサブシステムを提供しており、RAD Game Toolsの Bink、Firelight FMOD、Havok、Scaleform GFx が含まれます。RAD Game Tools は、基本的なビデオ レンダリング用の Bink と、Miles オーディオ、Granny 3Dレンダリングを開発しています。Firelight FMOD は、低コストで堅牢なオーディオ ライブラリおよびツール セットです。Havok は、堅牢な物理シミュレーション システムと、アニメーションおよび動作アプリケーションのスイートを提供します。Scaleform は、高性能Flash UI および高品質のビデオ再生用の GFx と、ゲーム内のアジア チャット サポート用の入力メソッド エディタ(IME) アドオンを提供します。
パフォーマンス最適化のために他のミドルウェアも使用されます。例えば、Simplygonはレベルオブディテールメッシュの最適化と生成を支援し、Umbraは3Dグラフィックスにオクルージョンカリングの最適化を追加します。
ミドルウェアの中には、完全なソースコードが含まれているものもあれば、[ 6 ]コンパイル済みのバイナリライブラリのAPIリファレンスが提供されるものもあります。ミドルウェアプログラムの中には、どちらのライセンス形態でも利用できるものがあり、通常は完全なソースコードの方が高額になります。