マリオサンシャインを研究するブログ

マリオサンシャインのRTA,TASについて考察する。オタク向け

チュウハナの性質

 120枚TASでチュウハナの制作が終わったので、その性質を備忘録のためにまとめる。

情報提供元はgoldfire氏。

 

乱数を消費する要素

 チュウハナは以下の3つの関数で乱数が使われている。

・鏡ごとに設定された多角形頂点にターゲットを設定する「willFall」

・ターゲットの100ユニット以内に入ると、チュウハナの向きを変更する「setGoal」

・チュウハナ同士が接触している時、idの低い方のチュウハナがターゲットの再設定などをする「isCollidMove」

 

性質

・チュウハナに水を当て怯ませると、その鏡にいる通常の歩き状態のチュウハナのターゲットが水を当てた時点でのマリオの位置に向く。硬直したチュウハナのターゲットもそこを向いているが、歩き出す際はターゲットの方ではなくマリオの現在位置に向かってくる。

・チュウハナ各個体の歩く速度は、ステージロード時に乱数で「1.0」~「3.0」の範囲でランダムで決定する。方向転換速度も「2.2」~「2.5」の範囲で決定する。

・チュウハナが鏡の端っこにいるかどうか判別されており、端にいると判定されている時に水を当てると踏ん張り状態になる。踏ん張り状態が終わった後、マリオに向かってくるかどうかがまだ把握しきれていない。

willFall

 willFallはチュウハナの移動の制御でかなり重要な部分となる。この関数が呼び出されるまではチュウハナはターゲットに向かって歩き続ける。

 willFallが呼び出されるには「鏡ごとに設定された球状の範囲の外側にチュウハナがいる」「OnPanelTimeが21以上である」の2つの条件が満たされる必要がある。

 OnPanelTimeはQFごとに1ずつ増加し21を超えると正の範囲をループするもので、チュウハナが歩いている時のみカウントされる。willFallの適用によって-100に設定され、setGoalの適用によって400に設定される。

 

setGoal

 setGoalは適用されるとチュウハナの向きを「-30.0」~「30.0」の範囲で進行角度を変更する。重要度は低いものの、最適化する場合はちゃんと調整する場面も出てくる。

 

isCollidMove

 この関数が最も重要で、チュウハナ同士が接触していると毎フレーム呼び出される。

3/4の確率で何も起きず、1/4の確率で2回目の乱数が呼び出され、ターゲットを再設定する。この再設定でもOnPanelTimeは400になる。

 3匹鏡では接触の頻度が多すぎるため、ほぼ毎フレーム発生している。ターゲットの向きによっては離れて行ってしまうため調整が必須。

 

鏡から落とす方法

 チュウハナを鏡から落とす方法は意外と多い。

・普通にヒップドロップ

・怯み状態のカウントを7回以上重ねて踏ん張れないようにしてから水で押し出す

・鏡の傾き速度をバグらせて落とす

・ターゲットをマリオに向かせ続けて落ちてもらう

 

 TASで選んだ方法は4番目の方法。普通にヒップドロップと、7回怯ませるのは明らかに手間がかかる。鏡バグも発動にはある程度時間が必要な可能性が高く現実的ではない事から消去法的に選んだ。

 この方法ではチュウハナの歩き速度が最も重要で、これが遅いと必要な水当て回数が増える。そのため初期厳選では全員の歩き速度が大体1.7以上になるパターンを選んだ。

 

 手順は単純で、willFallが適用された直後に水を当てるのを繰り返す。2匹鏡、3匹鏡ではisCollidMoveによってターゲットが変更されないように随時調整したり、あえて変更させる事でチュウハナ同士押し合ってもらいわずかな距離を稼いだりもする。この辺りの話はTASを公開したら別で記事にするか、講義動画にすると思う。

 鏡の端っこ判定されてる時は踏ん張ってしまうため、それを避けるように水当てタイミングを微調整する事もある。ただしめちゃくちゃ端っこなら踏ん張り体制のまま落ちたりする上に、歩いて落ちるよりも落下が速い。

 

 人力は1匹鏡でも狙ってやるのは結構難しい、歩き速度の運ゲーもあるのでタイムアタックという観点からは狙えたものではない。