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

2018年04月11日の記事

2018年4月11日(水) 22:45

ホイールスピン

 う〜、頭が痛い。

 ホイールスピン抑止を組み込んで通常スクリプトを何とか動かそうと、試行錯誤する。
 ホイールスピンしない場合、アクセル全開が最速である。
 ホイールスピンが発生すると、アクセルを緩めた方が速くなる。
 だから、アクセル値を変化させて走行距離を比較し、最も走行距離の長くなるアクセル値を採用すれば良い。

 過去の調査により、8フレームで走行する距離を比較するのがベストだと判明している。
 しかしアクセル値は8ビット精度であり、通常は128〜255まで調べれば実用できだがそれでも2フレーム(2INTのゲームです)走行させるのに8フレーム走行を100回以上繰り返す。
 1回の繰り返しごとにステートロードが必要であり、これは走行よりも遥かに時間を食う。
 結果として、ホイールスピン抑止は通常スクリプトの1000倍ぐらいの時間を要する。

 だが、アクセル値は192で飽和するようだ。すなわち、128〜192までチェックすれば良い。それでも、1000倍も時間が掛かるのだから何割か省略できても焼け石に水である。

 いや、ホイールスピンはアクセルを緩めると速くなるから、アクセル192と191の走行距離を比較し、191の走行距離が長くなった場合だけ190から128まで調べれば良いのではないか?
 特にここのコーナーは、ホイールスピンしているのが1〜2割しかない。最初にホイールスピンの有無だけを検出し、それから最適アクセル値を調べるという2段階にすれば、大幅な高速化が可能では?

 そう思ったが、試したら無茶苦茶な解になった。
 ホイールスピンしている場合でも、大抵はアクセル値191より192の方が速いのだ。アクセルを緩めると、ホイールスピンしたままでどんどん遅くなる。そして、ある一点よりアクセルを緩めた瞬間に、突然速くなる。それが、ホイールスピンしなくなった瞬間だ。
 だから192と191の比較だけではホイールスピンの有無を判別できず、アクセル値を変えまくって調べるしかない。

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

この記事へのトラックバックPingURL
Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4