プログラマーがゲームエンジンを開発するために知っておくべき具体的な数学、物理学、AI、および一般的な概念は何ですか?[閉まっている]


9

WebおよびDB中心のアプリケーションのプログラマーである私は、リスト、ツリー、グラフなどのデータ構造に関する知識を持っています。私は、これらのデータ構造アルゴリズムのほとんどをコーディングで使用します。すべてのコア機能が組み込まれたクライアント指向のフレームワークでほぼ完全に機能しました。C、PHP、Java、HTML、PL / SQL、MySQLを知っています。私は現在Pythonを学んでいます。

ゲーム開発から始めたい。初心者向けのゲーム開発への提案、ヒント、アプローチに関する他の質問を見てきました。私はこれらの点を理解しており、答えは明らかです。投稿してから数日後、記事「エンジンではなくゲームを書く」を読み、ゲームエンジンを作成する前にゲームを実装する必要があることに気付きました。それでも、質問があります。

私の目的は

  • データ構造アルゴリズム、数学、物理学の概念の使用など、コアレベルのプログラミングスキルを向上させます。
  • 優れたゲームエンジンを実装して、コアレベルのコーディングに身を任せます。
  • AI研究分野への道を開くため。

プログラマーがゲームエンジンを開発するために知っておくべき具体的な数学、物理学、AI、および一般的な概念は何ですか?

回答:


11

データ構造:これは確かに有効な質問です。ただし、一部のデータ構造はあらゆる種類のゲーム(すでに説明したもの、リスト、ツリーなど)に役立ちますが、非常に具体的なものもあります。たとえば、Octreesは3Dプログラミングでは非常に便利ですが、純粋な2D環境ではおそらく必要ありません。

アルゴリズム:同じ経験則が適用されます。たとえば、純粋な2D環境では、衝突検出の動作は3Dの場合と非常に異なります。

重要数学エリア: エンジンのDevのための最も重要なエリアに精通して線形代数や、より高度な代数トピックス(四元数)があります。非常に単純です。線形代数に慣れていれば(そして、単純な行列の乗算を超えているという意味であれば)、良い出発点になります。

次はist Geometryです。これは、とにかくEngine Devの線形代数に適切に接続されており、おそらくとにかく言及する必要はありません。

さらに、基本的な微積分をしっかりと理解していても害はありません。これは、物理エンジンまたはより高度なシェーディングトピックを扱うときに便利です。

その他の関心のあるトピックは、次のとおりです。

物理学:簡単なゲームを作るつもりなら、それは必須ではありません。害はありませんが、この場合は高校の物理学で問題はありません。

物理エンジンの作成、または既存のアーキテクチャーの実装を検討している場合は、必須です。しかし恐れることはありません。Game-Devsのために特別に書かれた物理学の本はたくさんあります。念頭に置いて、物理学でゲームのコーディングを始める前にこれらを読んでください。ゲームに物理演算が必要な場合、これらのエンジンはコアアーキテクチャに深く結びついています。

AI:正直に言うと、AIが主な関心事である場合、エンジン全体を作成することはありません。既存のアーキテクチャで遊ぶと、AIはもっと楽しくなります。エンジンを書くのは面倒ですし、楽しいAIアルゴリズムを実装できるようになるまでにはかなりの時間がかかります。

どのタイプのゲームを開発したいですか?多分私はこの情報でこれらのポイントについてさらに詳しく説明することができます。


精巧な答えをありがとう。あなたの質問への答えとして..現時点では、頭の中に何のアイデアもありませんが、3Dゲームエンジンを開発したいと考えています。しかし、いくつかの2Dゲームから始めて、環境について理解することをお勧めします。これらすべての前に、ゲームの外観を確認するためにいくつかのゲームをプレイする必要があります(ビデオゲームをプレイしたことがないので、:-))。本の用語やその他のことを理解しやすいように。私は以下が非常に役に立ったと思いました
droidsites '18 / 09/18

申し訳ありませんが、私の以前のコメントにリンクを逃した:gamedev.stackexchange.com/questions/8502/...は
droidsites

以前は、3Dゲームを開発する場合は、最初に2Dゲームから始めることをお勧めしていました。しかし、XNAのようなアーキテクチャーの出現により、3Dに直接飛び込む方が楽しいと思います。すでにC#/ XNAを確認しましたか?あなたのプログラミングの背景を考えると問題ではないはずです
マイケル・キスナー

いいえ、チェックしていません。はい、C#に移行しても問題ありません。しかし、私はpythonのようなものに非常に興味があります:-)
droidsites '18

Pythonに興味があり、ゲームを構築するためのテクノロジーを構築するよりもゲームを構築することに興味がある場合は、Panda3DまたはBlender Game Engineをチェックしてみてください。
Sean Middleditch、2011

1

ゲーム開発で最も使用されているデータ構造を確認することは有効ですが、特定の問題に使用されているデータ構造を確認する方がはるかに有効です。ハッシュテーブルはゲームで非常に一般的であると簡単に言うことができますが、それはあなた自身のコードでハッシュテーブルをいつ、どこで使用するか(そして使用しないか!)に関して有用なことを何も教えてくれません。:)

数学に関しては、線形代数(ベクトル、行列、線形システムの解法など)の非常に強力な把握、三角法の非常に強力な把握、および少なくとも微積分(単純な導関数と積分)の基本的な理解が必要です。 。入門的な大学レベルの線形代数コースでは、一般的な3Dグラフィックの原則を使用して作業を開始するために知っておく必要があるすべてについて教えていない場合でも、正しい道に進む必要があります。また、あなたが非常に役立つと思われる本を下にリンクします。

物理学については、あなたは乗り物に乗っています。物理学は、衝突検出と衝突応答という2つの異なるカテゴリに分類できます。あなたは衝突検出の背後にある数学を絶対に知っておく必要があります。その数学はグラフィックスを実行するために必要なものとほぼ同じであり(特に、オクルージョンに必要なツリーとマップを構築するため)、そのものを使用してゲームのロジックもたくさん。

衝突応答は、「単純な」ものからとんでもないレベルの複雑さまでさまざまであり、単純なものでさえ、最初は直感的でない場合があります。既存の数学とアルゴリズムに慣れるまでは、Bullet、Havok、PhysXなどの既存のライブラリ(または2Dゲームプレイに取り組んでいる場合はBox2D)にそれらを残すことを強くお勧めします知識があり、物理エンジンがどのように機能するかを学びたいと決定します。最初の試みとして、非常にシンプルな2D物理エンジンを構築することをお勧めします。3D物理エンジンはめちゃくちゃ複雑な獣であり、(間違いなく)ゲームプログラミングの中で最も複雑で難しい部分です。そのため、物理エンジンは、ゲームで使用される最も一般的にライセンスされているサードパーティのテクノロジーです。あなただけではない多くのゲームを見ていません tプロの世界でHavokまたはPhysXを使用している。ゲームエンジンを構築するだけの会社でも、通常は物理エンジンにライセンスを付与します。たとえば、Unrealは独自の物理エンジンを含めるのではなく、単にPhysXを使用します。

以下の本をお勧めします。1つ目は、3Dゲームプログラマとして知っておく必要がある基本的な数学に関する入門レベルの本です。

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

2つ目は、衝突検出アルゴリズム(衝突応答ではありません!)に対して検出された本で、グラフィックコーディングと物理コーディングの両方に役立ちます。

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

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