カテゴリー
お知らせ

RumiCar シミュレータ v10.1.0 を公開しました

RumiCar シミュレータ v10.1.0 を公開しました。リリースノートは GitHub でも読めます。


v10.1.0

公式レースの結果が、検証する環境の言語設定・エントリーを読んだ順・ブラウザでの選択によって変わりうる箇所を直しました (Stage BI・走行物理は無改変です — 出荷コースの走行と、出荷の公式サンプル大会の結果は変わりません。公式サンプル大会の verifyHash e9f1da0b と凍結ハッシュ f0〜f3 は改修前と同じです)。① 発走グリッドの並び順 — エントリーは提出時刻 (submittedAt) の順に並べ、同じ時刻のときは作者名で並べていましたが、この比較が実行環境の言語設定に依存していたため (実測: トルコ語の環境と英語・日本語の環境で並びが異なる例がありました)、同じ大会でも検証する環境によって並びが変わりえました。作者名まで同じエントリーは読み込んだ順のままでした。いまは言語設定に依存しない文字コードの順で比べ、提出時刻 → 作者名 (無ければ車名) → 車名 → エントリーの中身 (言語・プログラム・車種) の順に決めます。② 締切後のエントリー — 大会の受付締切 (entryWindow.close) より後に提出されたエントリーも出走していました。いまは締切より後の提出を除きます (締切と同時刻の提出は出走します)。締切があるのに提出時刻を読めないエントリーも除きます。時刻はタイムゾーン付きの ISO 8601 (例 2026-10-11T09:00:00+09:00・…Z) だけを読みます (タイムゾーンの無い時刻は環境によって意味が変わるので読みません)。締切そのものを読めない大会は、公式記録の生成ツールが受け付けません (ブラウザでの再実行は締切なしとして扱います)。③ 結果の作者 — 公式記録 (result.json) の各車の作者を車名で引いていたため、同じ車名のエントリーが 2 台あると、2 台目にも 1 台目の作者が付いていました。いまはフィールドでの位置で引きます。④ 書かれていない設定の既定値を、記録の生成と再検証で揃えました — 大会定義に制限時間 (maxSec) が無いと、生成ツールはコースと周回数から求めた時間で走らせる一方、ブラウザの「ローカルで再実行して検証 (参考)」と「👻 あなた vs 世界ベスト」は 180 秒で打ち切っていました。走行領域 (regime) が無いと、生成ツールは卓上で、ブラウザはそのとき選んでいた領域で走らせていました。いまは周回数・領域・クラッシュ規則・車同士の接触・制限時間・物理エンジンなどの既定値を 1 つの関数で決め、生成ツールと「ローカルで再実行して検証 (参考)」が同じ条件で走ります (領域が無ければ卓上、制限時間が無ければコースと周回数から求めた時間)。「👻 あなた vs 世界ベスト」も周回数・領域・クラッシュ規則・制限時間に同じ既定値を使います。result.json には実際に使った制限時間 maxSec が加わり、regime は書かれていなければ null でなく tabletop を記録します (生成ツールが走らせる条件は変わらないので、公式記録の走りと verifyHash は旧版と同じです。変わるのは result.json の regime 欄の値です)。古い版の部品を読み込んだままのページでは、再実行せずに再読込を促します。⑤ 予算クラスのコスト判定 — 性能を一部だけ書いた車種定義 (carDef) は、レースではノーマル FR の性能で残りを埋めて走るのに、予算の判定は別の解き方をしていた (最高速を書いていない定義は、書いた性能を無視して同じ key の車種〔無ければ既定の車〕として数えていた) ため、予算を超える車が通ることがありました。いまはレースで走るのと同じ埋め方をした定義でコストを測ります (例: 加速・アンダーステア・質量だけを書いた定義は 58 → 81)。key の無い車種定義はレースで使われず車種 (carType) の車で走るので、判定もその車種で測ります。性能をすべて書いた車種定義と、車種のキーだけを指定したエントリーのコストは変わりません。このほか、常設の検証ゲートを 77 → 78 本にしました (公式フィールドの並び・締切・作者・既定値・予算判定を検査する wf_bi1_field.mjs)。

このサイトの仕組み (v1.4.0)

一部は GitHub で公開しています:

この仕組みを面白いと思った方へ — 本丸は、ブラウザで動く自動運転シミュレータです。
シミュレータを試す → / GitHub →