VRC Rogue 2026/05/23


概要

main で実機確認できた初期同期の成功状態を基準として固定し、fix/dungeon-combat の差分を段階的に取り込むための整理を行いました。


変更点

同期

  • 初期同期の成功状態を基準として整理しました
    • 2 クライアントで同一マップ形状、同一 seed、同一 floor が表示される状態を main の比較基準として扱うようにしました。
    • 非オーナー参加時でも Start 後の盤面同期が入ることを、デバッグログと実機表示の両方で確認しました。
  • 段階取り込み用ブランチを作成しました
    • main の成功状態から integrate/dungeon-sync-steps を切り、探索的な同期変更を本線と分離しました。
    • 基準コミットを維持したまま、取り込み単位ごとに検証できる状態にしました。

ドキュメント

  • 同期取り込みメモを追加しました
    • 同期取り込み用の計画メモを追加し、現状の成功範囲、fix/dungeon-combat の変更意図、取り込み順、検証項目を整理しました。
    • fix/dungeon-combat を完成ブランチではなく、FlatBuffer8 切り分けを含む検証ブランチとして扱う前提を明文化しました。
  • TODO の同期項目を現状に合わせて更新しました
    • 初期同期で確認済みの項目と、移動後・戦闘後・late joiner・owner 離脱など未確認の項目を分けて記載しました。
    • DungeonGenerator の scalar int pack 化を最初の取り込み候補として残しました。

修正

  • 同期差分の見通しが悪く、どこから取り込むべきか判断しづらい
    • 原因: fix/dungeon-combat には本線候補の payload 改修と、DEBUG_DISABLE_*MinimalSyncProbe のような切り分け専用変更が混在していました。
    • 対応: 同期基準、採用候補、保留、調査専用の変更を資料上で分離し、DungeonGenerator から段階取り込みする順序を固定しました。

設計メモ

  • 同期修正は cherry-pick ではなく目的単位で取り込む
    • fix/dungeon-combat 先頭コミットは probe と同期停止フラグを含むため、そのまま持ち込まず、payload 安全化のような本線候補だけを段階的に移す方針にしました。

次に確認すること

  • DungeonGenerator.csstring packed sync を scalar int words へ置き換える Stage 1 を、この統合作業ブランチで実装する必要があります。
  • Stage 1 適用後に Build & Test 2 クライアントで、seed / floor 一致、盤面一致、1 手移動後の追随を確認する必要があります。
  • GameManager 側 packed sync の採用可否は、DEBUG_DISABLE_* を除外した状態で別段階として判断する必要があります。

vrchat udonsharp unity gamedev devlog