3

SDL lib を使用して fps ゲームを作成する方法を教えてください。

例を挙げて説明している本はありますか?

4

5 に答える 5

21

これは、ほとんどのオープンエンドの質問に勝ちます。あなたは文字通り本を書くことができます。しかし、正しい方向を指すことに落ち着きましょう...

ステップ 1、このようなプロジェクトには優れたデバッグ スキルが必要です。Steve McConnell による Code Complete を取り上げます。全体を読んでください。投資した時間は、あなたが読んだり実験したりする他の何よりも元が取れます。

いくつかのゲームのソース コードを手に入れます。どんなゲームでも。大きくて複雑なものを見る前に、単純なものを見るようにしてください。また、ゲームコードを見るときは、チームが組み合わされて、これまで以上に多くの時間を費やした可能性があることを覚えておいてください. ここでのポイントは、コード構造を確認することです。

3D 数学の参考資料を入手してください。それほど深くする必要はありませんが、前後の内積のようなものを知っている必要があり、世界でカメラの行列を作成する方法を理解できるようにする必要があります (レンダリング コードの 0% を記述したとしても)

(編集)これは 3D 数学の優れた本です。Mathematics for 3D Game Programming and Computer Graphics、Second Edition (ゲーム開発シリーズ)これは大学で学ぶようなものではありません。三角関数とより高度な実用的な概念を組み合わせたようなものです。簡単な物理学、効率的な衝突検出などのツールボックスを作成する方法。

レンダリングとパイプラインについて知っておく必要があります。SDL はあなたを助けてくれますが、SDL が何をしているのかの概念を理解していることを確認してください。

実際のシステム設計について読んでください。さまざまなシステムが連動する必要があります。よく考えてください。あなたのシステムは、C または C++ で優れたものになる可能性があります。重要なのは、データ/コントロールがどのように流れるかについて考えることであり、設計パターンをどれだけ完全にエミュレートするかではありません (ただし、これらは非常に有用であり、粗いものでもあります)。

「本物の」AI ではなく、機能的な AI の基礎。大きな違いがあります。ステート マシンは最初から最適であり、単純な FPS には十分です。

見積もりと計画について少し学びます。適切に FPS を作成するために必要なすべてのことを行う時間はありません。トリアージとトリアージの方法の両方を学ぶ必要があります。それらは 2 つの別個のものであり、後者は非常に困難です。経験はここの粗の最高の教師です。(伝説のマコーネルもこれに関する本を持っていますが)

ゲームプレイをレベルに挿入するシステムを用意します。プログラマーとしてのあなただけの場合、3DS Max などの既存の編集プログラム用のプラグインを作成することをお勧めします。プログラマーには、Maya よりも Max を強くお勧めします。Maya スクリプトは優れていますが、賢い非プログラマ向けです。3DS Max は、プログラマーが世界を作成および編集する方法に沿ってより多くのことを考えていると思います。

これを正しく行うためのツールを作成するのに何年も費やすことができるので、高速かつ正確に編集できるような方法で物事を行いたいと考えています。独自のエディターを作成する場合は、それをゲームの世界に組み込みます。あなたの世界が真の 3D ではなく、多くのレベルを高速に作成したい場合は、レベル データを次のように保存できます。これにより、多くの時間を節約できます X は壁で、他の文字はゲーム オブジェクトであり、汚れシンプルなパーサーは、ゲーム オブジェクトとワールド座標に変換できます

 xxxxxxxxxxxxxxxxxxxxxxxx
 xx..........P..........x
 xxxxxxx...........I....x
 xR....xxx...........E..x
 xx.................0xxxx
 xxxxxxxxxxxxxxxxxxxxxxxx

しかし、それはすべてあなたのゲーム次第です。私が言いたいのは、「ゲットー コーディング」に頼る必要があるということです。ゲームプレイ データを自分の世界に取り込む方法は非常に重要であり、実装するのが速く、作業するのも速いものを考える必要があります。

結局のところ、ここでのあなたの目標は何ですか?何かを完全に正しい方法でコーディングすることを学ぶ場合は、1 か月前には適切に見えたコードの繰り返しにほとんどの時間を費やすことを期待してください。書き直すことを恐れないでください。そうすることで多くのことを学びますが、目標が機能性である場合は、おそらくいくつかのことをハックする場所を見つける必要があります (ゲームプレイ データや座標をコード ファイルに埋め込むなど) ハッキングした場所を知っている限りハッキングし、それを適切なコードから慎重に分離して、機会があれば戻って適切にコードを記述できるようにします。

肝心なのは、これでの目標が学習であるか機能であるかを決定し、その間の幸せな媒体を見つける必要があるということです。

于 2008-11-13T21:23:47.783 に答える
5

fileshackで quake 3 のソースをダウンロードして、そこから学びましょう。

于 2008-11-13T20:55:11.100 に答える
3

非常に長い投稿は長期的には価値がありますが、画面に表示するための適切な即時の動機付けにはならないと感じています。ここにいくつかの事実と私の意見があります

-SDL は 2D グラフィック ライブラリです。2D で FPS を作成することはできません。したがって、DirectX または openGL のいずれかの 3D ライブラリを使用する必要があります。

-SDL には openGL と「同期」する機能があり、それをグラフィックに使用しますが、そのトピックに関するオンラインのヘルプはあまりありません。

Lazyfoo.net にアクセスすることをお勧めします。これは、SDL を使用したゲーム プログラミングの初心者向けリソースであり、画面に描画する方法だけでなく、これをゲームのプログラミングに適用する方法も教えてくれます。これを経ると、テトリスのクローンや、他のほとんどの 2D タイプのゲームを作成できるようになります。

この後、3D の準備が整います (3D はより複雑で、数学をよりよく理解する必要があり、より単純なことを行うにはより多くのコードが必要です)。openGL を使用する場合は、NeHe のチュートリアルを確認してください。 openGL で SDL を使用して、新しいセットに取り組んでいます。これは、古いチュートリアルは価値がありますが、コーディングがかなり悪く、windows(win32) API を使用しているためです。

ゲーム開発は、あなたが遭遇する最も要求の厳しい、やりがいのあるプログラミングの 1 つであることを覚えておいてください。

于 2008-11-18T01:16:13.163 に答える
1

SDL 固有ではありませんが、NeHe OpenGL チュートリアルは、3D の実行方法を学習するための出発点として最適です。

これが初めてのゲームである場合は、おそらく FPS よりも低く設定することをお勧めします。SDL を使用して単純な 2D Tetris ゲームを作成すると、そのライブラリについて知る必要があるすべてのことを学ぶことができます。

于 2008-11-16T06:30:04.420 に答える
0

タイトルに「ゲーム プログラミングの達人によるトリック」と書かれているほとんどすべての内容が、FPS ゲームの作成方法を示しています。LeMothe は彼らが大好きです。

編集:それらのタイトルを忘れました。

于 2008-11-13T20:24:34.283 に答える