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

2016年9月9日(金) 21:47

自動運転

 現時点で、ソニックスタートの最速候補は大雑把に3系統存在する。
1)手動による非効率な2段ソニック+早目の3段ソニック。
2)自動最適化した2段ソニック+蛇行しまくって少しでも早く3段ソニック。
3)自動最適化した2段ソニック+先を急いで遅めの3段ソニック。

 このうち、1)と2)は3段ソニック発生まで実行したが、どちらが早いかはずっと先まで進めないとはっきりしない。
 手動で進めてもアバウトな判断は可能だが、最終的には少し動きが異なるバリエーションを試すから、より厳密な判定が必要になる。また、単なるソニックスタート速遅判定だけでなく、その後の実走行でも同様の作業が必要になる。となれば、今のうちからスクリプト化しておくべきだ。

 ホームストレートはダート地帯を抜けると同時に終了し、緩やかな半円状のコースが続く。そのような形状を走行する場合、これまでのようなスクリプトでは対処困難である。そこで、プレステの超加速系で活躍した方式を試す。すなわち、ある状態からハンドルの切れ角を変化させて到達状態を調べ、ベストと思われる操作を選択する。その操作で1フレーム先に進め、同じことを繰り返す。
 とはいえ、初代 F-ZERO はデジタルハンドルである。一工夫必要になる。

 ハンドルを連続して何フレーム押し続けるか・・・を変化させる。
 何フレームか連続してハンドルを押したままにしたら、最初の状態から40フレーム経過するまで直進する。その時点の座標を評価する。
 左右ともに連続16フレーム押し続けるところまで調べる。経験上、旋回状態が安定するまで15フレーム確保したい。合計すると最大31フレーム必要で、更にこの方式はコース形状により何フレーム先まで進めるかという最適値が変わる。それでまあ40フレームぐらいだろうと見当を付けた。

 試作したスクリプトでダート地帯を自動走行させると、ダートすれすれではなく少し離れて走行している。
 これは遅いでしょ、という訳で手動でダートすれすれを通過させてやる。

 両者を比較すると、パッと見では区別困難なほどそっくりだ。しかし、メモリー内部の座標値を確認すると、手動よりスウリプトの方が速かった。ダートすれすれを走るのは、最速とは限らないのであった。たぶん、横風が影響している。そういうのは、手動では分からない。

 スクリプトが有効であると判明したので、改良を加える。クイックターン可能にする。
 クイックターンは重心移動が1フレーム先行するので、1フレームずつの漸進方式を取ると重心移動のみによる平行移動も結果的にサポートできる。これで自動運転すると、更に速くなった。
 ここで言う速いとか遅いとかいう用語は、TASの世界の話である。メモリー内部で座標値が少しでも先に進んでいれば、速いのだ。手動最適化と改良スクリプトで、内部座標の値は0.5ぐらいしか違わない。画面では、差など分からない。
 タイム差に換算すると、0.001秒ってところだ。

 ともあれこれで、比較し易くなった。

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