Diablo 2の3Dモード

これは、Simon Schreibtの2014年2月25日のブログ投稿からのDo n't Starve、Diablo-Parallax 7投稿の翻訳です。

注意、重いgif。



90年代に、ゲームは2Dから3Dに移行し始めました。 その後、UFOが地球を訪れた場合、エイリアンは、フィルタリングなしで当時使用されていた低ポリゴンモデルは誰も必要とせず、地球を破壊したと判断したでしょう。



時間の経過とともに、彼らはもちろん、人々を特別なものにしたことを学びます。2D時代であっても、3Dでレンダリングしたいという信じられないほどの欲求がありました。 それはすべて、視差効果の実装から始まりました(「距離」に応じて、一部の要素は他の要素よりも速く移動しました)。 この視差効果は、1982年に人々の脳を吹き飛ばしました。





ゲーム: ムーンパトロールソース: YouTube



実際、異なる方法で移動する複数の飛行機がこのような印象的な効果を生み出すことは興味深いです。 しかし、少し平らに見えますよね? 地球の表面の上の有望なカメラはより良く見えたでしょうが、これは「本物の」3Dを使用せずに行うことはできませんか? タイムマシンを使用してSNES時代に移行します。





ゲーム: ムーンパトロールソース: YouTube



3Dのように見えますが、3Dではありません! これは、「 モード7 」と呼ばれるSNESテクノロジーです。 それを視覚化するために、任天堂は何らかのプログラミングマジックを使用してテクスチャを操作しました(深さを優先して高さを減らす)。 使い方を知っている人の言葉は次のとおりです(彼はGameboy Advanceについて話していますが、私の知る限り、このレシピはSNESにも適しています)。

「GBAには3Dをレンダリングするハードウェア機能はありませんが、各ラインのREG_BGxX-REG_BGxPDのスケールとトランジションをインテリジェントに制御すれば、3Dを偽造できます」


ところで、今日でも、Mode 7に夢中になってRPG Makerを使用したプロジェクトに使用する人がいます 。 印象的!

今日、各リソースを「実際の」3Dでレンダリングしてボリュームを与えることができますが、これが単に必要ではない例があります。 実際、古い学校を使用した方がよい場合もあります。





ソース: 飢えないで



飢えないで、すべての茂み、木、敵は平らです。 かっこいいと思う!

私にとって、Diablo 2(2D ARPG 2000)は、Moon Patrolの視差効果と、Mode 7のアプローチに似たものを組み合わせた最初のゲームでした。

標準設定のゲームを見てみましょう。 純粋な2D。 見込みなし。 視差なし:





ソース: Diablo 2



しかし、ゲームには「パースペクティブモード」がありました。 オンにしましょう! 杭は異なる時間に地面の異なるピクセルをカバーすることに注意してください。







飢えないように見えますが、覚えておいてください:Diablo 2は2Dゲームです! このモードに関する公式情報はありませんでした。 Tom AmigoPaul Simariの優れたツール/ドキュメントのおかげで、今読んでいるすべてのことが知られるようになりました 。 すべての質問に答え、多くの方法で私を支えてくれたポールに感謝します。



Blizzardプログラマーはスプライトを何らかの方法で動かしたように見えるかもしれませんが、ゲームをオン/オフのパースペクティブモードと比較し、同時に動かない場合、彼らが実際にすべてを地平線に対してシフトしたことが顕著になります。







地球のテクスチャを美しいチェスのテクスチャに置き換えると、さらに良く見えるようになります。







つまり、シーンのすべてのリソースを何らかの方法で変換し、スプライトの境界に隙間なく有望に見えるようにする必要がありました。 特にシーン内のスプライトの数を考慮すると(ギャップが生じる可能性は非常に大きかった...):









同時に、ゲームのコードはあまりにも混乱してはいけません! したがって、ブリザードはスプライトを32x32pxのピースに分割したことに注意してください。 画像の必要な部分のみをダウンロードします-最適化のように見えます。 さらに、変換を適用する必要がある場合に役立ちます。 ゲーム内でスプライトがどのように分割されるかをご覧ください。





出典: Paul SimaryによるD1形式



透明なテクスチャに32pxごとに線を引き、偽のグリッドを表示しました。 結果は私の期待を超えました! 縦線が示すように、スプライトには、地面の奥深くに「実際の」消失点があります(視点から予想できるもの)。







ただし、下端がそれほどアーチ形になっている理由はわかりません。 パースペクティブでは、これは必要ありません(以下は、カメラがその軸を中心に回転しない場合、水平線が直線のままであることを示す3ds Maxのシーンです)。







いずれにせよ、ブリザードのウィザードは、なぜそれをしたのかを知っています。 費用はかかりませんが、そのような変形は、スプライト(プレーヤー/カメラの位置)を見る「角度」に依存します。 下端がまっすぐになるのを見てください:







以下は、市松模様のテクスチャの歪みに興味がある人向けのスクリーンショットです。







これがすべて非常に興味深いと思う場合は、読み進めて考えてください。 ポール 、スプライトには何らかの方向性の価値があるかもしれないと書いています。 この値に応じて、スプライトはさまざまな方法で歪められます(はい...さらに難しい)! 次に例を示します。壁には方向があります(左端、上端、左下端など)。





出典: Paul SiramyによるDT1形式



私の意見では、これがどのように行われるかを示してみましょう。 次の図は、標準のISOビューを示しています。 以下は、スプライトを「有望」にするために行った手順です。 この効果を実現するには、それらを移動し、スケーリングし、二重に変形する必要がありました。







ご覧のとおり、私の心の変化は少し混乱しています。 ゲームでこれが実際にどのように行われるかを見てみましょう。







このスプライトの向きは、前述の例とは異なります。 見て、変形はまったく違う! 上側と下側の境界は曲がらず、代わりに左側の消失点を「見る」ように見えます。 繰り返しになりますが、3ds Maxでの表示例を見てみましょう。







どうやら、ゲームはスプライト間のギャップを避けるために歪みを誇張しており、フェンスの各スプライトは素晴らしいため、私には非常にうまくいくようです。 面の方向(上下)は、場所によって異なることに注意してください。







次の例は、スプライトの方向の値がどれほど重要かを示しています。 「これは左の壁ではなく、右の壁です」とゲームに言うと、クラックの時が来ます。







このモードは、D3Dを使用したフルスクリーンモードでのみアクティブにできます(Diablo 2はGlideモードとソフトウェアアクセラレーションモードもサポートしていました)。そのため、古いDirectXドキュメントの処理に失敗しました。



ですから、私たちの旅はここで終わります。2Dを私のように3Dに見せたいという渇望のこの例に感動していただければ幸いです。 公式情報の欠如とこの主題に関する公式声明の欠如(政府のウェブサイトを見て、「ディアブロ2の視点モード」のトピックには何もありません)は、避けられない結論に至りました。



これはすべてエイリアンの技術です!



使用したツール:



画像の歪みに関するこの素晴らしい記事を提供してくれたHans Wurstのおかげで、Diablo 2のように見えます(透視モードが有効になっている)。 おそらく、D2プログラマーがこの情報を使用したかもしれませんが、非常に馴染みがあるようです。



All Articles