ベアOpenGLは、小規模開発者にフレームワーク/エンジンに対してどのような利点を提供しますか?[閉まっている]


16

私は、インディー開発者がフレームワークとエンジンから離れ、ベアOpenGLを使用するか、SDL / SFML2と組み合わせて使用​​する傾向にあることに気付きました。インディー開発者として、低レベルのOpenGLが個別のエンジンまたはフレームワークで提供できるものがわかりません。

ほとんどのきちんとしたエンジンとフレームワークは、必要な機能を提供し、邪魔をしません。また、OpenGLを直接処理するオプションを開く場合があります。クロスプラットフォームをコンパイルする機能を提供するものさえあります!

私はボンネットの下で何が起こっているかを学ぶという願望を理解していますが、OpenGLがエンジンやフレームワークを介してインディー開発者に提供するかもしれない利点を見ることができません。

OpenGLを使用してゼロからゲームを構築する背後にある理由を説明できますか?


ゲームとグラフィックプログラミングの大学院生として、OpenGLをゼロから学習することの複雑さを証明できます。今日私がインディゲームを作っているのなら、絶対にSDLまたは他のライブラリを使用します。しかし、私は研究を始めたときよりも今日のグラフィックスについても多くのことを理解しています.APIを学ぶことは、GPUが一般的にどのように機能するか、ハードウェアとソフトウェアがどのように相互作用するかを理解するのにかなり役立ちました。しかし、商用製品を作るには、この時点で絶対にサードパーティのライブラリを使用します。
フィリップ

回答:


23

これは主に意見に基づく質問/回答であるため、実際にはこのプラットフォームには必ずしも理想的ではありませんが、とにかく:

