Unity3Dのようなエンジンが、初心者向けのOpenGLのようなネイティブライブラリよりも強調されているのはなぜですか?[閉まっている]


25

私は3Dゲームの初心者です。私の好みのプラットフォームはAndroidです。「使用するもの:OpenGLまたはUnity3d?」に関する質問を他のフォーラムに投稿しました。彼らは全員Unity3Dを強調し、その組み込みの機能とツールを使用しました。OpenGLを使用する場合は、自分でコーディングする必要があります。しかし、その後、誰かが複雑なゲームのほとんどがカスタムエンジンを必要とすると言います。OpenGLではなくUnity3Dのようなエンジンを使用するのはなぜですか?


15
2つの単語:インスタント感謝。OpenGLアプリを使用するには、かなりのコード行と幅広い概念を理解する必要がありますが、Unityを使用して「有用」なことを行うことはできます。
ヤリコンパ14

5
おそらく、この1つのスレッドでそれを説明するだけで、「どの技術を使うべきか」という質問はすべて消え去ります。また、ユニコーンが欲しい
ジョーク14

8
「ほとんどの複雑なゲームにはカスタムエンジンが必要です」 -実際、驚くほど多数の非常に成功したAAAゲームがUnrealエンジンのようなストックエンジン上に構築されています。
フィリップ14

2
それに加えて、初心者はゲームを複雑にすることができず、とにかくカスタムエンジンが必要になります。
クリスチャン14

これはちょうどGamasutraに現れ、それが直接、この質問への答えではないのですが、それが関連している:gamasutra.com/blogs/ChrisDeLeon/20140426/215519/...は -特に、それはあなたがからビルドプロジェクトのために非常に困難になります「ささやかな」最初のプロジェクトとなるOpenGLの基礎。
スティーブンスタドニッキー14年

回答:


30

あなたはすでにあなた自身でこの質問に答えていると思います。あなたは「私は3Dゲームの初心者です」と言っていました。さらに、「... Unity3Dとそれを使用する機能とツールが組み込まれているため、OpenGLを使用する場合は自分でコーディングする必要があります」と言いました

基本的にこれは、OpenGLを単独で使用している場合、ゲームエンジンを作成し、その後数年後にゲームを作成することを意味します。ゲームに集中したい場合は、利用可能なリソースを活用して、できるだけその目標に近づけてください。ゲームエンジンの使用は、ゲームの作成に必要なものをすべて書くのではなく、ゲームの作成に努力を集中させる最善の方法です。

この関連の質問を参照してください:ライブラリとエンジンとの違いは何だと、この1 ゲームエンジン対ゲームフレームワークは何が?


OpenGLはグラフィックス専用であり、unity3dはゲームのグラフィックスと物理的要件を備えた完全なフレームワークですか?
アマングローバー14

1
Unityはそれ以上のものですが、はい、それはほとんど違いです。
jhocking

3
@AmanGrover:GLでは、「グラフィックスのためだけに」は、「GPUにコマンドを送信するためだけに」ということも認識しています。グラフィックの実際のハードワークはすべてプログラマーが行う必要がありますが、Unityには重要なグラフィック機能とアルゴリズムがすべて含まれており、すぐに使用できます。
ショーンミドルディッチ14

2
エンジンを書いたり、ゲームを書いたりしないでください。それは私が近づくように言われたことです。実際のゲームを作成している間に誰かがゲームエンジンを作成するということです。それが、私がByteに同意しない点です。
LaVolpe 14

28

初心者は定義上、彼らが何をしているのかわからないからです

OpenGLには大きな学習曲線があります。確かに、いくつかのglBeginコマンドを発行し、画面にいくつかの三角形を配置することに興奮してから、まだまだ準備ができていない複雑なものを使って奥深くまで進んでください。それは学ぶための素晴らしい方法ではありません。アナロジー(少し誇張されている)は、いくつかの基本的な高校の物理学を学び、ラージハドロンコライダーを担当している可能性があります。それは沈むか泳ぐのではなく、泳ぐか、大きな放射性の穴を地面に残します。

「ゲームを作りたいのですが、何を使うべきですか?」質問は実際にゲームを作りたいですか(そうでなければ、彼らはきっと別の質問をしたでしょうか?)答えは質問に合わせて調整されています。 UBOまたはglUniformの呼び出しが単一のマトリックスを更新するのに適しているかどうかを悩ますことで気を散らすことなく。

