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

2016年10月1日(土) 18:51

バグは単純だが

 スクリプトが複雑過ぎるので記述を整理していたら、バグに気付いた。

 ガードレールに所定のタイミングとフレーム数だけ車体をこすり付ける操作だが、直進→右重心移動→直進→左重心移動となっている。
 最後の左重心移動で、キー入力の記述をミスして直進のままになっていた。

 左に離脱するつもりが直進したまんまだから、離脱はできず解が見つかるわけがない。

 修正すると、ちゃんと解が発見できた。
 だが、これはスタート地点に過ぎない。最速候補は発見できたが、faster 解が存在するかもしれない。そこで、通常の自動運転をやりながら、1フレームごとにこのスクリプトを実行するようにしてみる。
 S-JET の1周期が終わったら、それまでの解の中で一番速いやつを取り出して進行させる。

 ここで早くも、問題発覚。

 478キロからしっかり562キロに戻ったまでは良かったが、この後に半端なタイミングでガードビームに突っ込んでしまう。
 自動運転部分のスクリプトを確認したところ、減速禁止が甘くなっていた。そうだ、右コーナーリングの都合から、ガードビームへの突っ込みによる減速を許可したままだった。

 スクリプトは数多くの条件を見ながら動いているため、辻褄合わせが大変である。管理不能になるため、単一のスクリプトで多くのことをやらせるのは現実的ではなく、スクリプトを分割することになる。もちろんスクリプト分割には、組み合わせ論的爆発による実行時間の長さという問題も関係している。

 もろもろのややこしい問題を解決していくこと自体が面白い。趣味としてTAS作ったり電子工作したり、いろいろ手を広げているが、とにかく「頭を使う」必要があるかどうかを重視している。

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