ゲームフレームワーク(たとえば、C#を使用したXNA、c ++用のSDL)とゲームエンジンの違いは何ですか?

ゲームフレームワークはエンジンを使用しますか?ゲームエンジンは、物理エンジン、粒子エンジンなどのサブエンジンをカプセル化しますか?それらは一緒に使用する必要がありますか、それとも相互に排他的ですか?

2Dと3Dの両方に別々のエンジンがあると思いますか?

コメント

回答

「エンジン」または「フレームワーク」の厳密な定義は実際にはありません。

一般的に、エンジンは「より多くのことを行う」と見なされます。または、フレームワークよりも多くのツールと関連するサポートがあります。フレームワーク自体は、統合されたAPIを通じて公開される関連機能の緩いコレクションであることがよくあります。

そのために、エンジンであると主張するものは、機能を実現するためのフレームワークであると主張しますが、必ずしもそうである必要はありません。同様に、ゲームエンジンであると主張するものは、その構成要素(物理およびレンダリングなど)が物理エンジンまたは物理フレームワーク。両方の用語で参照される種類のテクノロジーは、同じ意味で使用することも、使用しないこともできます。

物理学、音、そして2Dまたは3Dグラフィックスでさえ、ほぼすべての「エンジン」または「フレームワーク」が存在する可能性があります。

これは実際には単なる用語です。問題、そしてそれは一般的にあまり重要ではありません。機能の観点、ゲームの作成に焦点を当てた観点から、重要なのは、問題のテクノロジーがゲームの作成に必要なものを提供するかどうかです。それ自体をエンジンと呼んでもフレームワークと呼んでも、それとは何の関係もありません。

回答

私が使用する簡単な定義:フレームワーク上にエンジンを構築することはできますが、エンジン上にフレームワークを構築することは決してありません。1つはアーキテクチャとプログラムフローを決定するスケルトンであり、もう1つは作業を行う筋肉です。

具体的な場合たとえば、Artemisはコンポーネントシステムを構築するためのすてきな小さなフレームワークですが、エンジンと呼ぶことは決してありません。 Artemis Systemsと標準コンポーネントを構築して、そこからエンジンを作成できます。

コメント

  • 私の会社では、誰かがエンジンのフレームワークを設計しました。このフレームワークは、エンジンが提供しない'欠落しているパーツのコレクションとして機能し、他の方法では(古い)エンジンで少し乱雑なものを統合します。また、開発を容易にするヘルパーを提供します。

回答

フレームワークは、(通常は)低レベルのライブラリのコレクションです。そして、あなたがやりたいこと(グラフィック、サウンドなど)を行うために使用できるヘルパーのもの。フレームワークについては、「通常、ゲームで一般的なことを行うように最適化または設計されていることを除いて、ゲームに関連するものはありません。

例:エンジンを使用すると、エンティティのリストを作成できます。各エンティティには位置があります。フレームワークを使用すると、特定の位置に3Dオブジェクトをレンダリングできます。

したがって、各エンティティに3Dオブジェクトを与えることでそれらを接続し、必要に応じてレンダリングします。

そしてta-da、あなたはゲームを持っています。

答え

本当に詳細な説明については、それを読んで、 JasonGregoryによる聖書ゲームエンジンアーキテクチャのみ。このトピックは公開されて以来、最も完全な作品だと思います。C++の部分だけでなく、C ++の部分も処理します。また、すべてのゲームエンジンプログラマーにとって、背後にある理論/アーキテクチャにとって重要です。これは、言語に依存しない優れた出発点です。私たちが話していることの概要を知るために、本からのこの画像

質問に答えてみましょう。

何を書くにしてもコードになります:-)長年の経験の後、必要なものと必要な方法を書くか、必要なものを提供するものを使用してください。

用語エンジンフレームワークが来る他の用語と一緒にソフトウェアアーキテクチャから。それでは、基本的な用語から始めて、上に移動しましょう。


ライブラリ

典型的な例:数学計算(Vector、Matrix、…)のすべての基本的なタイプと関数を提供する数学ライブラリまたはjpegまたはpng画像を書き込む機能を提供する画像(jpegまたはpng)ライブラリ

Unity 3Dでは、数学は数学のlibrayです。

理論:librayは、トピックに関する専用の機能を提供します(例:数学)。 )AND はプログラマーによってオンデマンドで呼び出されます

