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

2016年11月3日(木) 21:31

今後の方針

 あれこれ考えた結果、単一のスクリプトで何とかしようというのは無理があり過ぎるとの結論。
 ガードビームとの接触を繰り返しつつ旋回性能ギリギリでコーナーリングするのは、最適化困難過ぎる。何を作っているのか分からないほど複雑なスクリプトになった挙句、保守も不可能になりそうだ。
 ここは妥協して、人間の判断を入れざるをえない。

 コーナーリングの手法を変えた複数のスクリプトを用意し、すべてを試して最速だったものを採用する。

 まずは現状のスクリプト。
 まずはこれを走らせ、解を検討する。1周前のように、問題のない解が出力される場合だってある。それなら、早々に解決だ。
 では、問題のある解が出力されたらどうなるか。現状のスクリプトでは S-JET 周期の最適化ができない場合には適当にブレーキを掛けて「とにかく何らかの解」は出力するので、解無しという場合はない。しかし、アウトに膨らみ過ぎて使い物にならない解が得られることはある。

 その場合、解を再生し、どこまでの走行が使い物になるか?を人間が判定する。
 そして、使い物になる走行の続きを、第2第3のスクリプトで行う。今回のケースなら、直進部分で完結する S-JET の第1周期は使い物になりそうだ。第2周期は、明らかに使い物にならない。そこで、第1周期完了時点を初期状態とし、第2第3のスクリプトを走らせる。
 第2第3のスクリプトは、これから製作する。

 これまでと異なるコーナーリング方法として、有力案が2つある。その2つを別々のスクリプトで実行するのだ。

 1つは、自動運転にブレーキを組み込む。
 自動運転ではハンドルを切る量とタイミングを変化させ、1フレームごとに最速と思われる操作パターンを選択している。
 そこに、ブレーキを掛けるタイミングを新たな変数として加える。これにより自動運転の所要時間は大幅に長くなるが、それでもコーナーリングに必要な100フレームに満たない自動運転であれば実用的な時間で終了するはずだ。

 もう1つは、コーナーリングのキー操作を限定する。
 何フレームか直進したら後はひたすら最大ハンドルを切り続け、コーナーリング終了時に直進に戻すという、単純な少数のハンドル操作だけを試す。その代わり、ブレーキングはバリエーション豊かに組み合わせを試す。
 自動運転に組み込む場合は、1フレームごとに判定を行うため場合の数は減らせるが、数十フレーム経過した段階でもベストな選択かどうかは分からない。推測が入る。これに対し、数十フレーム経過した段階で判定を行うため、より正確になる。
 要は、ハンドル操作パターンを増やして試すか、ブレーキ操作パターンを増やして試すか、その2つ。

 どっちも増やして試すのは、組み合わせが増え過ぎて無理。

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