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

<< 前のページ

2017年9月20日(水) 21:54

2周目

 反射ドリフトでは、なかなか速い解が得られずに苦労する。
 超高速ソニックスタートを使っても、1周目ではギリギリで最高速まで上がらないまま反射ドリフトに入る。つまり、最高速で反射ドリフトが可能な2周目は、反射後の速度が1周目を上回ってしかるべきだ。それが上回れないから、最適解ではないことが分かる。

 少しずつ初期値の異なるスクリプト探索を多数行い、妥当な速さの解を見つけた。最速かどうかは分からないが、遅くはない。しかし今度は、直後のダート地帯で邪魔カー出現。インから抜ければタイムロスが生じないので、手動操作で試行錯誤してみる。ギリギリで抜けられない場合が多いが、最速解の場合はギリギリで抜けられた。
 これは、運が良かったと言うしかない。このゲームでは、乱数調整は困難なのだから。

 ただし、ダート地帯の抜け際は見た目やや遅いかもしれない。邪魔カーを抜くことができる解がレアなので、抜け際の当たり判定まで配慮していられない。

 どんなコースでも天王山になるのが S-JET 噴射の最適化だ。
 相変わらず、モンテカルロ法が大活躍。古典的スクリプトでは、うまく解が得られない。そしてモンテカルロ法が威力を発揮するのは、なぜかこのファイアーフィールドだけである。他コースでは、旧態スクリプトの方が速い。

 S-JET 噴射は3つのスクリプトに分かれていて、モンテカルロ法は最初の1つだけだ。そして特に2つ目のスクリプトが膨大な実行時間を要する。しかも、初期値を変えて何通りも調査せねばならない。さもないと、簡単に何フレームも遅くなる。レースゲームの1周目は特殊なので、2周目はまだ「1つ前の周回と比較する」という手法が使えない。だから、十分に時間を掛けて、速い解を得ておかねばならない。

 とんでもなく厄介だが、スクリプトを長時間放置可能であるとも言える。むしろその方が、ドローンプロジェクトと並行して進めるには好都合だ。

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

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

2017年9月17日(日) 16:28

0秒56短縮

 1周目のタイムに大きな影響があるのは、反射技の速度である。
 反射後は最高速を切ったまま延々と15秒も走り続けるため、僅かな速度差が大きなタイム差となる。

 だから念入りに最速解を探さねばならないが、疑問が生じた。
 反射技で大きく減速するのは、ガードビームに突っ込んでいる間である。反射軌道により、何フレーム突っ込んでいるかが決まる。当然ながら、フレーム数が少ないほど大減速が減り、有利となる。デスウインド2でも、大減速フレーム数で足切りしつつスクリプトで片っ端から調べた。

 ここでは普通に反射させると、6フレームの大減速が生じる。しかし、反射軌道次第では5フレームで済む場合があり、そういうのは速い。最速候補である。
 だが、稀に4フレームしか大減速しない場合がある。ところがこれまでに得られた最速候補は、すべてが5フレーム大減速ばかりである。なぜ、4フレームのパターンが候補に挙がらないのか?
 こういうのはスクリプトのバグという可能性があるので、無視できない。

 速遅判定と無関係に、4フレームのパターンをステートセーブしてみた。そして手動操作で反射させたところ、反射角が深過ぎて2度目の反射が回避できないと判明。
 当然ながら、浅い角度だとガードビームと長く接触する。深い角度で突っ込めばガードビームと短時間の接触で反射できるが、反射後に脇にハンドルを切ってもガードビームを回避できず、再度突っ込んでしまう。これでは、意味がない。

 かくしてスクリプトに問題は無さそうと判明。前回の記事より速遅判定で2フレームほど上回る解を発見し、先に進む。

 1周目のラップは40秒57になった。WIPのエキスパートクラスでは41秒13だったので、0秒56の短縮だ。うち超高速ソニックスタートによる短縮分が、0.4〜0.5秒はあると思われる。

 こうなると、トータル3分4秒台が実現可能な目標に入って来る。
 ファイアーフィールドのTASを製作する前から、3分5秒台が可能だという感触はあった。実際に可能だった。しかし4秒台となると、WIPから0.8秒の短縮を要する。それは無理だろうと諦めていたが、超高速ソニックスタートが大きく稼いでくれたおかげで、頑張れば実現しそうな範囲になった。

 ところでそもそも、長年誰も気付かなかった超高速ソニックスタートになぜ気付いたのか?という話。

 デスウインドやポートタウンなど一部の特殊なコースを除くと、グランプリで最速なスタート方向はソニックZ改である。プラクティスの森下スタートのグランプリ版で、ライバルをブロックし追突して貰うことで加速する。ライバルはプラクティスではGFを選び、グランプリはBFとなる。
 いずれも2回の追突があり、1回目の追突後に蛇行して2回目の追突を早く発生させる。

 現実世界やいまどきリアルなレースゲームと異なり、初代 F-ZERO にフェアプレイの概念はない。ブロックしても敵車は減速せずお構い無しに体当たりして来る。それを逆用して自車を加速させるのが、ソニックスタートだ。

 また、周回遅れが道を譲るという常識もないのは、邪魔カーとして散々話題にしている通りである。
 何しろ続編では、他のクルマに体当たりしてクラッシュさせると、ペナルティーを受けるどころか自車のエネルギーが回復するのだ!

 さて、そんなソニックZ改だから、その操作を実現し最速の加速を得られるパターンを探す汎用スクリプトが完成している。
 ところが、それでファイアーフィールドのTAS製作を開始したところ、解が得られなかったのである。

 グランプリのマスタークラスでソニックZ改が完全に成功した場合、2回目の追突直後に436キロぐらいになる。追突直後は体勢が崩れるため少し減速し、最終的に430キロで落ち着く。
 だが、どんなにスクリプトを動かして解を探しても、400キロそこそこに加速する解しか出て来ないのだ。内部メモリーを追うと、追突相手のBFが明白に遅い。乱数が悪くて、BFの初期加速が悪く、ソニックスタートの速度が上がらない。

 ソニックスタートで乱数が悪いと処置無しになることが分かっていたので、途方に暮れた。ここまで来て、製作断念に追い込まれるかもしれない。
 それにしても、乱数が悪くても430キロを若干下回るだけで、2フレームていど遅いだけである。これまでの経験では。400キロしか出ないなんて、経験したことがない。

 半ばヤケになってスクリプトを修正し、余りに酷くて通常なら調査打ち切りにするような大失敗パターンを調査させてみた。すると相変わらず遅いのだが、一部に突発的にとんでもなく速い解が出て来たのだ。
 スクリプトの基本がソニックZ改なので、超高速ソニックスタートも見た目はソニックZ改とほぼ同じである。

 超高速ソニックスタートではスタートから2秒ぐらいまで、追突相手のBFが遅い。普通のコースに比べて、遅過ぎる。ところが、2秒2あたりから急にBFが速くなる。訳が分からない現象だ。
 普通なら大失敗とみなされるパターンであること、レアな乱数を引かなければ再現しないこと・・・それにより誰も気付かなかったと思われる。

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

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

