「sim-grade」を目指して:不足を書き出し、タイヤを作り直す
9月30日、私たちはSeat Timeに足りないものを書き出しました。AI Maker LabでAIコーディングエージェントと作っている、私たちのブラウザー用ドライビングシムです。コードと開発記録の大半は、Claude CodeとOrcaのセッションが書きました。方針を決め、判断したのは私たちです。簡略化したタイヤモデル、Physics Lab、成功する294件のテストはすでにありました。それでも、自分たちにとって「sim-grade」が何を意味するのか、説明できませんでした。
まずは、エージェントが順に進められる作業表が欲しかったのです。その先に、より完全なタイヤモデルをブラウザーで動かす目標がありました。移植した計算は、独立した評価実装と3e-11 N未満の差で一致しました。コードについては答えが出ました。しかし、実在するタイヤを表しているかは、まだ別の問題でした。
不足を20行に書き出しました
不足一覧には、物理の20分野を並べました。商用シムの公開資料に記載された仕組みを参照しています。各行には、現状、公開資料の記述、不足、テスト方法を分けて書きました。未確認の記述には、その印を残しました。これは作業表であり、順位表ではありません。
修正は、失敗するテストから始めることにしました。エージェントは既知の失敗をit.failsで残し、原因を直して通常のテストに変えます。最優先の修正はデフ、ブレーキ、空力の3件でした。次の優先度では、時間刻みを修正しました。成功するテストは差し引き59件増え、Labの実験は23件になりました。
熱の修正は、向きを間違えていました
タイヤのショルダー荷重を直すはずの変更に、誤りがありました。車両の横方向の軸を読み違えていたのです。レビューで見つかり、その日のうちに元へ戻しました。今は、内向きの横力が外側ショルダーに荷重をかけることを、左右の車輪で確認するテストがあります。
成功欄を増やすより、この修正の撤回が重要でした。記録上、2回目のレビューは静的な確認です。変更を読みましたが、独立したテスト実行はしていません。
自分たちを確かめる道具を作りました
プレイヤー車両を移す前に、テレメトリー取り込み、リプレイ比較、オフラインのパラメーター調整を用意しました。モデルを別枠で試すため、参照車両も3台作りました。ただし、そのパラメーターには出典不明の値が多数ありました。「参照車両」という名前が、実測済みの車を意味するわけではありません。
最初の段階では、記録したチェックポイントでプレイヤー車両がビット単位で一致しました。次の段階では、トルクを加えない試験のエネルギーのずれが改善しました。400 Hzで+0.2311%から−0.000142%になりました。17台それぞれ10,000ステップの試験では、保存状態も正確に復元できました。計算基盤の確認としては有用です。実路のグリップを測った結果ではありません。
式は一致しても、タイヤの答えは出ませんでした
エージェントにはMagic Formula 6.1の実装を任せました。PacejkaのTire and Vehicle Dynamicsに関連するタイヤモデルです。実行時には.tir形式のパラメーターファイルを読みます。制動と旋回の力を個別にも組み合わせても扱い、荷重、空気圧、キャンバー、ターンスリップ、セルフアライニングトルクも含めました。低速と後退時の処理も対象です。
比較ごとに、確認したものは異なります。以前の自作評価実装との差は、力の最大値で5.46e-12 Nでした。MFeval.jl由来の2,696点では、前後力が最大5.5e-12 N、横力が最大2.8e-11 Nでした。ターンスリップなしのセルフアライニングトルク差は3.1e-13 N·mです。ターンスリップを含むトルクには相違点も記録しました。比較先の版に未実装部分があり、私たちは書籍の式に従いました。
別のパラメーター調整試験では、正規化した許容誤差を0.05と決めました。調整に使わず残した点の誤差は、前後方向0.0414、横方向0.0336でした。無次元の調整誤差と、N単位の力の差は同じ尺度では比べられません。微小な差は、確認した計算が一致する証拠でした。欠けていた実タイヤの測定値は、そこからは得られません。
参照車両から始め、プレイヤー車両へ移しました
完全なモデルにすると、参照GT3の結果は大きく変わりました。定常円旋回の結果は1.479 gから1.066 gへ下がりました。その間、プレイヤー車両17台は簡略モデルのままでした。別枠にしたことで、全車へ適用する前に変化を確認できました。
移行では、それまでの挙動を保つ方針を選びました。各プレイヤー車両に、その車の旧モデルの曲線を基にした合成パラメーターを当てはめました。合否判定の測定値を調整へ流用してはいません。17台すべてが従来の許容範囲に収まりました。確認した指標の変化は、決めていた3%以内です。ラップタイムの差も0.7%以内でした。この段階では、プレイヤー車両で独立したキャンバースピンの物理表現を使わない選択もしました。タイヤの傾きによるスピン効果を、別に扱う仕組みです。実測タイヤデータは導入していません。ハードウェアで走行した記録もありません。
モード切替で横力が跳ねました
移行中に、ターンスリップの不連続が見つかりました。これは、タイヤの向きが回転するときの応答です。入力がゼロでなくなると、コードがモードを切り替えていました。参照タイヤの横力は、その境界で−147 Nから−12 Nへ跳びました。修正前後の値ではなく、不具合の境界を挟んだ値です。モードを維持するよう変更しました。
もう一つは、荷重による操舵のたわみを経由するフィードバックでした。そのたわみが操舵速度の計算へ戻っていました。時間刻みで割るため、刻みを小さくするとループの影響が強まります。そこで、指令した車輪角から操舵速度を求めるようにしました。時間刻みを半分にしたときのGT3のアンダーステア誤差は、7.18から0.0002 deg/gへ減りました。単位は、横加速度に対する操舵応答の角度を表します。
曲線だけでなく、タイヤの状態も移しました
ガス、温度、摩耗、接地質量の過渡応答を、参照タイヤからプレイヤー車両へ移しました。過渡応答とは、路面との接触部に設定した質量の、短い時間での応答です。ここでも実測タイヤデータは採用していません。プレイヤー車両の状態を移す段階では、障壁への最大力の収束指標が0.080から0.0050へ改善しました。一方、ある車のラックトルクは+7.17%変化し、その変化を受け入れました。前述の3%は最初の移行段階の基準であり、その後の全変更に適用した数字ではありません。
重くなったテストには、最初のピークを求める計算結果のキャッシュで対応しました。記録されたQA実行では、140チェックポイントの挙動が一致しました。収束テストのファイル群は1.105倍速くなりました。これはブラウザーのフレームレート向上を示す値ではありません。その後の段階では、シャシー、操舵、空力、ブレーキ、駆動系へ作業が広がりました。
9種類のコンパウンドが、ほぼ同じ応答でした
後の開発記録には、9種類のコンパウンドが「felt nearly identical」とあります。「感触がほぼ同じだった」という意味です。ただし、記録には運転者の記載がありません。数値上の問題は明確でした。主に最大グリップを変えるだけで、摩耗率もトレッドモデルへ届いていませんでした。
ロードカーでは、スリップ角1°での横力を垂直荷重で割った値が0.33〜0.35に集中していました。個別の特性を与えると、範囲は0.34〜0.57へ広がりました。この変更はブラウザーで試走していません。曲線の違いは示せても、感触が変わったとはまだ言えませんでした。
評価表にも、証拠のルールが必要でした
評価表は、第1話:スタートラインで紹介したPhysics Labから発展しました。改訂時には、プレイヤー車両と参照車両を分けて評価しました。参照タイヤの進歩を、プレイヤー車両の裏付けと取り違えないためです。
証拠の扱いも決めました。10月2日には、実データが得られない場合、高忠実度シミュレーションを内部の「測定」区分へ含めました。ただし、それはシミュレーションの証拠であり、物理的な実測ではありません。10月12日には、メーカー以外の公開資料を、出典付きの推定に限って使う方針にしました。検証用データには使いません。
許容値の変更を禁じたわけではありません。私たちは4件の改訂を明示的に承認しました。GT3の暖機温度の下限を85°Cから83.5°Cへ変えた例もあります。一方、不具合には原因側で対処しました。定常円旋回の結果は0.785から0.8005 gへ回復し、決めていた下限0.80 gを満たしました。キャンバー補正の二重計上を除くと、カートの縁石上のスリップ指標は0.180から0.025へ減りました。プランクのダンパー計算を陰解法にすると、記録上の加速度は29.5から24.8 m/s²へ下がりました。
タイヤの暫定最高評価を取り下げました
タイヤの項目には、暫定で最高評価を付けていました。しかし後に、参照パラメーターファイルは出典のないサンプルだと分かりました。元の測定の来歴も不明です。別の場所にある同名ファイルとは、144個の係数が異なっていました。私たちは暫定評価を取り下げました。利用可能なライセンスは、測定の出所を保証しませんでした。
式と移行手順は改善しましたが、タイヤデータの問題は残りました。解析的に決めた範囲の多くは、まだモデルの自己整合性を確認していたのです。次の物理の課題は、公開データを探し、条件を揃えて比較することでした。
Seat Timeを運転する。開くのは当時の版ではなく、現在のゲームです。Physics Labにはサインインとアクセス権が必要です。日誌の次回は、耳で分かる問題に移ります。第3話:最初のエンジンは8ビット風の音でした。
注記と出典
測定値 — テスト件数、エネルギーのずれ、評価実装との差、移行範囲、ラップタイム、バグ、キャッシュ、コンパウンドの値は、2026年9〜10月の開発記録を要約したものです。私たち自身のテスト出力であり、独立した検証ではありません。図は記録値の図解です。新たな測定でも、当時の画面キャプチャーでもありません。
設計上の選択値 — 正規化した許容誤差0.05、移行の3%基準、評価方法、合否の範囲は私たちが決めました。証拠の区分もプロジェクトのルールです。後に受け入れたラックトルクの変化は、別の移行段階に属します。
出典のある事実 — Hans B. Pacejka, Tire and Vehicle Dynamics, 第3版、Elsevier、2012年(出版社の書籍情報)。Marco Furlan TassaraによるMFevalは、Magic Formulaのパラメーターファイルを評価する実装です。BSD-3-Clauseライセンスで提供されています。matheusftのMFeval.jl — High-Performance Pacejka Magic Formula Tyre Model Implementationにも謝意を表します。ライセンスにはMITの表題とクレジットの依頼があります。これらの紹介は推薦や支持を意味しません。パラメーターファイルの来歴に関する結論は、私たちの当時の調査記録です。評価実装が実測タイヤを提供するという主張ではありません。
私たちの解釈 — 評価実装との一致は、確認した式の実装を裏付けます。実際のグリップを証明するものではありません。不足一覧と評価表は作業を追うためのもので、商用シムとの同等性を示してはいません。
ハードウェア走行は未確認 — 移行時のハードウェア走行記録はありません。コンパウンド変更はブラウザーでも試走していません。「felt nearly identical」は開発記録の表現であり、ここでは運転者を特定していません。本記事の執筆と翻訳にもAIの支援を使いました。