2009-08-24 3 views
10

私は大部分のC#開発者です。大学に戻って私はC/C++のクラスを持っていましたので、私は「Cを知っています」ということは、私がC#開発者である理由の良い塊です。3Dゲームエンジンのコード(id Tech 3など)を理解しようとすると、どうやって始めましょうか?

私はC/C++で専門的にコードを書く機会は一度もありませんでした。私は、工業用グレードのC/C++アプリの動作と並んで、最新のゲームエンジンの仕組みを勉強したいと思います。

問題はどこから始めるのかわかりません。でのように、私はsource code(これは、id Tech 3の略語である)Quake 3エンジンをダウンロードしたところで、どこから始めるべきかわからない。

保護されたC#/ WinFormsは、id Tech 3や他の大規模なAAAエンジンのような大規模なCコードベースをどのように攻撃すべきですか?

+2

FYI:クリーンなコードに興味があるなら、Quake 3のソースは「ひどい」btwです。私はそれが非常に効率的であることを意味します。しかし、実際には、その恐ろしい、ほとんどの生産のゲームコードです。それは私がちょうど飛び込んで "何か"をすると言った - 私は個人的にそれを見てコードを理解することはできません。 – Justicle

+0

ええ私はクリーンなコードに興味がなく、モダンな3Dゲームエンジンの仕組みにもっと興味があります。彼らがQuake 3のやり方を古くなったとしても、それは始まりです –

答えて

12

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

大きなコードベースでは、を試してみることをお勧めします。すべてを一度に学習してください。あなた自身に答える(またはインターネット上で検索できる)非常に具体的な質問、またはあなたが達成する必要がある非常に具体的な質問でちょうど潜んでください。このアプローチは、実際にプログラミングを行うために必要な目的と動機を与えます。学習はそれだけで起こります。

+0

+1まったく新しいコーディングジョブの最初の日のように、最高のことはジャンプしてバグを修正することです。知っておく必要があります。 – Justicle

4

modを書くことは良い出発点です。

グラフ化された領域で開始:バニラゲーム。ものを変えなさい。手榴弾のバウンスコードを見てください。それをさらに跳ね返させる。クライアント側の予測を追加します(非弾力性の発射体はすでに存在しています)。

テレポートの武器を追加します。それはあなたが知りたいと思っているよりも衝突の検出について詳しく説明します。

ゲームのほとんどを処理するいくつかの重要な機能があります。エンジンのエクスポート、trap_ *呼び出しです。エンジンコードを開いてその実装を見る前に、モッズが何をしているのかを知ることは大いに役立ちます。

たとえば、エンティティが移動するたびにLinkEntityを呼び出す必要があることをエンジンが詳しく知っているか、ゲームBSPツリー内の位置が更新されず、後続のエンジン呼び出しで無視される場合がありますツリーがどのように格納されアクセスされているかを正確に把握します。これは冗談のように聞こえる

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

1

ちょうどあなたが他の3Dゲームエンジンを探していると、おそらくお互いにそれらを比較することができます場合には、DIM3参照main()を見つけます関数。それはプログラムの実行の明確な出発点です。そこからすべてを追うことができるはずです。

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

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

3

、しかし:

+0

これは、Windows C++プログラムでの私の経験の欠如に結びついています。私はWinMain関数を見つけましたが、それが何をするのかは不明です。私はそれが踏み出し始める時だと思う... –

1

Andre LaMotheは私にゲームプログラミングについて知っていることを教えてくれました。一度この2冊の本を読めば、3dエンジンについて知っておくべきことをすべて知っているはずです。

  1. Tricks of the Windows Game Programming Gurus
  2. Tricks of the 3D Game Programming Gurus - Advanced 3D Graphics and Rasterization

そうでない場合は、ちょうど楽しみのためのあなた自身の小さなエンジンを書いてみてください、あなたは何が欠けている、あなたが得るどのくらい見て、あなたはすぐに理解することから始めましょうあなたが見ている他のコードの目的、

また、NeHe Gamedev Tutorialsを見てみるとよいでしょう。

0

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

私はC + +をホールドしておくことをお勧めします(ゲームをしたい場合は、ある時点で元に戻す必要があります)が、今はXNAをインストールします。すべての.NETと同じくらい素晴らしいフレームワークです。そこにはゲームXNAに関するチュートリアルがたくさんあります。

関連する問題