Darkside(https対応しました)

2016年07月の記事

<< 前のページ | 次のページ >>

2016年7月26日(火) 20:53

再び F-ZERO へ

 やはり自分はソフトが本業ってことだ。
 ハード工作やっていると長くても2時間ぐらいで気力が尽きる。だから、時間がある日でもハード工作はそうれほど先に進まない。しかし、ソフト作成は比較にならないほどスタミナが持続する。だからこそ、PSリッジのように製作していて面白いネタは危険だ。時間が食いつぶされて、通常の生活に支障が出かねない。
 モータートゥーンのTASを作ったあと、PSリッジを完成させるのに1ヶ月以上を要してしまったが、実際のところ普通に製作していたのでは1ヶ月で完成するわけがないほど大変である。PSリッジの最適化は、途轍もない作業だ。それを1ヶ月で作っちゃったのは・・・これ以上やってたら生活がヤバいです(汗)

 さすがに潮時さすがに限界ということで、2周目を破るのは断念せざるを得なかった。
 しばしば書いている通り、既にフレーム未満の座標差による当たり判定の良し悪しがタイムを支配する領域に入っている。だから、部分的に速くても全体の速さにはつながらない。2周目は部分的には遅いこともあるが、それはラップタイムを遅くしていない。トータルとしてはとんでもなく最適化されている。究極を見たいなら、2周目に注目して欲しい。

 そんな状況なので、ここから引き続き#13デビルカーで製作するとか言うのは無い、
 デビルカーは使用できるようにするまで手間が掛かるため、そもそも今すぐ製作に着手することはできない。

 そこで、次は F-ZERO のミュート1に戻ろうと思う。
 久しぶりの BizHawk で戸惑ったが、それなりに慣れた。今後は使用エミュレーターを BizHawk に統一し、更に慣れるのが良いかもしれない。
 Lua スクリプトを再スタートさせるたびにエミュレーターから立ち上げ直さねばエラーが出るのは最悪であり、まだ対処法は見つかっていない。しかし、任意のステートロードが出来ない問題は解決した。
 0〜9までの10通り存在するクイックステートは、ファイル名の整合性が取れていないとロードできない。しかし、Load Named State を使用すれば、ファイル名お構いなしにステートロードできる。

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

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

2016年7月25日(月) 21:29

理路上は2周目が最遅だ

 SDは概して、速度を上げると早期に終了し、長時間持続させようとすれば速度が上がらない。
 ゴールラインまでSDを持続させねばならない。

 SD開始当初の速度を欲張ると、ゴールラインまで持続できない。
 ホームストレートSDに関しては1周目が大当たりで、トンネル入って少しおところまで持続できた。2周目は、SD最速化スクリプトを動作させるまでの直進期間を長く取らねばゴールラインまで持続できなかった。
 そして3周目は、2周目よりも出足が遅いのに直進期間は更に長く取らないとゴールラインに到達できない有様。

 ラップ全体としては2周目は神状態だが、ホームストレートSDなら1周目が最高パターンを引いたようだ。
 ただし3周目は最初の加速が悪いせいか、ゴールラインまでSDで到達可能なパターンでは左ハンドルが有効だった。

 1周目2周目では左ハンドルを活用して速度を上げると、SDが早期終了してしまった。だが、3周目は左ハンドルで更に加速し、ゴール手前では330キロに到達。
 これで、30分の1フレームを稼ぐことができた。

 だが、それでも2周目に0.007秒及ばなかった。

 3周目は次ラップを考えずにゴールラインに飛び込めるので、2周目より僅かに速くなってしかるべきだ。だが、フレーム未満の罠を跳ね返すことができなかった。
 更に粘ってタイミングを調整すれば2周目を上回れる可能性が残っているものの、3周目後半は余りに予想外の苦戦を強いられ、もう製作の精神的スタミナが残っていない。
 ここまで2周目とラップを揃えられたというあたりで、力尽きた。

 2周目に勝てないと、NEW RECORD のナレーションが入らないため、動画の仕上がりとしては最後が残念なことになる。だから何とか更新したかったが、2周目は想像よりも遥かに最適化されていた。
 ということは、2周目の理論限界は46秒8とみなして良いだろう。

 理論限界は2周目を基準にして、1周目が0.07秒速くて3周目が0.03秒速いというぐらいだろう。よって、トータルの理論限界は2分20秒3前後だと思われる。取り合えず今回のTAS製作で、長年の疑問に一応の答えが得られた。

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

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

2016年7月24日(日) 22:14

2周目相手の苦闘

 少しでも似たパターンを探して、何通りも試す。
 だが、高速突破できない。2周目より3キロ遅いままだ。

 だが、その中で一番マシな突破パターンを元にして複合コーナーの抜け方を調べたところ、案外速いパターンが存在した。
 突破速度は遅いが、途中の最高速度は312キロまで出ているので見栄えは悪くない。

 少し先まで進行すると、速度は2周目に劣るが同一ラップタイムでの座標は先行しているという状態が続く。
 ほぼ互角の状態で、最終SD開始ポイントに到達した。
 ここまで、2周目を相手に激闘という3周目だ。

 最終SDへのエントリーは、2周目に出来るだけ似せる。これまでの経験上、速かったときの状態をマネするのが効果的なことは分かっている。
 そして最終SDの良し悪しは、そのまま最終タイムへとつながる。

 1周目にも2周目にも使用した、SDを最速スタートさせるスクリプトを動かす。だが、最後の賭けには勝てなかった。2周目よりも遅いパターンしか出て来ない。

 例によって少しずつ異なるエントリーを試すが、どうしても2周目より遅いパターンしか得られない。

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

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

2016年7月23日(土) 20:37