2017年9月14日(木) 22:12

反射技

 任天堂がスーパーファミコンのミニを発売するにあたり、当時のゲームの話題を取り上げている。現在TASを製作している初代 F-ZERO も収納ソフトに入っており登場しているので、もし知らない人が居たら記事を見てみて欲しい。

 さて、スクリプトをリレーさせて中盤の天王山たる連続ヘアピンまで進行させた。ここは未だに反射技が速いとされている数少ない場所であり、いかに高速な壁反射を決められるかが決定的に重要である。

 というのもこの後は、ゴールライン直前のピットに設置されているダッシュプレートまでは加速手段が無い。
 そして、余りにも速度が落ちるため、そのダッシュまでの約15秒ものあいだ、延々と最高速以下で走り続ける。つまり、少しの速度差も大きなタイム差となる。

 とはいえ速度差が最大なのはソニックスタート直後であり、進むに連れて速度差は縮まる。

 左が、WIPとして製作したエキスパートクラスでのファイアーフィールド。右が、いま製作進行中のものだ。 既にここまでで0.3秒差が付いている。そして速度差は縮まったが、それでも10キロの差がある。内部メモリー上での速度差から推定すると、ここから1周目終了までに0.2秒近くの差が更に開くはずだ。

 エキスパートクラスとマスタークラスではソニックスタートの速度が違うし、WIPは十分な最適化が行われていない。だから約0.5秒の短縮とはいえ、実際に超高速ソニックスタートの効果と言えるのは0.4秒ぐらいだろう。
 最初のインパクトからすると、たった0.4秒と言いたくなる。正直、期待外れである。しかし印象とか抜きで考えると、TASにおいて0.4秒も速くなるというのは紛れもなく「破壊的」速さである。超高速ソニックスタートを再現できない限り、誰もこのTASの記録を更新することはできないだろう。

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

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

2017年9月13日(水) 21:55

