例を挙げるのに最適なオープンソースのゲームエンジンは何ですか?[閉まっている]


15

可能性のある重複:
ゲームコードの良い(よく整理された)例はどこで見つけることができますか?

私はいくつかのC ++ゲームをコーディングしましたが、現在は独自のゲームエンジンとエディターを構築しています。

私はデザインについていくつかの疑問を抱いており、従うべき素晴らしい例を見つけたいと思っています。

あなたの意見では、最高のデザインは何ですか?

オブジェクト指向でなければなりません。プログラミング言語は重要ではありませんが、C ++、C#、Java、またはその他の類似の順序で好みです。

編集:より明確にするために、ゲーム固有のコードには興味がありません。汎用のゲームエンジンが必要です。

編集:この記事では、ゲームエンジンとは何かについて説明します:ウィキペディアのゲームエンジンと、既知のゲームエンジンのリストは次のとおりです。ウィキペディアのゲームエンジンのリスト


3
私の質問を実際に理解していますか?私が望むゲームエンジン(だけでなく、ゲーム)。そして、私はオブジェクト指向である必要があります。あなたが言ったスレッドでは、答えはゲームのみ(Doom3、Prototypeなど)であり、グラフィックツールキット(OpenSceneGraph)もありますが、そのスレッドの「ゲームエンジン」に特化したものはありません...または、あなたがそれを気に入らない場合は私の質問を削除しますが、私は下票を理解しません... :(私の質問同じではありません
ダニ

2
さらに明確にするために、ゲーム固有のコードには興味がありません。汎用のゲームエンジンが必要です。
ダニ

3
違いがあります:すべてのゲームが汎用エンジンで実行されるわけではありません。Doom3にはFPS固有のエンジンがあり、Prototypeは異なります...など、共通点(リソース管理、スクリプト作成など)があるかもしれませんが、これは私の質問には関係ありません。私の質問は、「いくつかのC ++ゲームをコーディングしました」というフレーズから始まります。繰り返しますが、必要なのは、汎用の優れたゲームエンジンのソースコードを見つけることです。再利用可能なコードを検索するためのゲームソースではありません。
ダニ

1
Doom 3には「FPS固有のエンジン」がありますが、リソース管理とスクリプト、3Dレンダリング、物理学など、一般的なエンジンに必要なすべての部分もあります。それは汎用エンジンであり、それ以上ではありません。

2
@Joe Wreschnigこのトピックについて@Daniに同意したいと思います。すべてのゲームは何らかのエンジンによって駆動されますが、「ワンオフ」エンジンと複数のタイトルで動作するように設計されたエンジンに使用されるアーキテクチャパターンは、スクリプト、リソース管理、3Dレンダリング、などのコンポーネント。さらに、同じスタジオで開発されたエンジンで構築されたゲームのコードを見るのは、サードパーティ環境でエンジンがどれだけ柔軟で使いやすいかを正確に示すものではないため、おそらく賢明な選択ではありません。
アリパトリック

回答:


6

ゲームエンジンを構築するための最善の方法は、既に十分に理解しているものから始めて、退屈または反復的な機能を追加することだと思います。

たとえば、Python / pygame(SDLラッパー)で多くのことをしていますが、システムをかなり楽しんでいますが、次の3つのことを気にしました。

  • アニメーションループを作成するのは退屈で、すべて同じです。
  • 基本的なスプライトオブジェクトは非常に限られています。方向と速度、さまざまな画面のエッジ条件、複数の画像、複数の衝突スキームを処理する機能を備えた改善されたスプライトが必要でした。
  • PygameにはUI機能がありません。
    ゲームに簡単に追加できるシンプルなラベル、ボタン、ナンバーセレクターが必要でした。

これらの機能のオブジェクト指向ラッパーを作成するのは比較的簡単でした。第10章と、ここから入手できるゲームエンジンのドキュメントをご覧ください:http : //aharrisbooks.net/pythonGame/

(これは本の一部として書かれていますが、本が必要ない場合でもゲームエンジンにようこそ。)

第10章では、基本的な2Dゲームエンジンを構築するための動機とテクニックについて説明します。独自のビルドを楽しんでください。実際の言語はそれほど重要ではありません(もちろん、OOPをサポートするためにOOP言語が必要です)。既にC ++でSDLを使用している場合は、私のエンジンをC ++ / SDLに適応させることから始めるかもしれません。


8

由緒あるQuake(ID tech)エンジン設計は、時の試練に耐え、おそらく最も成功したゲームエンジン設計です。レンダラー以外のすべてのものは、90年代半ば以降ほとんど変更されておらず、ETQWのような現代のゲームでも使用されています。

このエンジンの4つのイテレーション(Quake 1〜3、およびWolf ET)の完全なソースコードは、GPLで利用できます。おそらく、100を超える積極的に開発されたコミュニティがサポートするQuakeベースのゲームエンジンがあり、それらは現代に関連性を保っています。特に注目に値するのは、その素晴らしいレンダラー用のXreaLと、最新のハードウェア用に最適化されたQuake 3の忠実なメンテナンス用のioQuake3です。また、エンジンの最新の「公式」IDバージョンについては、ゲームロジック(エンジン全体ではなく)も利用できます。

このゲームエンジンを使用していなくても、よく考え抜かれたクライアントサーバー分離アーキテクチャと、低レベルの詳細からゲームロジックを分離することは、研究に値します。


1
ただし、Doom3以前のid techオブジェクト指向とは厳密には呼びません。
テトラッド

3
いいえ、オブジェクト指向ではありませんが、私が言ったように、勉強する価値があります。手続き型だからといって、それを見ても眼がんになるわけではありません!;)
マックスE.