インディーとしてフレームワーク/エンジンがないのはなぜですか?ここに私の2セントがあります:

  • 予算不足:これはおそらく、ほとんどの小規模/インディー開発者にとって最大のポイントです。多くのフレームワークまたはエンジンでは、より高価なバージョンを購入せずに製品を公開することはできません(安価なバージョンまたは無料のバージョンが利用可能であることを前提としています)。プラットフォームごとに1回支払う必要がある場合もあります。
  • 複雑さ:ほとんどのエンジンまたはフレームワークは、次の2つのカテゴリのいずれかに分類されます。
    • それらは、1つの特別なジャンルに非常に限定されています(RPG Makerは典型的な例です)。
    • または、 'y'reは単に汎用的すぎて、とにかく使用しない可能性が高い(たとえば Unity」
  • 独自コード:ほとんどのエンジンはオープンソースではないため、実際のソースを取得するにはさらに費用がかかります(利用可能な場合でも)。実際のソースコードがなければ、他のプラットフォームへの移植は困難または不可能にさえなる可能性があります(ここでも、RPG Makerは完璧な例です)。
  • 不器用:これは私の個人的な意見ですが、少なくとも小さなゲームを構築する場合は特に、少なくとも既成のエンジンとフレームワークを考慮すると、これはかなり大きな失望です。サイズが200 KBのような小さな休憩ゲームをプレイしたいのに、50 MBのランタイムが必要な人はいませんか?
  • 言語の選択:一部のエンジンとフレームワークは、独自のコードで使用するライブラリを提供していません。代わりに、独自のスクリプト言語または設定された言語(JavascriptやC#など)を使用するフレームワークまたはランタイムを提供します。独自のカスタムエンジンを作成している場合は、選択した言語を自由に使用できます。
  • あなたの仕事の保護:事前に作成されたエンジンまたはフレームワークを使用している場合、他の人がコードまたはアセットを変更または逆コンパイルするのにはるかに簡単な時間を持っている可能性が高くなります(ハイスコアを維持するだけでも掃除)。カスタムコードとアセット処理は、特にネイティブコードにコンパイルされた場合、はるかに大きなハードルがかかります。
  • ブランディング:これは多くの人にとってささいなことかもしれませんが、エンジンやフレームワークによっては、ロゴや広告を表示することを余儀なくされるため、基本的に誰/何を宣伝するかを自由に選択できます。もちろん、これは多くの場合、実際のライセンス、ライセンス料などに依存します。
  • ライセンスとの非互換性:これは、エンジンを選択する際に多くの人が考慮していませんが、何をしたいかによっては、これが大きな要因になる可能性があります。エンジンを購入しても、ソースや関連資料の開示を制限される場合があります。ユーザーができるようにしたい場合でも、このような何かが改造を不可能にするかもしれません。例として、Valveのソースエンジン(Half-Life 2Team Fortress 2など)を取り上げます。彼らは、改造者が独自のプロジェクトにエンジンを使用できるようにします。これらのゲームが(たとえば)Unreal Engineに基づいている場合、ライセンス条項で暗示されている制限のため、これは不可能です。

11
さらにもう1つ:openGLを学習すれば、それを理解できます。各言語で再学習したり、特定のフレームワーク/エンジンで新しいフレームワーク/エンジンごとに実装する方法を学習する必要はありません。移植性を高めるにこれもリードは
ウェス・

最も一般的な問題ではありませんが、エンジンまたはフレームワークでは、アイデアを作成できないか、複雑すぎる可能性があります(例:minecraft)
akaltar

@akaltar:本当ですが、同時に、誰かが目的に合ったエンジンを選ぶことを期待しています。たとえば、2Dゲームに3Dエンジンを使用しないでください。
マリオ

9

ほとんどのきちんとしたエンジンとフレームワークは、必要な機能を提供し、邪魔をしません。

彼らですか?それはむしろ、グラフィカルに言えば、あなたが何をしているかに正確に依存しています。

多くの種類のゲームには、グラフィカルな質問に対する標準的な回答があります。たとえば、平均的な2Dゲームは、XNA / MonoGameなどの2Dの腕前でうまく処理できます。単なるスプライトであり、テレインのバッチで提供されたり、回転したりすることができます。

しかし、ゲームが以前は平均的な2Dゲームだった場合、高さマップを使用して画面に相対的な奥行きの外観をもつ詐欺師を作成するなど、いくつかのクールなテクニックについて読みます。そして、あなたはそれをしたいのです。

今、あなたは通常のマッピングと、場合によっては視差マッピングを採用しています。すべてが「レンダリングスプライト」の同じコンテキストにありますが、多くの純粋な2Dエンジンが処理できる必要があります。具体的には、マルチテクスチャの「スプライトブリッティング」が必要です。これは、多くの2Dエンジンが実行できるものではありません。

エンジンがあなたに適応できない場合はどうしますか?つまり、複数のパスを実行する必要があります。1つは色用で、もう1つは法線マップを介した照明用です。ただし、カラールックアップに視差マッピングを使用するには法線マップの高さフィールドが必要なので、これは機能しません。んで、どうする?透明度を得るにはアルファが必要なので、アルファを盗むことはできません。また、エンジンはマルチテクスチャをサポートしていません。

したがって、次のいずれかを選択する必要があります。

  1. アイデアを放棄します。これは、ゲームが機能的にエンジンによって制限されることを意味します。
  2. エンジンをハックしてマルチテクスチャを作成します。あなたがソースコードにアクセスできると仮定すると、あなたは今それを他人のコードを突くために自分で取っています。これはまた、あなたがそれを維持する必要があることを意味します。
  3. エンジンの制限内で、できる限りのことをしてください。したがって、法線マップでは視差を取得できますが、色では取得できません。望んでいたものとは異なるかもしれませんが、何もないよりはましです。

例として、Geometry Warsを取​​り上げます。ほとんどの2Dエンジンは、これらの種類のビジュアルを吸い込みます。それらのほとんどは、線ではなくスプライトの描画に基づいて構築されているためです。それは非常に特殊な種類のレンダラーを必要とするゲームです。

結局のところ、あなたはあなたのゲームのニーズにとって重要なあなたのゲームの要素に責任を持つ必要があります。ゲームの視覚的な外観が、特定の効果ではなく、主に使用する画像とモデルのアートスタイルによって開発されている場合は、事前にパッケージ化されたソリューションを使用するのが適切です。ただし、カスタムレンダリングコードによってゲームの視覚スタイルが大幅に定義されている場合、標準のエンジンがボックスの外側で行うことを決定した場合、標準エンジンが深刻な制限になる可能性が高くなります。

さらに、非常に実用的な問題があります。すべてのゲームエンジンが同じように移植できるわけではありません。

最近のモバイルプラットフォームの台頭により、ゲームの市場は多数のOSやユーザーインターフェイスデバイスに広がっています。すべてのエンジンがすべてのデバイスで動作するわけではありません。また、エンジンがプラットフォーム上で機能しない場合、時間をかけてプラットフォーム上で機能させることはできません。結局のところ、そもそも最初にエンジンを使用したわけですよね?

自分のゲームが特定のプラットフォームで機能することが重要な場合は、再度責任を負う必要があります。そして、これで成功するための「最も簡単な」方法は、自分でやることです。低レベルの詳細を処理する必要がある場合に、おそらくより単純なプラットフォーム固有のフレームワークを使用して、複数のプラットフォームで動作できるエンジンを構築します。そうすれば、それが壊れた場合、それはあなたのコードです。あなたはそれを修正できる最高の人です。


私はあなたの答えが好きですが、XNAをあなたの例として選んだのは非常に奇妙です。移植性を除いて、あなたが言及した欠点はありません。
セスバティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.