一部のプレビュー:フレームワークを保持するライブラリ、別名フレームワークライブラリが存在する場合があります。


フレームワーク

理論:フレームワークは制御の反転を導入します。つまり、ほとんどの場合、開発者はフレームワークメソッドを呼び出しませんが、フレームワークは開発者のコードを呼び出します。例外は、フレームワークライブラリをコードに統合し、フレームワークを開始する必要がある場合です。フレームワークライブラリは、専用の使用法を持つフレームワークのすべてのメソッドと関数およびインターフェイスを提供します。そのため、フレームワークをライブラリに含めることができます。

典型的な例:Unity 3D MonoBehaviour は、Awake、Start、OnUpdateなどのメソッドを提供します。開発者はこれらのメソッドを実装してから、これらのメソッドは(ゲームオブジェクト管理)フレームワークによって呼び出されます(これは制御の反転です)。 OnCollisionEnter、OnCollisionExitメソッドと同じです。それらは同じモノビヘイビアにありますが、物理フレームワークによって呼び出されると思います。


プレビュー:エンジン、ランタイム、エディター、SDK

エンジンという用語は常に曖昧であり、まだ(そしてさらなる技術開発で改善されない)プレビューの説明があるためです。

エンジンという用語は複数の目的で使用されており、どれが正しいかを一意に言うことはできません。私が最初にゲームエンジンの作成に触れた2004年に、それもあいまいでした。事前定義されたデータをロードするある種のコードの意味でゲームエンジンがあり、ゲームをプレイできます。事前定義されたデータをロードするため、データ駆動型エンジンと呼ばれていました。それらを一度コンパイルすると、外部データは再コンパイルせずに別のゲームになる可能性があります。ある時点で、これはランタイムと同じでした。

エディターは明確です。エンジン/ランタイムによって読み込まれる事前定義されたデータを定義できます。

エディターを備えたエンジンはSDK(Hammer SDKなど)と呼ばれていました。

当時、専用のエンジンがありました。物理エンジン、レンダリングエンジン、サウンドエンジン、ゲームオブジェクト管理エンジン、ネットワークエンジン、…

私の個人的な意見では、これらはエンジンではありません(特に、レンダリングエンジンは、ゲームエンジンではありません。レンダリング)。ゲームエンジンをグーグルで検索すると、結果にはゲームエンジンではない純粋なレンダリングエンジンが90%含まれています。私はそれらすべてをライブラリと呼びますが、事前定義されたデータをロードする可能性があるため、データ駆動型エンジンという用語と一致します。

詳細に入る前の最後の短い補足:私は修士号を取得して卒業しました。コンピュータサイエンス。私の修士論文は、「ゲームエンジンのコアを開発する方法」というトピックを扱いました。他のすべてのエンジンをまとめ、ゲームオブジェクトの管理、ゲームループなどを行うコードの部分を意味します…

私は修士論文を(短い)本として出版しました。購入者/読者からのAmazonに関する唯一のコメントは(数年後)です:これはゲームエンジンに関するものではありません。私は卒業に成功し、3人の経験豊富なプログラマー(そのうち2人はゲームとインタラクティブアプリケーションに専念しています)に対して私の論文を擁護してきたので、ゲームエンジンを書いたと思います。


エディター

簡単:他の部分で必要な形式でデータを定義できるため、これらのファイルを書き込む必要がなくなります。手作業で、または外部ツールを使用して作成します。

これは、Unity3Dエディターが行うことです。


ランタイム

この用語は、多くの場合エンジンと同じように使用されます (これは正しい場合も正しくない場合もあります。)

ランタイムは生成されたデータを実行し、データとの関係を実行します。たとえば、ゲームを見せて、ゲームをプレイさせます。ゲーム自体を変更できないという意味で、データは作成されません(ゲームを保存する場合を除く)。

Unity Web Playerは、Webブラウザ内でUnityゲームをプレイできるランタイムです。

同じランタイムで複数の異なるゲームをロードして実行できます。

Unity 3DスクリプティングAPIの場合、ゲームで機能する機能と機能の間にカットがあります。これはエディター内でのみ機能します。


SDK

この用語は、多くの場合フレームワークとも呼ばれます

当時、SDKは次のようなツールのバンドルでした。エディター、プログラマー向けのIDE(統合開発者環境)、データフォーマット向けのエクスポーター、ランタイム/エンジン。

