9

私はほとんどの部分で C# 開発者です。大学時代に C/C++ のクラスを持っていたので、「C を知っている」ことが、私が C# 開発者である理由のかなりの部分です。

しかし、専門的に C/C++ でコーディングする機会はありませんでした。最新のゲーム エンジンがどのように動作するか、および工業用グレードの C/C++ アプリがどのように動作するかを研究したいと考えています。

問題は、どこから始めればよいかわからないことです。のように、Quake 3 エンジンのソース コード(これはid Tech 3と呼ばれています) をダウンロードしましたが、どこから始めればよいかさえわかりません。

保護された C#/WinForms は、id Tech 3 やその他の大規模な AAA エンジンのような大規模な C コードベースをどのように攻撃する必要がありますか?

4

6 に答える 6

12

エンジンの最も基本的なサブセットを使用する最も単純な 3D "Hello World" プログラムを実行してみてください。それはおそらくあなたにたくさんのことを教えてくれるでしょう。

大規模なコード ベースでは、すべてを一度に学習しようとしないことが最善です。自分で答える必要がある (またはインターネットで検索できる) 非常に具体的な質問、または達成する必要がある非常に具体的なタスクに飛び込んでください。このアプローチにより、実際にプログラミングを行うために必要な目的と動機が得られます。学習はそれ自体で行われます。

于 2009-08-24T20:47:43.977 に答える
4

modを書くことは良い出発点になるでしょう。

チャートの領域から始めましょう:バニラゲーム。ものを変更します。手榴弾のバウンスコードを見てください。さらに跳ね返らせます。クライアント側の予測を追加します(弾力のない発射体にはすでにあります)。

テレポート武器を追加します。それはあなたが知りたいよりも衝突検出についてあなたにもっと教えてくれるでしょう。

ゲームの大部分を処理するいくつかの重要な関数があります。エンジンのエクスポート、trap_*呼び出し。エンジンコードを開いて実装を確認する前に、modがmodで何をしているのかを正確に知ることが非常に役立つ場合があります。

たとえば、エンティティが移動するたびにLinkEntityを呼び出す必要があること、またはエンティティが移動するたびにLinkEntityを呼び出す必要があること、またはゲームBSPツリー内の位置が更新されず、後続のエンジン呼び出しがそれを無視する可能性があることを知ることで、エンジンについて詳しく知ることができます。ツリーが保存され、アクセスされます。

于 2009-08-24T21:52:09.993 に答える
3

これは冗談のように聞こえますが、main()関数を見つけてください。これは、プログラムの実行の明確に定義された開始点であり、そこからすべてを追跡できるはずです。

初期化の順序は通常ボトムアップであるため、これは、どのサブシステムがどのサブシステムに依存しているかを把握するのに役立ちます。たとえば、一般的なエンジンは、メモリ、デバッグ、およびトレース サブシステムを早期に初期化します。これは、他のほとんどのシステムがこれらのサービスを起動して実行する必要があるためです。

また、ゲームのメイン ループに入る方法を理解し、ループが制御される前に何が必要かを理解できる必要があります。

于 2009-08-26T08:56:07.527 に答える
1

Andre LaMothe は、私がゲーム プログラミングについて知っていることのほとんどすべてを教えてくれました。この 2 冊の本を読めば、3D エンジンについて知っておく必要のあるすべてのことをほぼ理解できます。

  1. Windows ゲーム プログラミングの専門家の秘訣
  2. 3D ゲーム プログラミングの達人の秘訣 - 高度な 3D グラフィックスとラスタライズ

それ以外の場合は、楽しみのために独自の小さなエンジンを作成してみて、どこまで到達し、何が欠けているかを確認してください。そうすれば、見ている他のコードの目的をすぐに理解し始めるでしょう。

また、NeHe Gamedev Tutorialsも参照してください。

于 2009-08-27T21:10:23.620 に答える
1

他の 3D ゲーム エンジンを探していて、それらを相互に比較したい場合に備えて、dim3 を参照してください。

http://code.google.com/p/dim3/

于 2009-08-25T06:08:16.913 に答える
0

私は大きな完成品を読むことの大ファンではありませんでした。特にQuakeコードベース。あなたがそれから確かに学ぶことができる良いことはありますが、それはあなたの出発点であるべきではありません。最初に、ゲームプログラミングで使用されるいくつかの新しい概念を学ぶ必要があります。

C ++を少し保留にすることをお勧めします(ゲームを作成したい場合は、ある時点で本当にそれに戻る必要があります)が、今のところXNAをインストールします。これは、すべての.NETと同じくらい優れたフレームワークです。ゲームXNAに関するチュートリアルはたくさんあります。

于 2010-01-23T11:33:49.030 に答える