6

Ogre3Dレンダリングライブラリはエンジンコードに非常に近く、私が聞いたすべてのアカウントから非常にうまく設計され、非常にオブジェクト指向です。

http://www.ogre3d.org/


+1すばらしいエンジン。Tetradに感謝します!私はすでにそれを知っていますが、ソースコードを使用したことも見たこともありません。AIが統合されているかどうかを確認しますか(パス検索など)
ダニ

3
それはすべてレンダリングに関連しているだけだと思います。
Tetrad

2
Ogreはグラフィックスレンダリングライブラリのみです。オブジェクト指向のグラフィックスレンダリングエンジン。
ジョナサンスターンバーグ

0

ゲームエンジンについて話すとき、レンダリングエンジン、サウンドエンジン、物理エンジン、入力エンジンなど以外のものについて考えていると思います。

したがって、ゲームアーキテクチャ、AI、またはデザインパターン/システムなどについて考えている可能性があります。これらは、ソフトウェアを管理してデータやその他のコンポーネントを管理し、ある種のシーン/ that /錯覚を作成し、管理可能な一連のルールを作成するために使用されます実際の「ビデオゲーム」を作成するための微調整。

これはビデオゲームの実際の最上層であり、私はそれについて少し学習しようとしましたが、それは広大で複雑であり、他のすべての主題について多くの知識が必要です。何もないところから別の現実を再現し、あらゆるイベントを追跡して計算し、いつでもそれらから正確なデータを再生成することを想像してください。あらゆる種類のゲームには、何らかのサブセットのゲームエンジンがあり、私はそうしません数学的に十分高速な汎用エンジンを実際に作成することは可能だと思います。単一のキャラクターをコントロールするゲームであっても、変化する可能性のあるものがたくさんあり、ゲーム全体でアーキテクチャを変更する必要がある場合があります。

エンターテインメントにはさまざまな種類のライセンスがあり、芸術的なライセンスが含まれるという理由だけで、ゲーム業界は他のコンピューターサイエンスの分野ほどオープンソースのサービスを提供していません:ゲーム製品は顧客のみが支払います。 Hord3d、NeoAxis、blendelf、Panda3Dなど、十分に機能すると思われるいくつかのエンジン。しかし、Unity、Torque、C4などのツールと同じくらい使いやすいことを保証できません。ゲームエンジンは、グラフィカルレンダラーでは、ゲーム制作で最も難しいタイプのソフトウェアだと思います。


0

PygameでPythonを使用するのは良い解決策です。Pythonは少し遅いかもしれませんが、今日のコンピューターではゲームを最適化しようとしても問題ありません。Pygameには、元のpygameのサイトに非常に優れたドキュメントがあります。ただし、最初にチュートリアルを開始して、いくつかの基本を学びます。速度の最適化(画像の変換など)を行うには、他の例を簡単に見つける必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.