つまり、SDK /フレームワークは、事前定義されたワークフローとユーティリティを提供し、(適切に設計された)方法を示します。ゲームを(簡単に)作成する方法。

基本的に、Unity 3Dエンジンは、SDKの方向により適合しているため、間違っています。しかし、Unityはさらに新しい単語/定義であるため、それと一致する必要があります。

とにかく、別の用語を紹介すると、SDK /フレームワークは事前定義されたゲーム開発パイプラインを提供します(資産だけでなく)パイプラインですが、Unityのように、アセット、ロジック、ビルド、デプロイメントなどのパイプラインかもしれません。)


エンジン

sarcasm on 誰もがクールになりたいので、すべてに使用されますライブラリ、フレームワーク、またはゲームを作成するだけでなく、完全なエンジンを作成することもできます。 sarcasm off

トリガーしてみましょう:

エンジン

  1. コード/ソフトウェアの一部です
  2. 複数で再利用することを目的としていますプロジェクト(1つのゲームに対してのみゲームエンジンを作成することもできます)
  3. ゲームエンジンを再利用するために、再利用可能な部分をゲーム固有の部分から分離します
  4. 再利用可能にするため(方法によって異なります)それは再利用を目的としています)データ駆動型エンジン外部データの読み込み

などのさまざまなフレーバーがあります

エンジンは他の複数のエンジンで構成できます(今日ではすべてがエンジンと呼ばれているため)。ゲームエンジンには、レンダリングを実行するレンダリングエンジンを含めることができます(もう一度:神、くそー、地獄:レンダリングのみを実行するコードはゲームエンジンではありません)

  • 物理エンジン物理演算を行う(「ゲームエンジンではなく物理エンジン)
  • AIを処理するAIエンジン(ゲームエンジンではなくAIエンジン)
  • aネットワーク関連を実行するネットワークエンジン(RakNetなど)(「ゲームエンジンではなくネットワークエンジン)
  • オーディオ関連を実行するオーディオエンジン(ゲームエンジンではなくオーディオエンジン)
  • コンポーネントベースのゲームオブジェクト管理モデルですべてをまとめるためのプラグインベースのフレームワークを提供するコアエンジンに基づくアプリケーションの例。各サブエンジン(オーディオのレンダリング)は、プラグインとしてゲームエンジンに追加されるモジュールです。各コンポーネントは、サブエンジン/モジュールの一部にすることができます。また、(コンポーネントベースの)ゲームオブジェクト管理は、分離されたモジュール間の接続リンクです。

    ここに画像の説明を入力してください


    ゲームエンジンに最も近い定義

    ゲームエンジンソースコードの一部ですであるがすべての機能を提供する “686b0e923d”>

    複数のゲームでを再利用し、コードを作成して実行できるようにすることを目的としていますゲーム。したがって、一緒にコードの他のすべての部分(レンダリング、オーディオ、物理学、ゲームオブジェクト管理、ネットワーキング)を手がかりにします。ライブラリ、フレームワーク、または専用エンジン(レンダリング、物理学など)のいずれか。

    ゲームエンジンは真ん中の混乱です。


    回答

    @Joshがすでに述べたように、フレームワークやエンジンの厳密な定義はありませんが、概念的な意味では、どちらも非常に異なるツールです。

    フレームワークには、使用する基本的なAPI抽象化が含まれており、パフォーマンスや互換性などを(一般的に)心配することなく、プラットフォームまたは機能と対話するためのより高いレベルのツールをユーザーに提供します。与えた例では、SDLはフレームワークです。プラットフォームを放棄し、ウィンドウ管理やOS固有のものなどを気にすることなく、そのレイヤーの背後にソフトウェアを構築できます。ソフトウェア全体を構築する場合は、異なるものが必要になります。フレームワーク、メディアとプラットフォームを管理するためのfe SDL、物理を管理するためのBox2Dなど。

    エンジンは異なります。この場合、ツールは開発に必要なすべてのものを出荷し、物理エンジンが提供します。物理を管理するために必要なすべてのものを備えており、使いやすいAPIが付属しているため、物理シミュレーションを構築する場合は、他のサードパーティライブラリは必要ありません。エンジンは、フレームワーク、他のエンジン、インターフェース、スニペット、および一般的なコードのコレクションにすぎず、他のサードパーティを必要とせず、下位レベルのものについて心配することなく、プロジェクトを完了するために必要なすべてを提供します。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です