RumiCar シミュレータ v10.0.0 を公開しました。リリースノートは GitHub でも読めます。
v10.0.0
公式レースとライブ (自動復帰 ON) で逆走した車をその場で向き直すようにし、周回の数え方を直し、🏅 ランキングの不具合を直しました (Stage BH・走行物理の改修です — 逆走した車のいる走行 (向き直しが働く条件のとき)、フィニッシュ線を逆向きに通る走り、小さいコースやトライアングルで周回を数え漏らしていた走りは、旧版と同じ結果になりません。逆走もフィニッシュ線の逆向きの通過も数え漏れも無かった走りは変わりません。公式サンプル大会の verifyHash は c731ecce → e9f1da0b、凍結ハッシュ f2 は刻み直し、f0・f1・f3 は改修前と同じです)。① 周回を「借り」で数えるようにしました — v9.0.0 までは、フィニッシュ線の先へ少し (最大 0.25 m) 離れたことがあり、線を負側 → 正側へ通れば 1 周と数えていたので、逆向きに線を戻ってもう一度順方向に通ると、回っていなくても 1 周になりました (出荷の公式サンプル大会の 1 位はコースを 1 周していませんでした=走った道のりは 1 周の 19.8%。線の前後を往復するだけのプログラムが 3 周を 10.5 秒で「完走」)。逆に小さいコース (舵角限界ベンチの道幅 3.5 台分の 3 本) では、内側を走ると線の先で 0.25 m に届かず、正しく回った周回を数え漏らし、出荷「トライアングル」はフィニッシュ線分とスタートの向きが直交から 60° ずれていたため、正しく回っても 1 周も数えられませんでした。いまは、フィニッシュ線を逆向きに通るたびに「借り」が 1 増え、順方向の通過は借りがあればそれを 1 返すだけで数えず、借りが 0 のときに順方向に線分の中を通ったときだけ 1 周です (往復・逆走では増えません)。線の先へ離れる条件は廃止しました。線の手前から発走した車の最初の順方向の通過は数えません (車ごとに 1 回)。線の上か先から発走した車は最初の通過が 1 周目です (v9.0.0 までと同じ規約。∴ スタートが線の 1.126 m 先にあるトライアングルの 1 周目は 83% の距離で、その短い 1 周目のタイムはベストラップ・練習ベストに残ります)。数える瞬間は従来と同じなので、もともと正しく数えていた走りは計上の時刻もラップタイムも 1 ビットも変わりません。効果 (公式レース 出荷 66+投稿 2 コース × 1〜6 台・3 周): 回り切っていない周回を含む計上 213 → 0 台 (完走車のうち 148 → 0 台)・ライブ 741 → 0 台、数え漏れ 公式レース 22 → 0 台・ライブ 145 → 0 台。自作コースを作る人へ: フィニッシュ線は、走路を壁から壁 (仕切り) まで塞ぎ、1 本の走路だけを横切るように引いてください。間に壁の無い行きと戻りの 2 本の走路を 1 本の線でまたぐ自作コースでは、1 周のうちに順・逆 1 回ずつ通るので 1 周も数えなくなります (v9.0.0 までは数えていました=線の引き直しが要ります)。線が走路を塞いでいないコースで、線の横を通り抜けた後に切り返しで線を踏み直すだけの周も数えません。v9.0.0 までに往復・逆走で保存された練習ベスト (例: スピードウェイ 3.20 秒) は消さずに残り、「(当時 v9.0.0)」のように版が添えられますが、正しい周回では更新できないことがあります。② 逆走した車をその場で向き直します — 逆走そのものは設計どおりの帰結です (プログラムは前方 ToF×3 だけで走り、コースの進行方向を知れません。切り返し・接触での回頭・プログラム自身の操舵や後退で向きが反転すると、開いている廊下をそのまま逆向きに走り続けます。実機でも同じです)。v9.0.0 の公式レース (3 秒ペナルティ復帰・1〜6 台) では 動力学 6.3%・クラシック 4.6%・精密 v2 23.4% の車が 5 車長以上逆走し、完走できなかった車の 28〜70% を占めていました (1 台だけでも起きます)。いまは「衝突で自動復帰(切り返し)」ON のライブと、3 秒ペナルティ復帰の公式レースで、走行中の車が、車体の向きがその場所の進行方向と逆 (90° 超) のまま進行方向と逆へ正味 5 車長進むと、コース係が車を置き直すのと同じようにその場で向きを進行方向へ直し、速度を 0 にします (物理的な動きではありません。車体の中心か後輪軸の中心を保って回し、壁と交差する・どれかの他車との重なりを増やす・直した後の向きがその位置の進行方向と合わない・基準点がフィニッシュ線を順方向に越える置き直しは見送って次の機会に試します。走路の外では直しません)。公式レースでは切り返しと同じ 1 回 3 秒のペナルティで、レースレポートの「クラッシュ」の欄は切り返し+向き直しの合計になり、向き直しがあれば回数の内訳を添えます。ライブでは車ごとのシリアル出力に「【逆走】向きを進行方向へ直しました」と 1 行出ます。働くのは進行方向が分かる出荷コース 64 本 (中心線を持つ周回 36 本と峠 24 本、内周と外周の輪 2 本を共通の中心から等しい角度で刻んだ形の 4 本〔丸の中の四角・四角の中の丸・六角と三角・うねりと円〕とその壁をそのまま写したコース) だけで、自作コース・投稿コース・リタイア規則・自動復帰 OFF では働きません (中心線を持つ出荷コースも、コースエディタで開いて ✔適用したコースや大会定義に同梱したコースでは中心線が外れるので、輪の形の 4 本を除き働きません)。発走グリッドの後列で、置かれた時点から進行方向と逆を向いている車 (3 エンジンの延べ 1,077 台中 33 台) は、そのうち 19 台が発走から 20 秒以内 (多くは 2〜5 秒後) に向きを直され、公式レースではその 1 回も 3 秒と数えます (配置は変えていません)。自分で U ターンやスピンを繰り返すプログラムは向き直しも繰り返されます (ドリフトのサンプル 6 台のナローシケインで 1 台に最大 15 回)。向き直しはプログラムから見えません (前方 3 センサーの値が急に変わるだけ)。走った距離や地図を覚えるプログラムは、位置を見失うことがあります。効果 (公式レース・ペナルティ復帰・1〜6 台。「改修前」は ① を直した後の版): 正しく完走した車 (回り切っていない周回を含まない完走) 動力学 88.7 → 91.9%・クラシック 91.3 → 94.0%・精密 v2 75.9 → 85.9% (①②を合わせると v9.0.0 の 85.9・89.3・72.3% から)、逆走距離の合計は 5.3% に、走行の終わりに 3 車長以上逆走中の車は 163 → 9 台、向き直しは 332 台・485 回 (1 台の最大 7 回)。正しく走っている車を直した例は、進行方向の場を使わない独立の測定で 4,159 回中 0 件。1 台で走るときも働きます (1 台の公式レース 396 本のうち ② で結果が変わるのは 5 本。① では別に 1 台 408 本中 8 本が変わっています)。対象外のリタイア規則の公式レース 1,188 本と投稿コースの 72 本は、① を直した版と結果も毎 tick の状態も全部一致します (① は対象外のコース・規則にも効きます)。③ 🏅 ランキング・🏆 公式レース・👻 の不具合を直しました (走行物理には触れていません): (a) 起動直後 (大会の一覧が届く前) に 🏅 や 🏆 を開くと「まだ検証済の公式記録がありません」のまま残っていたのを直しました (届くまで「読み込み中」・届けば自動で出ます。起動時の「記録が抜かれています」の通知も出ます)。(b) 一覧や大会の記録を取得できなかったとき (GitHub のレート制限・オフライン) は「まだありません」ではなく取得できていないと表示し、取得できなかった大会の数も出します (大会の置き場が未作成の 404 は従来どおりの文言です)。(c) 👻 あなた vs 世界ベスト が、同じ eventId を名乗る別の大会のコース・エントリーで走ることがあったのを直しました (eventId の無い大会でも走ります)。「参加」「n 戦」は大会ごとに数えます。(d) 🏆 で大会を続けて選んだとき、前の大会の詳細が後から上書きすることがあったのを直しました。(e) 壊れた結果ファイルが 1 件あってもランキング全体は出ます。④ 説明の訂正: 自動復帰の切り返しの舵は「前方センサーで開いた側へ」ではなく 真後ろ → 左 → 右 の順です (以前の説明が誤り)/逆走は「STUCK の切り返しで増える」わけではありません (v9.0.0 の説明が誤り。v8.9.0 と同じ述語・同じ母集団で比べると逆走した車の総数は増えず、始まりの内訳が入れ替わっただけ)/Python 版のサンプル 3 本は C 版と同じ走りとは限りません (Python 版 Apex Hunter には C 版の行き止まり脱出が無い。コードは変えていません)/自己位置推定サンプルの説明の数字を実測に合わせました (前方検知 96% → 85% ほか)/「ナローシケインは実態容量 4 台」を削除。時間切れの見立ては、向き直しのあった車には回数を出し、「設定が過大」と断定しない文にしました。物理モデル解説 (physics_model.md) に §14.1 (向き直し)・§14.2 (周回の数え方) を、アプリ内の「🔬 物理モデル」の Q&A に 2 件を足しました。【重要・再現しなくなるもの】 逆走した車のいる走行 (向き直しが働く条件のとき)、フィニッシュ線を逆向きに通る走り、小さいコース (舵角限界ベンチの道幅 3.5 台分の 3 本) やトライアングルで周回を数え漏らしていた走りは、旧版と同じ結果になりません (版付きの記録は当時の版の表記で保持されます)。出荷の公式サンプル大会は、1 周していなかった 1 位が ① で時間切れになり (完走 3 → 2 台)、② で 3 台とも完走になりました (3 台目は時間切れ → 177.1 秒で完走・ペナルティ 57 秒)。凍結ハッシュ f2 (競技サーキット・精密 v2・3 台) は完走 1 → 3 台で刻み直し、f0・f1・f3 は不変です。ライブの ▶ で実際に走り出せる台数 (実走容量) が変わった出荷コースが 1 本あります (舵角限界ベンチ R_out/R_min=1.02〔道幅 3.5 台分〕の精密 v2: 5 → 6 台。容量は自動復帰の設定に関係なくペナルティ復帰のレースで測るので、自動復帰 OFF のライブでもこのコースは 6 台で走り出します)。トライアングルで周回が数えられるようになり、小さいコースの数え漏れが無くなりました。置き直しで、軌跡に短い線 (最大 0.68 車長) が 1 本入ります。このほか、検証の仕組みを整えました (常設の検証ゲートは 74 → 77 本・実ブラウザの検査は 42 → 44 本。周回の数え方は車の位置だけを見る 2 つの独立の測定で、向き直しは進行方向の場を使わない独立の測定で、説明に書いた数字は product を動かした実測で照合します)。
