Seat Timeに、走りに行く場所をつくる
私たちのUsuiコースでは、ヘアピンの不一致が17件記録されていました。AI Maker Labで開発するブラウザ運転シム、Seat Timeのコースです。実装は私たちのAIコーディングエージェントのチームと進めました。調べ直すと、13件は測定方法による見かけの不一致でした。2件は試作時の点が道路外へ吸着したものです。実際に約13 mずれていたのは、残る2件でした。カーブの形を直す前に、測り方を直す必要がありました。
2026年10月上旬、私たちは車で走れる場所を増やしたいと考えていました。峠道、小さなカートコース、コミュニティ制作のコース。それぞれが候補でした。10月5日から18日の間に、別々の課題も現れました。地図データの不確かさ、忠実すぎるトレース、表示するより走れる状態にする方が難しい形状です。
地図を読む前に、利用条件を読みました
峠道づくりは、利用権の確認から始まりました。国土地理院(GSI)は地図や標高のタイルを公開しています。ただし、条件はレイヤーごとに異なります。私たちは利用可能と確認した標高・ベクトルレイヤーを選び、出典と加工の表示を付けました。航空写真とOpenStreetMapによる比較は内部確認にとどめました。峠コースの配布形状には使っていません。
この区別は、コース生成処理を書く前から必要でした。閲覧できるタイルでも、あらゆる使い方を確認済みとは限りません。国土地理院コンテンツ利用規約は、出典と別途の加工表示を求めています。地理院タイル一覧には分類と個別条件があります。私たちは出典の記載例の厳しい方の表示方法に合わせ、プレイ中もクレジットを表示することにしました。
峠コースの説明と図は、地理院タイルと国土地理院最適化ベクトルタイルをAI Maker Labが加工したものです。国土地理院がコースを制作、推奨したわけではありません。私たちは元データをゲームの形状へ加工しました。
3つの峠道を、必要なときに読み込みます
Harunaが先にあり、UsuiとHakoneがポイント・ツー・ポイントのコースとして加わりました。記録上、Usuiは約12.06 kmの上り、Hakoneは約12.65 kmの下りです。キャッシュしたタイルから道路中心線をつくりました。そこに平滑化した標高プロファイルと、周囲の粗い地形格子を組み合わせます。工学的な近似であり、測量データではありません。出典:地理院タイルと国土地理院のベクトルタイルをAI Maker Labが加工して作成。
コース形状は必要になってから読み込むため、ページの初期バンドルには入りません。峠を増やしても、全訪問者の初回読み込みにその形状全体を加えずに済みます。ファイルサイズが問題になるのは、コースを選ぶときです。道路と一緒に、どこまで周辺地形を持たせるか決める必要がありました。
Hakoneでは、その判断が具体的な数字になりました。圧縮ファイルは174,661 Bで、私たちが選んだ上限は174,702 Bでした。余裕は41バイトです。遠景の地形格子は1 m刻みに量子化しました。これは保存方法の選択であり、地形が1 m精度という意味ではありません。出典:地理院データ由来のコースをAI Maker Labが加工して作成。
Usuiの再集計でも、2つの曲がり角は未解決でした
再集計では、比較側の欠陥と道路のずれを分けられました。13件は、曲がり角の最も内側に当たる頂点のサンプリング方法に由来しました。別の2件は、試作の点が道路外へ吸着した結果です。残る2件の約13 mのずれは、それでは説明できませんでした。出典:地理院データをAI Maker Labが加工したコースに対する内部確認。
キャッシュ済み入力だけで生成をやり直すと、配布ファイルをバイト単位で再現できました。生成手順は再現可能でしたが、曲がり角のずれは未解決でした。判断に必要な精度を持つ、利用可能な公開ベクトル資料がなかったためです。私たちは自分たちで選んだ±15 mの範囲内として受け入れました。
10月6日、未解決の不合格項目を残したまま、コースカードで明示する判断をしました。Usuiの標高には「工学的な近似であり、測量データではありません」と記載しました。Hakoneは写真による確認43件が未検証のままでした。写真の位置合わせ精度が文書化されていなかったためです。
最初のカートコースは、直線が長すぎました
カートでは、まず大きさが問題でした。3クラスのカートがあっても、既存の最小サーキットは全長2.2 km、幅14 mでした。エージェントが最初につくった架空のレイアウトは834 m、1,208 m、1,480 mです。短くはなりましたが、長い直線があり、カートコースらしく見えませんでした。
10月12日、実在のレイアウトを参考にする方法を試しました。エージェントはOpenStreetMapの中心線に、直線と徐々に曲率が変わる曲線を当てはめました。調整後、地図資料に対する平均誤差は約0.5–0.6 mになりました。そして同じ日に、私たちは名称と形状を変更しました。変更後の距離の二乗平均平方根、RMSは、元資料から5.6 m、9.2 m、10.9 mです。
この変更は、私たち自身のリスク判断でした。短い直線と密集したヘアピンは欲しいものです。しかし、忠実なトレースを実在施設の名前で紹介して配布することは避けたいと考えました。形状を変え、コンパクトな特徴を残しながら距離を取ったのです。法的に安全な距離を確定したわけではなく、権利上の問題が解消したとも主張しません。
最初の数字は、当てはめの平均誤差です。RMSは距離を二乗して平均し、平方根を取るため、大きなずれの影響が強くなります。
形状を変えても、クレジットは残しました。「Layout based on © OpenStreetMap contributors (ODbL).」OpenStreetMapの著作権ページには、Open Database Licenseと出典表示の義務が説明されています。形状を動かしても、完全な独自制作にはなりません。出発点を消せるわけでもありません。
コミュニティのコースは、まず表示だけにしました
コミュニティコースの実験は、バイナリをダウンロードする前の権利確認から始めました。対象はデスクトップ用シム、Assetto Corsa向けのプロジェクトです。独自アセットまで許諾が明確だったのは、OVER99K/assetto-hellvikでした。Assetto Hellvik contributorsによるMITライセンスのプロジェクトです。別の候補は、テクスチャの由来が未解決で採用に至りませんでした。
10月13日の最初のインポートは、静的なコース形状だけをブラウザ向けの中立形式へ変換しました。入力バージョンを固定し、modのコードは実行していません。元のシムの物理パラメーターも変換していません。許諾の対象は、そのコミュニティ作品だけです。任意のコースや公式ゲームアセットは対象外です。変換した形状を確認する間、表示専用にしていました。
座標変換は、設定不明のエクスポーターを信じず、実測で確認しました。公開された24個の制御点から変換後の中心線までの最大距離は0.111 mでした。この結果から、変換後の形状がコミュニティの元レイアウトとよく一致していると確認できました。実在施設との一致を測った数字ではありません。私たちの取り組みは、施設やAssetto Corsaの権利者と提携関係になく、推奨も受けていません。
別の性能改善では、インポーターで多用する幾何計算から一時配列を取り除きました。重み付きのメモリ割り当て量は、シミュレーション1ステップ当たり575.4 kBから87.4 kBへ減りました。演算と呼び出し順序は維持しています。
10月18日までに、道路は見た目の先へ進みました
地形の修正は10月17日に入りました。Harunaでは道路上の各地点から個別に地面を外へ伸ばしていました。そのため、急カーブや折り返しで隣の帯と重なっていました。連続した1つの高さ場へ置き換え、検出された積層面は212,908から0になりました。地理院データを加工した私たちの形状での測定です。UsuiとHakoneでも、対応する検出項目が解消しました。
10月18日には、コミュニティから取り込んだコースを、標準カートで走れるようにしました。接触判定は私たち自身のモデルです。グリップは元コースの路面定義にある比率を使いました。車両やその物理は取り込んでいません。次の問題は、目に見える隙間より小さいものでした。プラットフォームの数学関数によって、壁の向きの最終ビットが変わっていたのです。
その計算を私たちの純粋な算術ルーチンへ切り替えました。生成した接触データとレポートは、macOS arm64とLinux arm64でバイト単位に一致しました。記録された結果の対象は、この2環境だけです。
同じ週に、Graphic Streetも入りました
10月10日、Graphic Streetが標準の見た目になりました。Classicも選択できます。段階的な陰影とインク風の輪郭線で、サーキットの表現が変わりました。筆跡のように見えた効果の1つは、実際には影の不具合でした。ノイズを加えたサンプル回転と、急な陰影の閾値が重なり、筋が生じていました。回転を固定して、その原因を取り除きました。後続の変更で峠以外のサーキットにも広がりました。
後日、街にも同じ確認が必要でした
10月19日、街の縁石の壁面チェックは37,782回中3,076件の欠落から、37,781回中0件になりました。10月24日には、事前生成した形状の再利用前に全入力を確認する変更が入りました。古い場合は再生成します。
まだ自分たちで走る必要がある場所
走行確認の空白は残っていました。カートのレイアウトは、カートで手動走行していません。形状変更後の版も、統合前にブラウザで走っていませんでした。汎用の自動運転機能もカートを運転できません。記録上は、3つの峠コースの本番ビルド走行と、折り返しの目視確認も未完了です。Harunaでは900 m先の詳細度切り替えで、景色が急に変わる問題も残っていました。
計画として、UsuiにはGSI DEM1Aの標高タイル、Hakoneには神奈川県の航空レーザ点群を調べたいと考えていました。これらの疑問に対する完成済みの解決策ではありません。測量並みの再現を約束するものでもありません。より良いデータにも、対象範囲、利用条件、路面の確認が必要です。
次に考えたのは、この道路に雨が降ると何が起きるのか、そして駐車した車がなぜ動くのかでした。
前回:最初のエンジンは8ビットのような音でした。次回:雨と、じわじわ動く駐車中の車。
注記と出典
測定値 — ヘアピンの再集計、距離、圧縮サイズ、カートのずれ、座標変換、メモリ割り当て、地形の結果は、私たちの開発記録によります。Hakoneのバイト数はBun 1.4.2とgzip -9での結果です。割り当て量の証拠は、負荷のある共有M1 Maxで得たものです。一時メモリの生成量を測っており、走行速度やスマートフォン性能の測定ではありません。カートの平均値とRMSは異なる統計量です。本記事のために再実行した測定ではなく、当時の記録を使っています。
選択した設計値 — 174,702 Bの上限、遠景地形の1 m刻み、Usuiの±15 mの受け入れ範囲は、私たちの選択です。元データの精度を保証しません。私たちの解釈 — カートの形状変更は避けたいリスクを下げる判断であり、法的な権利処理の完了ではありません。地形と影の原因説明は、開発中の調査に基づきます。
資料に基づく事実 — 峠の資料は、地理院タイルの標高タイルと国土地理院最適化ベクトルタイルをAI Maker Labが加工して作成しました。利用規約、タイル一覧、出典表示の例を参照できます。国土地理院による制作や推奨ではありません。カートのレイアウト:Layout based on © OpenStreetMap contributors (ODbL)。著作権とライセンスを参照できます。
未走行 — 上記のカートと峠の未完了確認は、この開発記録に残る空白です。計画中の資料 — DEM1Aと神奈川県の点群は、その空白を調べる候補であり、完了した改善ではありません。時系列 — 開発記録では、地形修正は10月17日、走行可能なインポートと数学処理の修正は10月18日です。街の後続変更は2026年10月19日と24日です。
開示 — 私たちはAI Maker Labで、AIコーディングエージェントとSeat Timeを開発しています。本記事の調査整理、執筆、ローカライズにもAIを使用しました。コミュニティコースのクレジットは、公開リポジトリとMITライセンスに基づきます。以下に英語の原文通知をそのまま掲載します。
MIT通知 — Assetto Hellvik contributors
MIT License
Copyright (c) 2026 Assetto Hellvik contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.