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

2016年9月17日(土) 21:07

悪戦苦闘

 スクリプトが動くようになったが、案の定実行時間が長過ぎる。
 ログを見ていると、後半の直進(左ハンドル→右ハンドルという切り返しの間)を延々と調べている。

 シケイン突破のハンドル切り返しは、間に直進を挟まずに一気に行った方が速いはずである。と言うか、間に直進を挟む必要が生じるのは、走行ラインに無駄があるということだ。だとすれば、後半直進は当たり判定調整に役立つ可能性がある最小限に留めて構わないだろう。
 そう考え、後半直進を最大4フレームまでに制限する。

 一気に探索が捗るようになった。
 それでも、解が出て来ない。ダッシュプレートに乗れているのに、解が出力されない。まだまだ不具合だらけである。悪戦苦闘の末に、スクリプトが動き始めた。
 そこで、最初にコース右端に寄せ易いパターンと、寄せ難いが先行できるパターン・・・両者をスクリプトに放り込んで比較する。すると、右に寄せ難いが先行できるパターンは解が出て来ない。

 画面を眺めつつ挙動を確認すると、シケインを左右のハンドル切り返しで抜けることが不可能っぽい。
 左ハンドル → 長めに直進 → 右ハンドルでないと、シケインを抜けられそうにない。直進4フレーム以内では、無理だ。
 だからと言って、長い直進を認めればそれに比例してスクリプトの実行時間が伸びる。ちょっと実用性に疑問が出るレベルだ。

 こうなったら、二分木サーチ。

 中間の直進の有効範囲を、二分木サーチで絞り込む。無制限に直進を認めても、探索量は5〜10分の1に出来るだろう。
 しかし、二分木サーチを正常に動作させるには、状況判断が重要になる。あるフレーム数の直進を行った場合、それがフレーム数過剰なのか?それともフレーム数不足なのか?その判定を誤ると、正常に探索できない。

 基本的には、直後の最終的な右ハンドルで、右側ガードビームに突っ込めばフレーム数不足。もっと直進を長く続けねばならない。左側に突っ込めばフレーム数過剰で、もっと直進を短くせねばならない。
 人間が画面を見て画像処理しているのと異なり、幾つかのメモリー内の値を参照して状況を判断している。その判断に穴があると、誤動作を引き起こす。状況判断のミスは多発し、スクリプトの完成度を上げるのは長い道乗りである。

 スクリプトを動かしては不具合、修正してはまた不具合。
 その中で発見された穴の1つとして、最終右ターン中ではなく手前の直進中にダッシュプレートに乗る場合があった。判定は最終右ターン中で行っていたため、引っ掛からず。
 直進フレーム数を無制限にすれば、こういうことが起きる。

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