奇跡の乱数

 超高速ソニックスタートが発生したことを検出し、発生していなければ自動的にギブアップしてリトライする。3回やってゲームオーバーになったら、自動的にグランプリを選び直してリトライする。 放置するだけで延々とリトライを繰り返すそんなスクリプトを作成し、各コースで走らせてみた。

 その結果判明したのは、ギブアップ→リトライではソニックスタート1段目の乱数に影響を与えられないという事実だった。
 何百回リトライしても、1回目の衝突直後までの挙動は変化しないのだ。
 邪魔カーの出現パターンを変えることができるので、てっきりソニックスタート1段目の乱数も変化すると思い込んでいた。

 そうすると乱数を変化させるには、ラップごとの順位を変化させるしかない。だが、TASではそこは不可侵である。更に、乱数はそれ以外のモノも影響しているっぽい。要するに、確実に再現させようとすればやはり、このゲームの乱数を解析するしかない。どのアドレスが乱数なのかというのが、未だ不明なままである。
 ただ、コース間のような乱数調整し易い部分では、思うように乱数が変化してくれないことが分かっている。つまり、乱数を解き明かしても望むような乱数調整ができない可能性も高い。

 結論として、各コースで超高速ソニックスタートを使いまくるのは、無理っぽいということだ。

 まあこれが自在に使えたら、デスウインドとポートタウン以外が全部更新だからな・・・

 そうすると、ファイアーフィールドで奇跡の乱数を引き当てたのは、宝くじに当たったようなものである。どんなTAS製作やっても恐らく、超高速ソニックスタートが使えるのは1コースだけだろう。その1コースがファイアーフィールドとは、最高である。
 なぜならここは、最高速に達している時間が、全コース中で最も短い。だから、速度差がコースの広範囲に渡って影響する。特に S-JET が使えない1周目は、最初に得た速度がコース全域に影響する。

 超高速ソニックスタートが、タイム短縮に最も威力を発揮するコース。それがファイアーフィールドなのだ。従来のソニックスタートでは理論限界をとっくに超えてしまっている、破壊的な1周目ラップが出せるはずだ。

 ただし、いきなり最初のヘアピンでWGが邪魔。

 余りに素で邪魔すぎて、回避できない。ザコ車と異なり、WGはヘアピンでインを空けてくれないので、どうしようもない。しかし逆に、どうしようもないからこそ、諦めることができる。通常のソニックスタートではこんな絡み方にならないため、超高速ソニックスタートとセットだと割り切るしかない。

 BFと1回目の衝突後、すぐにWGをブロックすることはできる。しかしBFはWGの速度と連動しているようで、スタート時にWGをブロックするとBFとの2回目の衝突が遅くなる。そもそも現在最速と広く認知されているソニックスタートでは、WGをブロックせず先に行かせる。WGをブロックしてBFの速度も落とさない、などという虫の良い現象は発生しない。
 超高速ソニックスタート成功後に蛇行し、WGに追い付くタイミングをズラすこともできる。しかしコーナーリングで邪魔されないほど蛇行すると、そのロスがWG回避ロスを上回ると判明。これも却下となった。超高速ソニックスタートの中でも若干遅い解を使用するのも、また同様だ。

 ここでロスをしても速すぎるほど速いし、逆に普通のソニックスタートでは苦労する先頭のGFをこのあと楽に抜くことができる。
 TASならではのアクロバティックな手法もいろいろ試したが、余計なことをすると却って遅い。要するに、このWGによるロスは見た目ほど大きくない。まあ1フレームでは済んでいないだろうけど。

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

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

2017年9月12日(火) 21:22

乱数調整

 新ソニックスタートが、STAP細胞状態である。再現条件は把握していたつもりが、その条件では再現できない。
 ただしSTAP細胞と違うのは、自分の手元にはムービーファイルがあること。dsync する機種ではないので、このムービーファイルさえあれば誰でも再現可能だ。だから、存在証明には悩まない。

 問題は、目の前のファイアーフィールド以外で再現できないこと。乱数が異なるせいだ。
 乱数が異なってもそれを操作の変化により吸収し、安定した結果を得る。そのためにスクリプトというものがあるが、どのように操作を変えても再現できない。どうやら条件が微妙過ぎて、操作の修正では駄目であり、乱数調整まで必要な予感。考えてみれば当然で、公称77万本売れたゲームにおいて、27年間誰も気付かなかったのである。操作変化次第で確実に再現できる現象であれば、とっくに誰かが発見しているだろう。
 未だに人力実機でのタイムアタックが行われているゲームなのだ。

 ソニックスタートの1段目だけが問題で、1段目さえクリアできれば恐らく2段目は操作変化だけで対応可能。だが、2段目の乱数は容易に変化するのに対し、1段目の乱数はなかなか変化しない。ラップ順位を変えるか、ギブアップ操作を行わなければ変化しない。

 TASにおいてラップ順位を変えるのは無理なので、どうしても新ソニックスタートを使いたければギブアップしかない。ギブアップによる乱数調整は却下済みだが、圧倒的に速い新ソニックスタートを使うためであれば容認しても良い。しかし、単に容認して済む問題ではない。
 グランプリだから、自機には限りがある。ギブアップすると自機は減り、3回でゲームオーバーだ。
 よって、ギブアップによる乱数調整は最初のコース・・・ミュートシティー3兄弟・・・でしか使えない。3回以内に運良く乱数を引き当てればその限りではないが、そんな簡単に乱数調整できる予感がない。実際には、乱数調整にどれぐらいのリトライが必要なのだろうか?

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

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

<< 前のページ

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

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4