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

2017年01月の記事

<< 前のページ

2017年1月31日(火) 21:51

2周


 連続ヘアピン突破のスクリプトから右半円コーナーリングへと、順調にスクリプトのリレーが進行する。まだ邪魔カーが出現しないこともあり、スムーズだ。想定外の解が出力されるとか、動作不良を起こしたりもしない。

 シケイン突破直後に、しばし悩む。1週目でも気になっていたが、脱出ラインがイン寄りなのと中央寄りなのと、どっちが速いかという問題だ。
 ホームストレート後のジャンプ台に突っ込む場合、コースの中央寄りからになる。シケインをイン寄りに抜ければその場は速いものの、コース中央への進路変更で走行距離が伸びる。初代 F-ZERO では自機の向きというものに関して解像度が低い。正面より僅かに斜めを向いた走行、というのが不可能なのだ。そのため、余計な旋回と直進の繰り返しとなり、算数上の走行距離よりも長くなる。
 だから、進路変更を要するというのは、想像以上のロスになっている可能性がある。

 イン寄りに抜ける最速解と、判定上は少し遅いが中央寄りに抜ける解。両方試したところ、イン寄りに抜ける方が確実に速かった。すなわち、速遅判定はこのままで良い。
 こうして2周目までのタイムは54秒26となった。1周目が28秒76なので、暫定ラップ25秒50だ。

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

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

2017年1月30日(月) 21:07

若干の不具合


 スクリプトは自動運転系なので、修正は簡単。うまく引継ぎが出来て、2周目と1周目のスクリプトが共用できるようになった。

 こうなると後は、既に作ったスクリプトの動作確認という段階に入る。デスウインド2ではそれで膨大な不具合が発覚したのだが。
 ポートタウン2では、棒磁石地帯が終了するヘアピン部分で若干の問題が発生。解自体はすんありマトモに出力されたのだが、ここから右ヘアピンに突入した際のイン攻めが甘い。スクリプトは恐らく想定通りに動作しているが、見た目では究極のイン攻めではない。

 実のところ60分の1秒というのはレースゲームにおいては余りにも時間分解能が低く、それで最適化してもイン攻めが甘いということは普通に良くある。そういう場合はキー操作を更に細分化してパターンを増やす。
 とはいえスクリプトに標準組み込みすれば、場合の数が何十倍とか何百倍になってしまう。
 ここは、最適解の操作パターン前半はそのまま使用し、後半だけバリエーション豊富に変化させて調べるのが妥協点だ。

 今はあくまで試運転のエキスパートクラスなので、解と同時に途中経過も出力するようにだけ改変。デスウインド2の反射技でもやった手法である。
 そのうえで、ひとまず構わず先に進む。解自体は恐らく現状でも基本的には適切なので、3週目以降の出力解も確認しておきたい。

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

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

2017年1月29日(日) 19:27

1周目へ接続


 ブレーキ付きの右コーナー攻略は、一応の成功。後は、45度の左コーナーを抜けると棒磁石地帯である。

 ここはコーナー1つだし減速も不用なので、スクリプトは組み易い。解もすんなり出力される。
 だが、もっと重要な問題に気付いた。これで S-JET が切れると、1周目のスクリプトが使用可能である。というか、使用しなければ意味がない。しかし、使用するためには初期状態が共通でなければならない。
 そこで、バトンタッチを行うスクリプトの直前に行っていた処理を組み込んで、うまく合体させねばならない。直前スクリプトの終了条件を揃えることにより、共通の初期状態を作り出せる。

 何とか成功したと思えたが、いざ1周目のスクリプトを適用すると動かない。自機の向きが違い過ぎる。トップバッターで登場する1周目スクリプトは、短い自動運転によって初期状態を整える働きがある。その想定する入力のバラツキを越えてしまっている。さっそく1周目スクリプトの修正が必要だ。

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

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

2017年1月28日(土) 21:29

時間が掛かる

 この右コーナーを突破すると、最後の左は45度の緩いものなのでエントリーラインは分かり易い。つまり、それだけ単独のスクリプトで処理可能である。
 しかしこの右は最適エントリーが自明ではない。手前の左コーナーと2つ合わせて1つのスクリプトで調査できれば、圧倒的に有利である。

 だが、手前の左コーナーが処理量小さいのに対し、この右コーナーは膨大な組み合わせがある。
 すべては、減速のせいだ。
 減速開始フレームと、減速終了フレーム。パラメーターが2つ追加されれば、組み合わせは数百倍になる。

 モデル自体は適正で、出力された解は気持ち良い走行ラインを描いている。S-JET の周期も悪くない。だが、スクリプトが完了するまで何日掛かるのか分からない。
 モデルを捨てるのは、もったいない。そうすると、最速の可能性があるパラメーターの範囲だけを選択し、見込みのない試行をできるだけ早期に切り捨てる処理が必要になる。最速解を誤って切り捨てないためには、見当を付けるためのスクリプト動作を繰り返さねばならない。

 これからラップを重ねて完走するまでの間に、絞り込みを進めるしかあるまい。既に、進入ラインの座標を解出力で同時出力するようにしてある。これで、進入ラインの適正範囲も切り捨てに活用できる。

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

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

2017年1月27日(金) 21:51

やや順調


 左旋回を行うスクリプトは、5分ぐらいで完了した。出力解も見たところ適切で、ちゃんと動作しているようだ。

 想定より遥かに計算量が少ない。そうすると、コーナー1つだけで完結させるのはもったいない。
 というのは、解は一応適切なのだが、最適かどうかが自明ではない。続く右コーナーに突入するための適正エントリー位置は良く分からない。そのため、かなり広い範囲内を解として認めている。

 両方のコーナーを1つのスクリプトで処理すれば、エントリーラインに悩む必要はなくなる。実際に試走して速いか遅いか確認できるからだ。
 そして更に左旋回すれば S-JET は終了。


 ならば2つと言わず3つとも1つのスクリプトに入れてしまえば、完全な速遅判定が可能になる。
 さすがにこれは計算量が増え過ぎそうだが、もし実用時間内で処理できるならベストなのは間違いない。
 欲張って3コーナーを組み込んだスクリプトを作り、実行。
 その結果は、数時間で終了。でも、解は無し。

 この右コーナーを旋回し切れない。走行ラインが不適切なのではなく、根本的に旋回性能が足りていない。S-JET 噴射で速度が上がっているせいだ。となると、ここは減速が必須となる。
 減速を操作に組み込むと操作パターンが増大するので、3コーナー一体処理は絶対に無理。
 2コーナー一体処理が現実的だろう。

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

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

<< 前のページ

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

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4