miririi6のブログ

RTAのこととかその他のこととか適当に

ロックマンエグゼシリーズRTA 移動について

ブロマガと共に消えたので書き直しました。シリーズ共通のはずです。流星は知りません。

分かりづらかったらごめんなさい。

振り向き

移動中に方向転換して振り向く時、1fだけ動きが止まる。

→無駄にガクガク動かしたらロスになるので真っ直ぐ走った方が良い。

 

また、余計な振り向きを減らせる部分もある。詳細は次の項目で。

 

ちょっと細かい話

立ち止まった状態から動く時は振り向いてもロスにならない。ポーズやエンカウントによって止まった状態から振り向くことで実質的に振り向きのロスを無くすことができる。

右入力から上入力に切り替えたいタイミングでポーズしてシノビダッシュを使う場面。
右上、上と方向転換するのをカットすることで2f短縮できる。

方向について

エグゼのフィールドは横:縦の比率が2:1となっており、だいたいの判定(扉やイベント発生など)も2:1の斜めに設置されている。

一方、熱斗及びナビの1fあたりの移動距離(ダッシュ時)は以下のようになっている

・横移動 2ピクセル

・縦移動 2ピクセル

・斜め移動 横に2ピクセル、縦に1ピクセル

ここで、フィールドの比率が2:1なのに対して縦移動も横移動も同じ2ピクセルであることに着目すると、横移動は効率が悪いということが分かると思う。

赤が上入力、青が右上入力、ピンクが右入力

イメージとしてはこんな感じ。ドットの数が移動にかかるフレーム数を表している。

ピンクは移動効率が1/2の横移動を8フレームしているため、結果として4フレーム遅くなっている。

 

以下ゲーム画面を用いた具体例。

赤:下入力のみ 青分岐:右下入力

赤〇から緑のラインを目指す場合、赤青どちらの経路を通っても変わらない。しかし、青は方向転換で1fロスるため赤の方が良い。

ピンク:右入力のみ 水色分岐:右下入力 紫:右上入力→右下入力

一方、このピンク〇の位置から緑のラインを目指す場合、途中から右下入力(水色)に切り替えたほうが良い。黒点以降の移動時間が半分になる。

これらの考え方を応用すれば常に最適な動きが分かるはず。

だいたいJugoomba氏の走りを真似すれば良い。

余談:紫のように移動しても(先述の振り向くロスを考えなければ)黒い点まで移動する時間は変わらない。毎フレーム右には2ピクセルずつ移動していると考えると分かりやすいと思う。

障害物がある時やスリップランナーでの移動について考える時は紫の移動についても意識すると良い。

 

円形の判定に行く最適化について(23/01/21追記)

3種類の最適化

この画像の水色、ピンク、緑の部分で最適化のやり方は変わってくる。

緑に関しては上下移動が最適なのが自明なので省略する。

 

水色の部分から円形の判定に向かう時の最適化について見ていく。

水色の場合

この時、「斜め移動でも横移動でも横には2ドットずつ動く」という事実から「円の一番左側の部分に行く」のが最適という結論が導ける。
ピンと来ない人は、「縦のピンクのラインまで行くのにかかる時間は一定だ」という考え方をすると分かりやすいかも。

 

次はピンクの部分について。

ピンクの場合

この画像でピンクに塗られている部分からの移動では、ピンクのラインへ行くタイムが同じになる*1。よってピンク線と重なっている、円の斜めになっている部分へ向かうのが最適となる。

 

微妙に説明ごまかしてる部分あるけど、実用するのに問題ないはず。

(追記部分終了)

 

大雑把なまとめ

無駄な振り向きはしない方がいい。

横に膨らむように動くとロスる。

 

参考元

www.nicovideo.jp

*1:「方向について」の2枚目画像で出てきた、赤と青の線が同タイムであったことと同じ原理