EliteやStar Wars Atariなどのベクターゲームが根本からどのように構築されたかについて詳しく知りたいです。問題は、OpenGLやDirectXのような最新の3D APIを使用してベクターグラフィックスを実装する方法ではありません。これを行うのは非常に簡単であり、ゲームのようにゼロからベクター/マトリックスシステムを構築する必要がないためです。
これらのゲームについて私が推測するいくつかのこと:
- 彼らは非常に低レベルで動作し、ASMで書かれています
- 彼らは実際の3Dゲームであり、After Burnerのようにそれを偽っていません。Wolfenstein 3Dとは異なります。アフターバーナーはrotozoom /ラスターエフェクトを使用し、Wolfenstein 3Dはレイキャスティングと2Dスケーリングを使用しました。上に移動できないため、実際には3Dではありません。Duke Nukem 3Dが使用したビルドエンジンが気に入っても、壁以外はすべてスプライトです。Star Foxは実際の3Dモデルを使用しているので、それに近いですが、実装はSNESのSuper-FXチップを使用しており、おそらくスキャンライントリックを採用しています。Eliteはおそらく(少なくともElite NESのような一部の実装では)上記のスキャンライントリックを使用していることを知っていますが、カスタムビルドのアーケードマシンを使用していたため、SWAについてはわかりません。どちらにせよ、私はそれについてもっと知りたいです。
- それらの3Dモデルは実際の3Dモデルです。それらはベクトルとして定義され、カメラの位置に従って変換されます。
エリートのソースを分解して自分でどのように行われたかを確認することをお勧めしますが、その前に、それらがどのように作成されたか、および同様の手法を示す最新のオープンソースプロジェクトがあるかどうかを知りたいと思います。 。Oolite(OpenGLとObj-Cを使用)のようなEliteのリメイクを意味するのではなく、OpenGLのようなAPIを直接使用することを避け、OpenGLのようなAPIを直接使用しないプロジェクト-必ずしも低レベルのプロジェクトではなく、SDL(OGLなし)のような2Dライブラリを使用する少なくとも今のところは十分です。
MESA3Dのソースコードには、EliteやSWAなどのゲームが実装したルーチンの多くが含まれていることを知っています。ゲームのコンテキストでそれらを確認したいだけです。EliteとSWAが基本的に行ったのは、ラスタライズを実装し、モデルとローダーのフォーマットを作成したことです(少なくともSWAには、ツールを使用してモデラーから構築されたモデルがあると確信していますが、TIEファイターをハードコーディングすることは不可能ではありません)正確に行うのは難しいことです)、そして他の多くのことに気付かないかもしれません。しかし、それに入るのは本当に時間がかかり、そこにあるものの多くは気にしません。Eliteのようなゲームは、コンピューターとコンソールが当時持っていたROMとRAMが低いため、非常に軽量であったことを覚えておいてください。
私は3Dグラフィックスに不慣れです。すべての私の仮定は、3Dジオメトリと学校レベルの数学についての私の限られた知識に基づいています。しかし、私はこれらのゲームがどのように機能するかについて、詳細について知りたいと思っています。存在すれば、エリートや同様のゲームの開発についての本を購入します。いくつかの一般的な提案で十分です。