Darkside(リンクエラー修正しました)

2016年6月17日(金) 21:34

スタートタイミング

 大抵のレースゲームにおいて、スタート直前にアクセルをオンするタイミングが重要である。
 アクセルを吹かし過ぎればホイールスピンして大幅なタイムロスとなり、吹かし足りなくてもスタートダッシュが悪い。最適なタイミングでオンにせねばならない。

 だが、コトはそれほど簡単ではない。
 これが現実世界であれば、タイミングという1つのパラメーターだけで何とかなる。ところが、ゲームの世界は30分の1秒単位で動いている。F-ZERO
はまだ60分の1秒単位だったが、それでも入力がトビトビ過ぎて苦労させられる。こっちはそれが、1秒にたった30回しか更新されないのだ。

 30分の1秒単位でアクセルオンのタイミングを変化させ、最速のタイミングを調べる。そんなのはスクリプトを使えばすぐに終わる。しかし、そうやって得られた最適タイミングは、あくまで30分の1秒ごとという荒いサンプリングである。
 実際それで最適タイミングを調べると、スタート前後ではタコメーターの回転数が何百も変わる。ベストな回転数に合わせたくても、30分の1秒というサンプリングが荒過ぎて合わせられないのだ。

 よって、あらかじめ軽くアクセルを入れ、回転数を半端に上げておくのが効果的である。それによって回転数をズラし、30分の1秒ごとのサンプリングが最適回転数に近付くようにできる。これは
F-ZERO の当たり判定と同様ノンリニアなので、人力では偶然頼りになってしまう。
 スクリプトを使って、アナログアクセルの強さとタイミングを片っ端から変化させ、全数調査で最適解を求めるしかない。

 実を言えば、リッジレーサーではそこまでやる必要はない。
 というのは、タイム計測は少し後から始まるからだ。そしてタイム計測が遅いことを利用し、スタートで逆走してタイム計測開始時の速度を上げるのも基本テクニックである。そうすると、スタートダッシュの微差にこだわっても埋もれてしまう。
 だが、これはTASだ。また、リッジのタイム計測は1000分の1秒単位で行われる。スタートで手抜きしたために0.001秒遅くなる可能性だってある。

 かくして、予想以上に複雑なスクリプトになってしまった。それでも簡単な部類だが、ちょっと修正するたびにエミュレーターを再起動してムービー読み直さねばならないのがストレス。手抜きすると、スクリプトを読んだ瞬間にエラーの無限ループが始まる。これは完全に、最新 BizHawk のバグと言うべきだ。
 自力でバグ取りしないのは、オリジナルのプログラムを組んだ者以外が取るのは難易度が大きく上昇する類のバグだという予感がするためである。

 細かな事実も判明している。
 スタート時はいきなり2速にシフトアップするのが良いというのが定説だが、スタート前にはシフトアップ操作が無効である。つまり、操作が有効になった瞬間に操作せねばならない。TASなら容易だが、人力だとこれは結構うっとうしい仕様。

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4