これは、一度に1つのステップを踏み、学習プロセスを簡単にし、最後にやりがいのある何かを与えることです。ゲームを作る方法を学ぶしようとしているどのように適切に成熟し、強力な3DのAPIを使用するために同時にすることは、おそらくあまりにも多くの初心者のためです。これは、Dunning–Kruger効果からマイナスの意味合いを引いたものに似ています。あなたはあなたが知らないことを知らないので、あなたは実際にあなたが何をしようとしているのかについての現実的な絵のような種類を実際に持っていません。

一方、OpenGLを学習することが目的の場合、実際にゲームを作成することは望ましくありません。あなたはOpenGLを学びたいです、そしてゲームを作るという文脈でそれをすることは楽しい学習方法かもしれませんが、ゲームを作ることはそれ自体で終わりではなく、終わりへの手段です(そして確かにOpenGLを学ぶ唯一の方法ではありません)。あなたはおそらくそれを決してリリースしないでしょう、そしてあなたは数年後にほとんど間違いなくそれを振り返り、あなたがしたいくつかの愚かな事に恐ろしく恥ずかしくなるでしょう。


22

これは、このプロジェクトから何を引き出したいかによって大きく異なります。あなたの主な目標がゲームの設計に集中することであるなら、おそらくビルド済みのエンジンを使うほうがよいでしょう。ゲームのプログラミングのプログラミング部分について学習することが目標の場合(特に、業界での仕事を準備しようとしている場合)、OpenGLでの作業はより価値のある経験になるでしょう。上記のいずれのステートメントも、常に100%真実ではないことに注意してください。

この種のことを決定するとき、実際にはルールはありません。この種の質問で聞いた回答のほとんどは意見であり、ご自身のプロジェクトやスキルセットに完全に関連するものはほとんどありません。


ありがとう、そしてはい、私はこの分野で仕事を探しているので、OpenGLで行きます。
アマングローバー14

9
「裸の」OpenGLを使用することは、ゲーム業界に参入する人にとってより価値があるということに強く反対します。Unityは、最新の比較的成熟したゲームエンジンの優れた例です。それが提供する機能を理解することは(同様の機能を自分で提供する方法を学ぶことに目を向ける)ゲーム開発自体のプロセスを理解する優れた方法ですが、OpenGLは意味のある意味でゲーム固有ではありません。
スティーブンスタドニッキー14

これは、これらのことについてのルールはなく、意見だけが本当に存在することを示しています。それはすべてあなたが必要とする/望むものに依存します。
jhocking

5
@AmanGrover-ゲームを作らないでください!一度に1つのことを学習するのが簡単になります。太陽系シミュレーターを作成します。基本的なプリミティブを描画する方法、それらを変換および回転する方法を学習し、惑星をVBOに入れてそれらをより速く描画し、シェーダーを使用してアニメーション化された雲を作成し、基本を理解するのに十分な距離があります。
マキシマスミニマス14

3
@KamikazeSoctsman繰り返しますが、ここで反対しました。OGLが役に立たないと言っているわけではありません。-しかし、過去10年間、私はOpenGLの知識をほんの少しの時間だけ使い、簡単に始めました。それどころか、ゲームグラフィックエンジンはパフォーマンスに非常に敏感な傾向があるため、私の経験では、新しいプログラマーが最初に始めるのは最も一般的ではありません。3D数学を絶対に知っておく必要があり、レンダリングの原則を理解する必要がありますが、それはOGLの学習とは大きく異なります。
スティーブンスタドニッキー14

6

違いは簡単です。ユニティは、場所を取得できる4つの丸い車輪を備えたキャリッジです。OpenGLはおがくずであり、ショップを設置して、改良されたよりモダンなキャリッジとホイールを成形するために使用できる可能性があります。それはあなたがあなたが最初にやる前に人々が何を学ぶかに時間の多くの時間を費やす場合です。

初心者としてのあなたの目標は、最初に既存の馬車とそのデ​​ザインを研究することです。すべてをウィンドウの外に放り出し、ゼロから始めることは意味がありません。まず、すでに存在するものを学び、それについて徹底的な知識を得ます。知らない場合、その制限をどのように知りますか。また、制限を知らない場合、どのようにそれらを突破できますか?役に立たず、すでに利用可能なすべての活気のある既存のツールに無知である平凡なものを作ることのポイントは何ですか?

