K3の住民

最近はレア社のゲームについては書いていませんが、一応レア社のゲームが一番好きな人です。『雪圀』で"圀"は"国"とほぼ同義ですが、国ではありませんって当たり前か(笑)。

【マリオ64DS】最大水位の保存によるバグ

皆さんこんにちは、雪圀です。

今回は、マリオ64DSのたかいたかいマウンテンで見られるバグについて、「何故か
成功しない」と原理が理解出来ない人が多く、解明もされていなかったので適当に
解説していきます。


先ず、僕が指している該当のバグはこの動画のバグになります(無音です)。

どうしてこうなるのか?と悩みに悩んだ研究者たちが続出していた(これは流石に
ネタです)このバグですが、原理が簡単に解明出来てしまいました。

このバグの原理には、プレイヤーのy軸が大きく関わってきます。

プレイヤーのy軸は、敵や床、水上を判定する為にあり、このy軸に引っかかることで
そのプレイヤーの下にある敵の踏み判定、床の音等が変わるようになっています。
そして、プレイヤーのy軸にはもう一つ役割があることが分かりました。それは、最大
水位の保存です。

最大水位とは?

文字通り、水位の最大値のことです。「最大水位の保存?必要あるのか?」と
思われるかもしれません。しかし、マリオ64DSの水の仕様を考えてみれば最大水位
の保存が何故必要なのかが分かると思います。

マリオ64DSの水の仕様は、リメイク元であるマリオ64とその派生システムが採用
されているN64ゼルダ系統とは大幅に異なります。
ある範囲(水中範囲と呼ぶことにする)に入れば水泳出来る、という仕様は変わり
ませんが、それとは別にある仕様が変更されています。
その仕様とは、水泳可能であるか、そうでないかの仕様です。マリオ64N64ゼルダ
系統では水中範囲を抜ければ、水中から出てしまい、落ちてしまいますがマリオ64DS
では水中範囲を抜けても、水中から出ること無くそのまま水泳することが出来ます。
つまり、マリオ64DSでは水中範囲関係無くどこでも泳ぐことが可能となっており、
水上からジャンプさえしなければ落ちる心配も無いという、親切設計となっている
のです。

しかし、この仕様だとある問題が発生します。それは水位です。
例えば、低水位lw,高水位hwの2つの水位があったとしましょう。

f:id:ryoryoau24:20170915232238p:plain

最大水位はhwの水位であったとしましょう。hwの水中を泳いでみると、普通に泳ぐ
ことが出来ます。
そこで、lwの水中を泳いでみましょう。すると、最大水位はhwの水位である為、空中
を泳ぐことも出来てしまうのです。

f:id:ryoryoau24:20170915232323p:plain

そこで、マリオ64DS開発スタッフは、プレイヤーのy軸が水上を通過するごとに最大
水位の保存を行おう、と考えたのでしょう。

最大水位の保存による悲劇

しかし、その最大水位の保存には、大きな穴がありました。リメイク元である
マリオ64では水泳は水中範囲でのみ行える仕様であった為、ワープをするときに最大
水位による対策の必要がありませんでした。しかし、マリオ64DSでは水中範囲を
出なくとも水泳出来てしまい、更に陸→水中へのワープも存在するので、最大水位に
よる対策が必要であったのです。

しかし、それを忘れてしまったのか、それとも必要無いと考えたのか、マリオ64DS
ではワープ時に最大水位による対策がありません。
ただ単に、「ワープ後プレイヤーの座標が最大水位以下であれば、泳ぐ態勢になる」
としか処理させなかったようです。

それが原因で、たかいたかいマウンテンでの空中水泳バグが出来てしまうのです。

結論

たかいたかいマウンテンの空中水泳バグは、「プレイヤーのy軸に水を通過させて
最大水位の保存を行い、その最大水位以下のワープゾーンを使ってワープすること
で起こるバグ」

ということが分かったと思います。
そして、「フクロウは必須では無い」ということも分かったと思います。



以上です。これで成功率が100%になるので本当かどうか検証してみてはいかが
でしょうか。

今回はこれくらいにしときます。