SFCの「ファイナルファイト」と「スーパーマリオカート」はどうやって3Dを表現しているのか?

てかよく考えられているように、「SFCは3Dが出来ない」わけじゃない。むしろ、「SFCは3D描画機能が弱い」だけであって(特にポリゴンの取り扱いができない)、「3Dのゲームが作れないわけじゃない」んだよね。例えばね、「ファイナルファイト」っていうベルスクの傑作があるんだけど、これはこういう風にゲーム内でZ軸を定義している。XとYがある中で…

screenX=X

screenY=Y-Z

と平面定義しているのだ。?ぶっちゃけこれだけに見ても分からんよなwww?大丈夫だ!それはあたしも同じだから…。ま、ここのscreenX=Xはよほど数理のセンスがない限り理解出来るよね?平面上で平なほうがX軸として取り扱ってて、これは”不動の変数”なわけだよね。例えば、変数Xが変動すればscreenXも変動して描画する部分に当てはめられる。問題はscreenY=Y-Zだ。

例えば、ハガーがジャンプしたとする。この時、ハガーの変数Z(高さ)は増大するよね?その分、Yはロックされてるわけだな。同じ時、描画する部分のscreenYは減る。画面座標:上端が0&下に行くほど数値が大きいとするね。この時ハガーはどうなっているのか?ここから理解するのが一番早い。例を2つ挙げよう。

例:Y=180かつZ=40とする。screenY=180-40=140となる。つまりその分だけスプライト描画が高くなっているのはわかるな?この時のYは変動しているのか?っていうとロックされているわけだ。つまり、ハガーはXYZどの軸も持っている。その時に描画するscreenYはYとは独立して描画される領域を示している。

例2:Y=30かつZ=50とする。screenY=30-50=-20となる。あれ?これって問題じゃね?って思ったろ?問題じゃねえんだよ、これが。あくまでスプライトの描画軸がscreenYだから、上端の限界点がscreenY=0になっているからだ。マイナスになってもそれは上端を超えているだけであって、そこは画面上で描画しなけりゃいいわけだ。てかそういう風に-(マイナス)の値になっている。

よーするに大事なのは、例え、高さZが変化しても平面(Xや)Yとは独立している変数だからYには影響しない…ということなのだ。Yはゲーム世界での位置を表す一方、screenYは画面のどこにスプライトを描くか?ということを表すのだ。だからこそ、2つの方程式が成り立っているわけだね。工夫すれば3D描画(正しくは2.5D描画)もSFCはできるのだ。

思ったな?「スーパーマリオカート」はどうしてるんだ?って。ここまで来ればこちらの理解も十分可能。