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

2016年11月6日(日) 21:28

ガードビーム

 新しい最適化スクリプトを何時間も掛けて記述し、速遅判定部分抜きで走らせる。
 解として得られたものは、すべてログに出力。すると、831通りの解が得られた。実行時感は、ほんの4〜5分である。異様に早い。
 S-JET の1周期に、ブレーキタイミングの候補は20通りぐらいある。右コーナーリングでは最大4周期ぐらいあるので、場合の数はそれほど少なくないはずだ。

 ここまで少ないというのは、スクリプトの不具合か又はガードビームに弾かれるケースが非常に多いかだ。ガードビームで大量の探索枝刈りが発生している場合、処理時間に余裕があるので直線部分への入りを変化させる余裕が充分にある。
 ただその前に問題なのが、ガードビームに弾かれたということを適切に判定する方法。

 意図的に反射技を使う場合を除き、ガードビームに弾かれると致命的である。そこで、スクリプトでは常に、弾かれたことをいかにして判定するかが問題となる。
 反射技のように大きな角度で衝突すると、速度変化に特徴が出る。それにより、判別可能。また、座標変化を見ても分かる。しかしコーナーリングでは浅い角度で衝突するため、速度変化では判別できない。座標変化は簡易判定なので、明らかに弾かれた場合だけしか検出できない。

 厳密に判定できると、更に多くの解が弾かれて解の数が減少し、処理時間が短くなるかもしれない。

 ガードビームに弾かれたら即座にその操作は無効、としたい場合がスクリプトでは多発するので、いずれにしろこのあたりで判定を正確にしておくべきだ。
 良く見ると、弾かれたらコースの色が暗転する。数えると、8フレームの間だけ暗転してから元に戻る。ということは、どこかにカウンターが存在するはずだ。ガードビームに弾かれるとカウンターに8が書き込まれ、1フレームごとに値が1つずつ減少し、最後は0になる。そのような変化を示すメモリーが存在する可能性が高い。

 メモリーサーチすると、すぐに見つかった。

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