2012-03-09 17 views
2

私が構築しているゲームエンジンの理想的な部分を研究しています。最初は、生のままで、Win32、X11、OpenGL、Glew、GLXなどの裸のライブラリだけを使って、すべてを一から書きました。ゲームエンジン用のSDL + Qt + OpenGLについてのいくつかの考え

そして、これはゲームのために永遠にエンジン。

OpenGL + SDL + Qtを使用してゲームエンジンを作成する方法を検討しています。 SDLをこのすべてで使用したい理由は、コンテキストの作成とOpenGLの初期化のサポートのためです。私はQtの実装が(ほとんどの場合)好きですが、正直言って私はSDLが好きです。私の主な考えは、厳密なGUI開発(ゲーム内メニュー、デバッグコンソール、HUDレンダリングなど)にQtを使用することです。

これは良いアプローチであるかどうかを知りたいのですが、そうでない場合は、より良いアプローチがありますか?これが良いアプローチであれば、エンジンそのものではなく、実現する最良の方法は何でしょうか?インテグレーションの2つです。私は物理シミュレータを書いていた誰かを扱っているので、同じことを達成しようとしていたのですが、スレッディングを使っていましたが、私が使用しているかどうかは分かりません。

私が知る限り、ゲームエンジンと物理シミュレータの間には大きな違いがあるようですが、自分が何を得ているのかを正確に知りたいと思います。 Qtのとは対照的に、

いくつかの考え

  • は、私はより多くの制御を持っているように私が感じる主な理由は、裸のOpenGLの実装が好き。

  • 私はメインループをよりコントロールしたいのですが、どうして私はSDLのようなものを使っているのですか?Qtの実装ではないのですが、2つの違いを考えれば実際には分かりません。

私は、QWidgetを使用してそれをそのままにする人もいると思います。私は一般的にグラフィックスプログラミングには比較的新しいので、生のOpenGLを使って元のAPIを学ぶのが最良のアプローチだと感じるということです。しかし、私が間違っているなら、私は間違いなく知りたいです。

私はこの質問がむしろ幅広く、あまり具体的ではないことを知っていますが、これについてアドバイスが必要です。これが何か類似したことをしている別の開発者を助けてくれることを願っています。

これは確かに客観性の面では難しい話題なので、柔軟性と未加工のOpenGL + GUIのサポートという基準を述べておきます。

+0

OpenSceneGraph - http://www.openscenegraph.org/projects/osg - グラフィックス用のプラグインを用意します。彼らには良い、活発なコミュニティがあり、個人的にはそれが素晴らしい図書館のセットであることがわかります。また、QtやSDLと統合されていますので、あなたが選ぶものはどんなものでも便利です。 – tmpearce

答えて

6

そして、私はこれがゲームエンジンのために永遠に取ることに気付きました。

間違っています。あなたが最終製品の目標または仕様を明確に定義していれば、それは永遠にかかりません。あなたが得たいもののビジョンをクリアしなければ、それは本当に永遠にかかるでしょう。 1人または小さなチームによって書かれたゲームエンジンがあります。 1つの例はサワーブラテンです。

あなたはエンジンがゲームの最も重要な部分ではないことを理解する必要があります。エンジンを持っていても、アート、音楽、テクスチャ、サウンドといったゲームアセットが必要です。彼らを獲得することは、エンジンを書くよりもはるかに難しいでしょう - あなたがそれをすべて自分で作ることができないように、それを十分に行うことができる独身の人を持つことは非常にまれであり、創造には時間がかかります。このようなもののための多くの無料の良いリソースではありません。

私の主なアイデアはない丁度良いアイデア

厳密GUI開発用のQtを使用することです。 QtをSDLに統合し、SDLイベントループと組み合わせたカスタムイベントループを提供することによってシグナル/スロットを使用することは可能ですが、フルスクリーンアプリケーションでQtウィジェットにアクセスすることはできません。フルスクリーンはすべてをブロックするので、Qt 4をゲーム内GUIに使用するには、SDL用の独自のQtベースのGUIフレームワークを何も設計しなくてはならない可能性が非常に高いです。これは可能ですが、時間がかかります。アプリケーションがフルスクリーンでない場合はこの問題はありませんが、Qt GUIはこのシナリオにはまったく適していません。 Qt 4をSDLアプリケーションに統合してQFont/QSharedPointer/QStringや同様の「低レベル」クラスにアクセスするのは理にかなっていますが、QWidgetを統合する予定がある場合は、それは価値がありません。理論的にはQtを投稿してSDL画面内にペイントするという方法は理論的には考えていませんが、これは価値がないと思います。解決策は複雑すぎるか、重大な制限があります。

より現実的なアプローチは、KISSの原則に固執することです。あなたはゲーム内GUIを作るために非常に柔軟なGUIライブラリを必要としません。あなたはいくつかのボタンでウィンドウのように見えるものを作る必要があり、そのように動作します。通常、これは複雑なGUIフレームワークを使用することなく、アニメーション領域の少ないテクスチャで解決できます。あなたの目標がある場合、私はこれは良いアプローチであるかどうかを知りたいのですがどのような

、SDLにはQt 4統合

SDLアプリケーション内でのQt 4 GUIを使用するためには良い方法ではありませんQt 4ウィジェットをSDLウィンドウ内でペイントされたシーンにシームレスに統合します。

もしそうでない場合は、そのより良いアプローチがありますか?

最初に、最終的なアプリケーションを明確に理解する必要があります。あなたが最終的なゲームの良いビジョンを持っていない場合は、エンジンが本当に必要ではない機能を実装するために多くの時間を無駄にするため、それを永久に取るエンジンを書く。

+0

QtをSDLと統合することは間違いありません。おそらくSDL + GLEWに行き、Android + OPENGL開発についてもっと研究していきたいと思っています。これは、デスクトップ向けのゲーム開発のようにAndroid向けにしたいと思っています。 – zeboidlund

1

私は、OpenGL + SDL + Qtを使用してゲームエンジンを作成しています。

QtとSDLは混在しません。 Qtは、ウィンドウと入力管理に関するSDLのすべてのことを行います。しかし、Qtはあなたのイベントループを隠しているので、ゲームにとってはひどいです。ただし、ゲームの場合は、イベントループを簡潔に制御する必要があります。

私はより多くのコントロールがあるように感じるので、主にQtとは対照的に、裸のOpenGL実装が好きです。

「裸の」OpenGLはありません。とにかくウィンドウをgreateする必要があり、SDLは合理的な選択肢のようです。 BTW:OpenGLをベースとしたゲーム用のGUIライブラリが用意されています。

+0

よろしくお願い致します。 – zeboidlund

+0

「彼らは混じり合わない」部分のために下降。彼らはミックスをしますが、あなたはいくつかのことを気をつける必要があります(Qtのメインループをあなたのものに置き換えてください)。 Qtのシグナル/スロットフレームワークのおかげで、SDLでQtを使用することは意味があります。 – SigTerm

+0

@SigTerm:シグナル/スロットのメッセージを渡すための独立したライブラリがあります。ゲームの信号やスロットは最適ではありませんが、私たちがGUIについて話しているのでなければ、Qtを別の競合に陥らせます。今回はOpenGLを使用します.QGraphicsViewにすべてを入れてQtウィジェットを典型的なゲーム画面に統合する。私は本当にQtを好きですが、ゲームにとってはそれは正しいツールではありません。 – datenwolf

関連する問題