2011年12月16日金曜日

パネキット 高度4096pmの謎

筆者はたどり着いたことはありませんが、
パネキットでは高度2048pm辺りが最高高度らしい。
しかし、その後も頑張り次第で上にいけるらしい。
http://www.inh.co.jp/~denden/term/term-ka/HDLB.html

行ったら行ったで様々な現象が発生するらしいのですが、
現役プログラマの筆者としては、この現象を説明するのは容易です。

まず2048は何なのか? 11ビットで表せる数値ですね。
仮に、内部で高度を16ビットで表していたとすれば、
残りの5ビットでpm少数点以下を保持していたのだろうと推測できます。

ただし現実的には2048を越えて即オーバーフローしてもらっちゃ困るので、
内部的には大体、倍まで、4096pmまでの余裕は持たせるでしょう。

仮想空間ゲームとはいえ、オープンワールドが売りの本作で
いきなり見えない天井はナイでしょう。
2000を越えると、そもそも上昇が困難になるような調性をするのが普通でしょう。
空気抵抗を減らす成りして、揚力を発生しにくくすれば話はあいます。

ただし、前述のページで紹介しているモデルは、
ジョイトが一瞬で捻る角速度を利用しての揚力なので、
開発者の予想を越えた揚力を発生しちゃってるのだと思われます。

4096pmを越えた辺りで現れるとという「見えない地形」は、
恐らくは地面の地形そのものだと思われます。
地形の衝突計算ではオーバーフローしちゃってるのでしょう。

実際に、この計算は、コプロセッサGTEとやらがやってるのだと思います。
固定小数点演算だって話なんで。
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AC%E3%82%A4%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3#.E6.80.A7.E8.83.BD.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.AA.E3.81.A9

ただし、地形のポリゴンの座標はあくまで元の位置(遥かに下方)なので、
4096pmに描画することはない。というわけです。

あくまで当時のハードウエアを最大限活かしてのバグ(?)であると思われます。
PS3/Vitaなりでリメイクすれば、この謎の地形は、
とても届かない程の上空になることでしょう。

だと思う。


いよいよ明日はVitaの発売。買えるかどうかは判りませんが、
今まで筆者のwktkを紛らわせてくれたパネキットに敬意を評します。