次々に障害

 1周目と2周目の実際の走りが「種」に使えるとはいえ、いずれもSD最速化スクリプトとSD最長化スクリプトと手動試行錯誤が入り混じった入力である。パターン化されていない。
 2つの走りで実際に使用した入力を眺め、入力範囲と大雑把なパターンを読み取る。スクリプト任せとはいえ、127や129などキーとなる重要なハンドル値は存在する。ハンドル値の範囲もそれほど広くはない。それに基づき、スクリプトを設計。

 実行時間が短めになる類のスクリプトなので、通常より多くの走行を生成できるだろう。60万通り以上のパターンを試行するよう調整し、実行。そして、設定区間をSD持続させたまま完走したパターンが、約53万通り得られた。いつも通りデーターベースに放り込んで、SQL文を放つ。
 さすがに、2周目よりも速いパターンが出て来た。

 だが、その最速パターンを元にしてSD終了直後にシケインを突破させ、先に進めると遅いのだ。
 強力な走行パターンを幾つも取り出し、シケインを突破させる。片っ端から2周目に負ける。まるで、キツネに化かされているみたいだ。どこからどう見ても2周目より速いのに、続きを作ると2周目に負ける。
 自分で作ったのに、どうやってこの魔法のように速い2周目を製作できたのか分からない。だが、自分で思っていた以上に、2周目は強烈に最適化できているようだ。

 こうなったら、最速パターンではなく類似パターンだ。
 自作TASだから、2周目はムービー再生して座標や向きや速度などの詳細情報を確認できる。53万通りの中から、2周目に最も似たパターンを取り出す。改めて確認すると、2周目が速い理由が分かった。SDが終了して左ハンドルを切ると、そのままスッと自然に左コーナーの形状に沿って走行が続くのだ。SD終了時のパタメーターが絶好なのだ。

 類似パターンを使うことで、遂に2周目よりも速くなった。
 だが、それには犠牲を伴っている。SD終了後の最高速が、2周目より手前になるのだ。そのため、途中走行は2周目より速いものの、第2チェックポイントに向かう次のSD開始では、突入速度が2周目よりも遅くなる。
 それにより、SDの速度も遅くなる。

 第2チェックポイントを2周目よりも30分の1秒速く通過したが、時速3キロぐらい遅い。つまり、1%ぐらい遅い。
 第2チェックポイントを含むSDは、約100フレーム持続する。つまり、1フレームは遅くなる。60分の1秒。

 差し引きそれでもまだ速いものの、SD終了時の速度も2周目よりも遅いから、どんどん悪影響が後に残る。
 それをチャラにする最後のチャンスが、後半ヘアピンである。手前のSDは2周目も3周目も320キロは越えるから、終了後の最高速は、ほぼ最大まで回復する。そのまま無事に後半ヘアピンを突破できれば、優劣が消失すると期待できる。

 だが、この後半ヘアピンこそ天王山である。
 フレーム未満の罠が思い切り待ち構えていて、単純にエントリーが速いだけでは高速突破できない。これこそ類似パターンの選別が必要なのだが、1周目や2周目よりSDが時速3キロ遅いというのがネックになった。2周目は1周目と類似したパターンが存在したが、3周目には類似パターンが無い!

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

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

2016年7月22日(金) 21:02

速くならない

 拡張コース入ってすぐの直線では、このあたりでSDが切れる。
 難点としてまず、ずっと直線が続くのでSDの速度が上がり難い。310キロまで上げるのは容易だが、315キロまで到達させるのは相当に苦労する。 

 次に、いよいよ左コーナーが接近して来た状況でのSD物理。
 大原則としてコース形状に従うから、左コーナーでは左ハンドルを切る方が加速するはずである。ところがここのコーナーは妙で、右ハンドルを切る方が加速する局所最適解があるのだ。
 そっちにハマると、速度を上げるには右ハンドルを切らねばならず、しかしそれを続けるほど左コーナーリングが困難になる。速度を諦めるか、スムーズな走行ラインを諦めるか、となってタイムが縮まらない。

 右ハンドルの局所最適解を使うと320キロ以上に加速可能だが、遅くて話にならない。
 更にまた、右ハンドル解の最悪なところは、左ハンドルを切った瞬間にSDが終了してしまうこと。
 一方でコース形状に従った右ハンドルSDも実現は容易だが、速度が上がらない。

 SDの一般的性質として、速度を上げれば持続時間が短くなり、持続時間を長くすれば速度が上がらない。コース形状に従った右ハンドル解は、持続時間が長くて速度が遅いパターンと同一な感じだ。
 あちらを立てればこちらが立たずで、幾ら頑張っても速くならない。

 1周目では、SDを掛けるときに一気に速度が上がるパターンを採用。2周目では、SDがある程度進んだ状態で最も速度が上がるパターンを採用。
 いずれもSD初期にSD最速化スクリプトを働かせ、中盤からはSD最長化スクリプトに切り替えた、そしてSD終了が近付くと、手動で試行錯誤した。
 3周目では、過去のどのやり方でも速くならない。

 こうなったら諦めて、スクリプトによる絨毯爆撃を試すべきだろう。
 とはいえスクリプトは実時間の2倍速以下なので、力ずくとはいえそれほど多数のパターンを試すことはできない。これが、TASにおける難点だ。ボードゲームなどでは、毎秒何億という手を読むのがコンピューターだが、TASだと毎秒100フレームぐらいである。
 よって、効果的と思われる狭い範囲を絨毯爆撃するしかない。それには、そこそこ速い走行パターンを「種」として用意せねばならない。
 そのような「種」は・・・もちろん存在するではないか!

 他でもない。1周目と2周目の走りだ。

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

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

<< 前のページ | 次のページ >>

Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4