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

2017年8月26日(土) 21:25

大失態

 邪魔カーを回避するのは不可能だったが、軽い接触だけで突破できる解を探す。その結果、1フレームのロスだけで完走できた。
 ポートタウン2の5周目は、精密ラップで1690.96フレーム。ゲーム内ラップで1691フレーム。もうこれ以上は望めないだろう。

 すぐにレッドキャニオン2へ進む。
 実はこのとき、大変なミスを犯したことに気付いた。このTASは、ゲーム内タイムの最短化を目指している。だが、デスウインド2が最短ではなかった!

 初代 F-ZERO のゲーム内時計は壮絶な手抜きで、1フレームごとに0.01秒進むのと0.02秒進むのが交互である。1秒=60フレームの計算で、リアル1秒に0.9秒しか進まない。それより問題なのは、トータルのフレーム数が奇数の場合である。
 最初に0.01秒進んで最後に0.01秒進んで終わる場合と、最初に0.02秒進んで最後に0.02秒進んで終わる場合では、同一フレーム数でもゲーム内表示タイムは0.01秒異なってしまう!

 これまで製作終了した3つのコースのうち、1つ目のミュートシティー3と、3つ目のポートタウン2は、トータルのフレーム数が偶数なので関係がない。だが、2つ目のデスウインド2だけは奇数である。
 そして、確率2分の1の賭けに負けていた。デスウインド2は最初に0.02秒進んで最後に0.02秒進んで終わるパターンであり、ゲーム内表記で0.01秒のロスを食らっていたのだ。

 試しに、ポートタウン2開始前に1フレーム挿入し、最初に0.01秒進むようズラせてみた。結果は、ソニックスタートの挙動が狂ってしまった。
 最初のミュートシティー3のソニックスタートで、乱数はラップ毎かギブアップ→リスタートに依らねば変わってくれなかった。フレーム挿入では変わってくれなかった。

 しかし今回は逆に、変わって欲しくない乱数がフレーム挿入で変わりやがった!

 未だに、このゲームの乱数は分からない。
 作り直すとなれば、半年分ぐらいの苦労が水泡である。しかし良く考えると、事実上作り直しには意味が無い。というのも、あくまでゲーム内表示にこだわると、コース製作に入る際に、スタート直後に時計が0.01秒進むかどうか確認することになる。仮に0.02秒進んでしまった場合、ボタンを押すのを1フレーム遅らせて調整することになる。
 だが、もしそれでトータルのフレーム数が偶数だったら、無意味に1フレームを挿入したという結果になる。そうなってから、1フレームを抜くことはできない。乱数が変わってしまう。

 そのリスクを考えると、1フレーム挿入することはできない。
 運悪く1フレームが単なる蛇足になってしまったら、取り返しようがない。ゲーム内タイムには影響しないとは言え、TAS的にはイイワケの余地がない1フレームになってしまう。

 だが、ゲーム内タイムで0.01フレームをロスするのは、コース単独での完走フレーム数を最小化するという目標に置換すればロスではなくなる。ならば、そういうイイワケが可能な現状の方がマシだろう。
 つまり、この問題は腹をくくって無視し、忘れる。

 今回の大失態は、ゲームに対する理解の不足が原因だ。つまり、時計としては0.02秒進むフレームも、内部的には前半と後半の2つに分けられていて、ゲーム内タイムでは0.01秒単位で処理されると勝手に思い込んでいたのだ。
 本当にそうなのか確認すべきだったが、まさか最終的な表示タイムも0.01秒と0.02秒交互処理のままの訳がないだろうと思っていたのだ。常識的に、そんなプログラムを作ることなど、ありえないと。

 ともあれレッドキャニオン2をそのまま進めると、最初の右ヘアピンでいきなり邪魔カー出現。というか、スタート直後はまだ1位ではないため、どこでパスするかは常に問題になる。これまたポートタウン2の最後同様に、これ以上無いってほど邪魔な場所に出現してやがる。

 止むを得ず、僅かに遅い初期値を使用してタイミングをズラせ、接触を回避できるパターンを選ぶ。

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