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

2016年7月30日(土) 21:03

ステートセーブ

 F-ZERO に関しては、厄介なトラブルが発生している。それは、ステートロードに失敗する件だ。
 スクリプトが発見した解は、ステートセーブする。利用時はムービーを読み書き可能モードにしたうえで、Load Named State を使って読み込む。
 ところが、error と表示されて読み込めない場合があるのだ。

 PSリッジでは発生したことがないのに、F-ZERO では多発する。
 止むを得ず、ステートセーブと同時に、念のためムービーセーブも行うことにした。ムービーセーブの場合、ムービーファイル名が変わると管理が厄介なので、まる標準ファイル名にリネームする。そのうえで、最新フレームまでいちいち最初からムービー再生せねばならない。
 この、ムービー再生が必要というのがステートセーブとの最大の差であり、ステートセーブが読めないと作業効率が大幅に落ちてしまう。それでも、読めなければ手も足も出ないので、バックアップとしてのムービーセーブも必要だ。

 直角コーナーを回ったら、適切に一点読みするスクリプトへと引き継ぐ。

 これも1から作ると大変だが、ミュート3の時から開発していた旧スクリプトがある。それを、全周回汎用で使えるように修正する。
 スクリプトはまずジャンプ台を飛ばないよう回避し、ガードビームとの間合いを適正範囲に保ったうえで飛び込む。飛び込み方には4パターンほどあり、ジャンプ台絡みの斜め走行により微調整と併用して多数の試行を行う。そして、うまく飛び込めた一点読みを出力する。

 こうやって書くと単純作業のようだが、実用的な時間で解を出力するためには、ガードビームとの適切な間合いなどが分かっていなくてはならない。さもないと試行回数が増大する。スクリプトは実時間の3倍程度の速度でしか動かない。SFCのエミュレートだからさすがにPSリッジよりは何割か速く動作するが、それでも遅いことに変わりはない。試行可能な回数には限度がある。
 過去にさんざん試して、一点読みを成功させるために必要な条件がかなり煮詰まっている。だから実用的なスクリプトが書けるのであり、スクリプト開発には長い時間を要する。

 攻略上重要な定数は、長期の試行により煮詰める必要がある。そもそも、どのような定数が重要であるかを見出すところから始めねばならない。それらはコースごとコーナーごとに別であり、すべて1から別個に調査せねばならない。
 スクリプトにお任せできるようになるまでの手間は膨大であり、だからレースゲームの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