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

<< 前のページ

2017年6月28日(水) 20:55

カオスとの戦い

 3つ目の急コーナーを操作するスクリプトの初期状態で比較すると、速い1周目(左)は速度も速い。2周目(右)に比べると、より左側を向いていることも分かる。
 そこで、エミュレーターならではの機能を使って調査することを考える。

 初期値を少しずつ変化させ、どれぐらいまでのズレなら1周目のように速く抜けられるかを確認する。そして、直前のスクリプトでは、その範囲に入るような解を選んで出力させてみよう。
 この基本アイデアを元に、まずは過去の走行におけるパラメーターを確認する。自機の座標と向きと速度が、どうなっているか?

 結果は意外だった。最速1周目のパラメーターはごく平均的であり、他から突出したものは無い。特徴はない。すなわち、初期状態を見て有望かどうかの判断はできない。
 このこと自体は想定内。60分の1秒という時間分解能が余りに大雑把過ぎて、最適化がカオス状態だという話は何度も書いている。他とどこが違うのかも分からない微妙な初期値の差が、簡単に2フレーム差に開いたりするのだ。このゲームにおいて、トータルタイムで究極の0.1秒落ち以内まで迫ろうとすれば、カオスを掻き分けて最適化を行わねばならない。それは、ひたすら計算リソースを消費する。
 だから、誰もこのゲームのTASを作ろうとしない。

 他にも爆弾がある。

 1周目は3つ目のコーナーが爆速だが、実は棒磁石地帯が遅い。棒磁石地帯に入る直前には、1周目と2周目の差は1693フレームである。これが、昨日の記事の通り、棒磁石地帯後には一時的に1692フレーム差にまで(2周目に)詰められている。

 だから1周目の棒磁石地帯は作り直すべきであり、これすなわち爆速の1周目コーナー抜けも作り直さねばならないという意味だ。
 1周目から5周目まで、3つのコーナーを爆速で抜けねばならない。そして今作っているのはプラクティスだが、グランプリのマスタークラスだってある。最低でも10回は、3連続コーナーのスクリプトを動作させるのだ。コーナー1つあたり、一昼夜ぶっ通しでも終わらないのに!

 まして、カオス攻略のため試行錯誤する余裕などない。このままでは、完全に詰んでいる。

 そこでまず、スクリプトの高速化に取り組む。ポート2はプラクティスとグランプリの両方で製作するため、他コースに比べるとスクリプトの活躍機会が2倍。特に時間の掛かる3連続コーナーのスクリプトは、時間を使って性能を上げる価値がある。

 最初に目を付けたのは、クリッピングポイントだ。各コーナーで、ガードビームすれすれを走行できないような走りは、さっさと捨てても問題ないはずだ。ガードビームとの間合いを監視し、離れ過ぎた走行は即座に切り捨てて次の操作パターンを調べる。特に第2コーナーは、過去の走行例が安定してインベタになっている。非常に切り捨てし易い。2分木サーチも入れて、調査速度を上げる。
 すると、第2コーナーを抜けられる解はすべて合わせて、44通りしか存在しなくなった(2周目)。

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2017年6月27日(火) 21:24

また遅い

 最後の急コーナーを抜けると、一気に計算量が減る。シケイン抜けは相当に重いが、それでも1日のうちに終了できる計算量だ。そしてシケインを抜ければ、実際の速さを容易に比較可能となる。

 そこで明らかになったのは、2周目が異様に遅いこと。ゴールライン通過時で、1周目(左)に比べて2周目(右)は1694フレーム以上も遅れている。
 1694フレーム差で自機の進行具合はほぼ同一だが、2周目はゴールラインに到達していない。

 では一体どこが遅いのか?
 お馴染みの犯人探し比較である。

 最後の急コーナーにおけるクリッピングポイントでは、1周目と2周目の差は約1692フレームしかない。

 しかしコーナー立ち上がりでは、差は相変わらず約1692フレームのままだが、脱出速度がまるで違う。

 そのまま走行を続ければ速度差のせいで差が広がり続け、シケイン手前では約1694フレームに広がっている。コーナーの脱出が遅いだけで、2フレームもの大損害なのだ。だからこそこのコーナーは、極めて重要なのだ。

 だが、そんなことは分かり切っているから、非常に重い計算を行って徹底的に最速解を求めた。それがなぜ、2周目は1周目のような速い解を発見できなかったのか?

 そもそも1周目を製作していたときに、シケイン抜けスクリプトが誤動作した。原因はスクリプトの想定よりも速度が速かったためだが、つまりこの1周目は特別に速かったのだ。

 それ以外のラップでは、そこまで速い解が得られていない。仮にこの1周目が平凡なら、実はそれだけ速く抜けられるということに気付くのが遅れただろう。全く気付かないままTAS製作を続行させたかもしれない。WIPのエキスパートクラスが、そうなったように。

 では、2フレームも速い解を得るための条件は何か?

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2017年6月26日(月) 21:59

計算中


 このコーナー攻略は、超絶に重いスクリプトである。それだけではなく、超絶に重要でもある。大きな減速が必至であるため、最高速に復帰するまでの走行距離も長く、僅かなロスが大変なタイム差になる。だから、スクリプトで徹底的に操作パターンを洗って最適化せねばならない。
 現状ではスクリプトが終了せず途中結果しか出ておらず、まだ先には進めない。


 そしてまたここの解は、判定に悩むことが多い。すなわち、しっかり減速して走行距離を短くすべきか、走行距離が伸びてもコーナー脱出速度を優先すべきか、という問題だ。

 左の方が脱出速度が速く、ここから長大なコースを速いまま走り続けられる。しかし走行距離が長いため、現時点では右よいも遅れている。さて、左右どっちが速い?

 基本的には速度変化は計算できるため、今後どれぐらいの距離を走行できるかも計算できる。それにより、スクリプトは速遅判定を行っている。この例では、右の方が0.2フレームぐらい速いだろうという結論になっている。

 しかし、計算は直進した場合を想定している。座標や向きが僅かに頃なるため、両者の最適走行ラインも同一にならない。そのため、実際には左が速くなる可能性もある。つまり、実際に両者とも製作を進行させて、先の状態を比較するしかない。

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

<< 前のページ

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

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4