Quake 3エンジンの研究に役立つリソース[終了]


14

コード自体を超えてQuake 3エンジンのコードの学習を開始するための優れたリソース(マニュアル、チュートリアルなど)はありますか?

私はそれが教育目的のためにどのように構成されているか、そしておそらくいくつかの修正を行うことに非常に興味があります。

回答:


13

そのため、Wikipediaのid Tech 3に関する記事を参照することから始めてください。これは、ブライアンフックのGDCトークサマリーElement 61ブログの古い記事で補強できます。それに加えて、何が起こっているのかを試して再構築するために見つけることができる古いmodチュートリアルの束を探し回る必要があります。

何が起こっているのかを実際に確認するために、ioquake3やwhat-have-youではなくidから元のソースリリースから始めることをお勧めします構造が使用されるなど)。

私がそれを使っていたときに助けてくれたいくつかの重要なポイント:

  • 常にサーバーがあります。フレームを処理する上にクライアントロジックが存在する場合もあります。
  • 入力は、最初にコンソール(必要な場合)、次にGUI、次にゲーム本体に送られます。
  • エンジン自体は、トラップ関数を使用して、ゲームロジックから分離されています(ハード!)。(メモリが提供する場合)cgameを調べてプロジェクトをレンダリングし、実際のエンジンコードを見つけます。
  • ゲームロジックを完全に記述して、Quake 3仮想マシンで実行できます。ネイティブdllを改造して使用する場合quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0、エンジンがVMコードの代わりにネイティブコードを実行できるようにするために、ゲームを実行する必要があります。
  • メニューシステムのUIは、構造体とコールバックの奇妙で邪悪なねじれたスタックです。一度パズルを解けば使用できますが、試行錯誤が必要になる場合があります。覚えておいてください、それはスタックです。
  • ネイティブ.dllでコードを記述している場合は、メモリを割り当てたり、C ++で記述したり、ボートに浮かんだものを自由に記述してください。STLを使用することもできます。エンジンと直接やり取りする場合を除き、Cのイディオムを厳守する理由はありません。

同僚と一緒に作った素敵なもの:

  • コンソールからシェルコマンドを呼び出し、stdout / stderrストリームをコンソール(Quakeコンソール)にダンプするシンプルなコマンドラインインターフェイス。
  • レコードをプルおよび表示するためのSQLデータベースとのインターフェース。
  • クライアントのハッドに柔軟な表示を行うための柔軟なウィンドウとウィジェットツールキット(棒グラフ、テキストボックス、画像ボックス、コンテキストメニュー、サイズ変更可能なウィンドウなどを使用)。
  • 遅いロケット。:)

個人的には、このエンジンは、非常に賢いやり方で行われる本当に賢いこと、本当に賢いやり方で行われる本当に愚かなこと、そして本当に賢いやり方で行われる本当に賢いことの素晴らしい組み合わせであることがわかりました。これは、中規模のCプロジェクトでモジュール性と優れた構造化設計を行う方法の優れた例です。

最後に、少し時間がかかっても気にしないでください。エンジンで探しているものがどこにあるかを本当に知ることができるようになるには、おそらく1か月かかりました。他のすべてが失敗した場合は、アプリケーションのinitで開始し、関数にトンネルして、コメントを標識として残します。私のモニターは、関数名、行番号、およびそれらの機能の簡単な説明が付いたピンク色のポストイットノートで覆われました。


3

Quake III Arenaの「Focus On Mod Programming」という本は、クライアントとサーバーのロジックの分離方法、クライアントの予測、クライアント側のグラフィック効果などを理解するのに役立ちます。


1

絶対に。

http://en.wikipedia.org/wiki/Quake_engineは、そこにあるものの良い概要ですが、引用を介して非常に迅速にそのアーキテクチャの詳細を知ることができます。

また、ゲームエンジンアーキテクチャに関する書籍をいくつかお勧めします。Quake固有ではありませんが、エンジン設計の詳細に入り、Quakeエンジンの多くの側面と並行して実行されます。

  • 3Dゲームエンジンアーキテクチャ -978-0122290640
  • 3Dゲームエンジンプログラミング -978-1592003518

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