駆け出しのゲーム開発者の手順は次のとおりです。

  1. 最新のフレームワーク/エンジンを習得し、それについて深く理解してください(これは、ゲームデザイン、グラフィックス、およびOpenGLのすべてが存在するわけではないことのさまざまな側面を学ぶのにも役立ちます)。
  2. それで小さなゲームを作り、その過程でもっと学びましょう。
  3. エンジンの障害や制限に有機的に遭遇します。
  4. このテーマの詳細をご覧ください。
  5. 改善が必要だと思われる領域を改善するように努めてください。

すでに作られたものを作るために独力で作業することは、誰にとってもあなたにとって価値のある開発者にはなりません。それらを読んで理解してください。古いポケモンの言うように、「あまり効果的ではない...」。

最悪の部分は、この種のアプローチは満足することができず、人間にとって限られたリソースであることが科学的に証明されている生意志力で実行しているため、追いつくのが簡単ではないということです。あなたは毎日の満足を提供する何かをする必要があります、さもなければあなたはおそらくそれを維持することができないでしょう。

要約すると、エンジンで物事を成し遂げることができ、その方法で成功する可能性がはるかに高いため、エンジンが強調されます。優れたゲームクリエイターでさえ、他の誰かの以前の作品に依存しており、それが進歩の本質です。独自のカスタムレゴピースを作成する前に、全体像を理解し、他の人が提供するレゴピースを使用する方法を知る必要があります。


4

あなたの目標がゲームを作成することであると仮定すると、カスタムエンジンが必要であることについて話した人は間違っていました。どちらかといえば、複雑なゲームには、業界に長い間携わってきた専門家によって設計、実装、最適化、テスト、および保守された成熟したエンジンが必要です。 、それが可能であれば。

大規模なゲーム開発者は社内でエンジンを構築しますが、将来のゲームのためにエンジンを大いに再利用しています。ただし、予算やチームの規模、その他の多くの要因は、独立した開発者とは大きく異なることに留意してください-既存の技術が技術的に不足していなくても、独自のエンジンを構築する方がはるかにビジネス上理にかなっている場合があります。

もちろん、多くの機能が既存のエンジンにはすぐに使用できるわけではないため、そのエンジンにはまったく実装できないという誤解がまだありますが、通常は不正確です。

PortalやAntichamberなど、最も革新的な最新ゲームのいくつかは、既存のエンジンを使用して構築されたことに留意してください。AionやTERAなどのかなり複雑なオンラインゲームは、既存のエンジンを使用して構築されました。Bioshock InfiniteやThiefなど、最も視覚的に美しいゲームのいくつかは、既存のエンジンを使用して構築されました。そして、もちろん、そうではなかった人もいました。しかし、ポイントは、カスタムエンジンを実際に必要とするものは、これまで見たことがないことです

一方、グラフィックプログラミングの概念を学ぶことが目標であれば、もちろんOpenGLが最適です。しかし、それでも、いくつかの既存のエンジンに精通していると、何をしていて何を目指しているのかを理解するのに非常に役立ちます。


1
-1。ゲーム業界に関するかなり大きな主張。それらのほとんどは不正確です。私は約ダースにあなたのポストを振りかけることがしたいcitation needed
パンダパジャマ

1
@PandaPajama私の答えには、ゲーム業界に関する主張が1つしかありません。気になる場合は、修正するか、完全に削除することもできます。
TC

私の(限られた)経験から、一般化できないものがあればゲーム業界であることがわかりました。各企業は物事を見る方法が異なり、企業内の異なるチームでさえ、すべてについて大きく異なるポリシーを持つ場合があります。この特定の場合、社内のエンジンはコストを発生させ、いくつかの長所と短所をもたらします。最終的な結果が節約か費用かは計算が非常に難しく、プロジェクトによって異なります。さらに、ゲームを作成する際に考慮される要素は予算ですが、重要ではありません。
パンダパジャマ14

@PandaPajama付与、私の編集を参照してください。私は単に、一般的に彼らにとってよりビジネスに意味があると言いました。それは、予算の要因など、意思決定に役立つものを含め、既存のエンジンの技術的な制限ではないかもしれないことを指摘しています。
TC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.