2005.08.08 移転による変更
GPL AI tutorials | Lesson 2 - Maxrace and Minrace
以下に示すのは、Mark Beckman 氏による AI Tutorials (*) を意訳してみたものです。
某所で勢いで書いた当時のまま直してないところもあると思います。誤字脱字誤訳等々あったらごめんなさい。
GPLRA でリプレイを開けば、トラックの正確な全長を知ることができます。もちろんトラック作者に聞いても分かりますが。
[pit_lane_0] (* ここまでに書かれている内容はとりあえず気にしないで ok *) stall_0 = 100.00 -18.20 (負の値がトラック進行方向に対して右側であることを示しています) stall_1 = 90.00 -18.20 stall_2 = 80.00 -18.20 stall_3 = 70.00 -18.20 stall_4 = 60.00 -18.20 stall_5 = 50.00 -18.20 stall_6 = 40.00 -18.20 stall_7 = 30.00 -18.20 stall_8 = 20.00 -18.20 stall_9 = 10.00 -18.20 (スタート/フィニッシュラインから約 10 メートル) stall_10 = 6788.00 -18.20 (ここからはスタート/フィニッシュラインより後方です) stall_11 = 6778.00 -18.20 stall_12 = 6768.00 -18.20 stall_13 = 6758.00 -18.20 stall_14 = 6748.00 -18.20 stall_15 = 6738.00 -18.20 stall_16 = 6728.00 -18.20 stall_17 = 6718.00 -18.20 stall_18 = 6708.00 -18.20 stall_19 = 6698.00 -18.20 [ starting_grid_0 ] ; 2x2 staggered grid ; polesitter on right ; track length is <6800.33> ; grid front center at <6786.00, 0.00> ; width between boxes 5.00 stall_0 = 6786.0 -2.50 (スタート/フィニッシュラインより 4 メートル後方) stall_1 = 6786.0 2.50 stall_2 = 6776.0 -2.50 (負の値はセンターラインより右側であることを示しています) stall_3 = 6776.0 2.50 (正の値はセンターラインより左側であることを示しています) stall_4 = 6766.0 -2.50 stall_5 = 6766.0 2.50 stall_6 = 6756.0 -2.50 stall_7 = 6756.0 2.50 stall_8 = 6746.0 -2.50 stall_9 = 6746.0 2.50 stall_10 = 6736.0 -2.50 stall_11 = 6736.0 2.50 stall_12 = 6726.0 -2.50 stall_13 = 6726.0 2.50 stall_14 = 6716.0 -2.50 stall_15 = 6716.0 2.50 stall_16 = 6706.0 -2.50 stall_17 = 6706.0 2.50 stall_18 = 6685.0 -2.50 stall_19 = 6685.0 2.50
既存の各トラックの track.ini を使ってテストして学習してみてください。
走り終えたら、スタート/フィニッシュラインより数秒前から 1 周してスタート/フィニッシュラインの数秒後までのリプレイを保存します。私の場合、だいたい、スターティンググリッド終端からターン 1 付近までとしています。ラップタイムも書き留めておきましょう。
ただこのファイルはそのままでは使えません。トラック作成時に .gtk ファイルから .trk ファイルへのコンバートの前に行なうクリーニングという作業が必要です。
* Mark に .trk ファイルをメールすればクリーニングしてくれるようです。
* ここで言う「クリーニング」とは、各 wall の Unk3, Unk4 の値を取り除く(ゼロにする)作業です。
* 実はこのチュートリアルの初版を書いた後ですが、クリーニングを行なうユーティリティがリリースされていますが、これについては、別途 AI 作成手順を html 文書化する際に触れることにします。<チュートリアルとは別に書くつもりです
クリーニングされた .trk ファイルはトラックフォルダへコピーしてください。
ただし、いきなりこれらのファイルを削除してしまうと、これまで正常に動いていたときの情報が失われてしまいますから、まずはこれらをバックアップしておいてから削除するようにしてください。
Race.LP
Pass1.LP
Pass2.LP
Maxrace.LP
Minrace.LP
Pit.LP
では、RPL2LP でテストラップのリプレイを開きましょう。ドライバー名とラップタイムが表示されますね。
「7th surface value not 0」とかいうようなメッセージが表示された場合、そのトラックの .trk ファイルはクリーニングできていないので 3. へ戻ってやり直しです。
さきほど書き留めておいたラップタイムを元に、使用するラップを選択したら、右側で作成する LP ファイルを選び、 Convert をクリックします。これを Race, Pass1, Pass2, Maxrace, Minrace, Pit のそれぞれの LP ファイル用に 6 回繰り返します。
* ここで選択できる LP ファイルは 11 種類ありますが、ここで書いた以外は Nascar 用なので不要です。
なお、まだここではテストですから 1 つのリプレイからすべての LP ファイルを作成したのでかまいません。
LP ファイルができあがったら、トラックに出て、AI 達があなたのテストラップどおりに走行するのを確認してみてください。
AI が使う値 Records (*) は、3 メートルごとの値で、トラックに正確に適合していなければなりません。さもないと、コース中央を 40km/h でのろのろと徐行することになります。
正しい Records 値を得るには、まずはトラックの正確な全長が必要です。例えばそれが 6000 メートルならそれを 3 で割った 2000 ぐらい が Records 値となります。え、2000 ぐらい? そう、この値は 1 か 2 ほどの微調整が必要なのです。例えば 1998, 1999, 2000, 2001, 2002 といった具合に。
調整したらその都度、4. で書いた方法で 6 つの LP ファイルを再びコンバートしなおす必要があります。
これまでの経験では、トラック全長を 3 で割って 1 足した値、例えば全長が 6000 メートルなら 2001 、でいけるパターンが多いです。
そのトラックフォルダに既に LP ファイルがあると、Records 値がそこから読み込まれてしまいます。既に AI がある場合にまずそれらを削除しておかねばならなかったはこのためだったのです。
* Records は RpyToLp では LpRecords のことです。
GPL AI tutorials | Lesson 2 - Maxrace and Minrace