ゲームコードはエンジンのどこに適合しますか?


7

ゲームとゲームエンジンがゲーム開発にどのように適合するかを誰かに教えてもらえないかと思っていました。具体的には、ゲームエンジンには実際にはゲームが含まれていません。ゲーム開発者はエンジンを構築してから、エンジンから継承する新しいクラスを作成し、それがゲームになりますか?

例えば、

class ShooterGame : public Engine
{
};

ゲームコードがエンジンのどこに収まるかはわかりません。



1
これ:Scientificninja.com/blog/write-games-not-enginesは、エンジンがどのようにして生まれるのかについての私の考えを大まかに説明しています。他の人が示唆しているように、それは主に、ゲームの再利用可能なコンポーネントを抽出して、それらを完成させて次のプロジェクトに進むことによるものです。

この質問を救い出そうとしています。しかし、「ブロードゲームエンジン」以外では、これがどこに当てはまるかはわかりません。
Gnemlock、

@Gnemlock:たぶん用語です。これは、「エンジンコード」と「ゲームコード」を呼ぶ行に関するものですか?
DMGregory

回答:


24

「ゲームエンジン」の概念にとらわれないでください。ゲームスタジオには、ゲームの制作プロセスを高速化するために作成するゲームエンジンがあることがよくありますが、多くの独立した開発者は、実際に機能するものを実際に作成することのないゲームエンジンを作成しようとしています。

ゲームエンジンは、好きなようにすることができます。ゲーム間でEngine、例のようにクラスをサブクラス化できるほど十分に共通していることがわかった場合は、それで問題ありません。「エンジン」が、あなたが開発した過去のゲームで便利であることがわかっている関数のほんの小さなライブラリである場合、それも素晴らしいことです。あなたにとってそれが何を意味するにせよ、「エンジン」の概念は、より多くのゲームを作るのに役立つ再利用可能なコードにすぎません。

ゲームを作ろうとしているのなら、エンジンを作ることに集中しないでください。ゲームを作る。ゲームが完了して2番目のゲームを作成する準備ができたら、2番目のゲームを作成し始めます。最初のゲームですでに作成したビットが見つかります。次に、これらのビットをライブラリまたはエンジンに抽出して、2つのゲーム間で共有できます。それはエンジンが作られるべきである方法です。これは通常、ゲームを作成する前に作成することを決定するものではありません。テストされていない膨大な量のコードが作成され、必要になる前に基本的に作成しているためです。これは時期尚早の最適化に似ていますが、もっと悪いです。

したがって、質問に直接答えるために、基本的にゲームエンジンは、ゲームスタジオがゲームの迅速な作成を支援するために使用する再利用可能な「もの」(ライブラリ、ツール、フレームワーク)であり、通常、特定のゲームを念頭に置いて、または作成後に作成しますいくつかのゲームでは、類似のビットを抽出して、将来のゲームで使用できることがわかっているエンジンに成形しています。振り返って(2つ以上のゲームが既に作成されている)、または徹底的な計画なしに作成されることはほとんどありません。


3
+1:再利用可能なコードについて考える前に、具体的なものを入手してください。多くの場合、コードをハッキングすることで、改善の余地があることがわかります(そして、コードの再利用性が高まります)。
マイケルコールマン、

7

基本的に、ゲームコードがエンジンのどこに収まるかは不明です。

心配する必要はありません。私は、ゲームコードがエンジンに適合する場所について少し混乱しているゲームに専門的に取り組んできました。;)

これはゲーム開発でよく言われますが、標準的なシステムや定義はありません。一部のエンジン(通常は非常に単純なゲーム用)では、コードをまったく記述せずに新しいゲームを作成できます。他のエンジンは基本的には既存のゲームのスケルトンであり、機能を追加するにはコードをインプレースで変更する必要があります。いくつかは例のようなもので、独自のシステムにサブクラス化または集約できるクラスのコレクションです。その他は、独自のアプリケーションに追加して必要に応じて利用するコードのライブラリーに似ています。彼らが共通している唯一のことは、エンジンがシステムの一部であり、複数のゲームに適している(または適していると主張している)ことです。


3

あなたが上記のように人々が行った状況があると私は確信していますが、個人的には、ライブラリーのコレクションとして常にエンジンを好み、必要に応じてプルできるビットを持っています。これにより、特定のタイプのゲームへの適合性に基づいて、さまざまなコンポーネントを入れ替えたり入れ替えたりする柔軟性が最終的に得られます(つまり、ゲームのタイプに応じて2Dまたは3Dの物理ライブラリまたはレンダラーを選択できます)。メモリに常駐する他のすべての選択肢、またはDX9 / DX11 / etcなどに基づいてレンダリングされたものから選択できます)。


1
これは最良の回答と対立しません。ゲーム#2を作成すると、ライブラリにプルするための重複コードが表示されるようになります。私は可能な限りサードパーティのライブラリを優先します(作業時間を節約します)
ashes999
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.