====================================================================
LP 用に、②の丸テーブルのまわりを「直す前・直した後」で録画した
依頼：20261029_26_LP用に店2の直す前と後を録画する.md
2026-10-29 21:02　check-in：cs:41（録画のしくみだけ）　最後の状態：cs:41 head・保留 0
====================================================================

結論

  ・始める前の確かめ5つは、すべて合格だった。
  ・Unity Recorder は入っていなかった。足していない（理由は 2 章）。代わりに、撮るための小さなスクリプト2つを足して cs:41 で check-in した。
    店・人・ロボットのコードと設定は変えていない。
  ・2回とも completed で、録画は 2 本ずつ（寄り・全体）。どれも 3751 コマ・125.03 秒・30 コマ/秒・H.264・CRF 16・yuv420p。
  ・直す前の回では、丸テーブルのまわりの 60 秒の「動けなくなった」が 8 回あった。p0check（画面なし）と時刻も場所も同じ。
    ロボット2 が往復4で、t=1021.2〜1527.5 秒、抜けられずに待っている。
  ・直した後の回では、同じ範囲の 60 秒の「動けなくなった」は 0。
  ・ただし、直した後の 900〜1650 秒には「片方が T05・T06 に止まっている間に、もう1台が間を抜ける」場面はなかった（4 章の 3）。
  ・ロボットの位置（5 秒ごと）は、画面なしの回とまったく同じだった（直した後は t=6290 秒まで、直す前は t=6550 秒まで）。
    録画した 900〜1650 秒の動きは、録画で変わっていない。そのあとはずれていき、回全体の数は少し違う（4 章の 5）。
  ・直す前の回のフォルダ名が直した後と同じになってしまうので、ラベルを lpdemobefore にした（決めてほしいこと 1）。
  ・台帳は 667 → 669 行（追記だけ）。先頭 667 行の md5 は始める前と同じ。


====================================================================
1. 始める前の確かめ（5つとも合格。20:40 ごろ）
====================================================================

  1. Unity エディタ：起動していない（Unity Hub だけが起動していた）
  2. /Volumes/KIOXIA：マウントされている。unity_ledger_v1.lock：なし
  3. 台帳 unity_ledger_v1.csv：667 行・md5 c7e561fec03ba49cb6cf5fa44628fe5e（依頼と同じ）
  4. ServiceSim の保留：0（cs:40 head）
  5. iCloud の unity/site_copy_dffc100b269c/ と unity/site_copy_08db8a0d067c/：どちらもある
  追加の確かめ：cs:39 と cs:40 の違いは、params・summary.json・6店の JSON と地図の 14 ファイルだけ。コードは同じ（前提どおり）


====================================================================
2. 足したものと cs 番号
====================================================================

  cs:41（4 ファイル。コメント「LP用の録画のしくみを足す…」）
    Assets/ServiceSim/Recording/SimTimeRecorder.cs（＋.meta）
      ・起動の引数に -ssRecord を付けたときだけ動く。夜の回・段階B・エディタでの Play では何もしない。シーンにも置いていない
      ・撮る時刻は店の中の時刻（stops.csv の t_s と同じ。Time.time − 回し始めの時刻）。900〜1650 秒を 0.2 秒ごとに撮る
        回は今までどおり 1コマ 0.05 秒で進むので、撮る重さで変わるのは実時間だけ（4 コマに1回撮る）
      ・真上・正投影の録画用カメラを自分で作る（ふだんは切っておき、撮るコマだけ描く）。背景色・映すものは Main Camera の設定を写す。
        画面の上の文字（OnGUI）は入らない。暗い膜・ぼかし・文字の重ねは入れていない
      ・描いた絵をそのまま ffmpeg に渡す。設定は libx264・preset slow・CRF 16・yuv420p・30 コマ/秒
      ・その回の出力フォルダの下に recordings/ を作って書く。recordings/ がもうあれば撮らない（上書きしない）
    Assets/ServiceSim/Editor/RecordBuild.cs（＋.meta）
      ・録画用の実行ファイルを、夜の実行ファイル（Builds/headless）とは別の場所に作る（中身の作り方は BuildHeadless と同じ）。
        Builds/headless（cs:40 の夜用）は触っていない

  Unity Recorder を足さなかった理由
    ・p0check・p0fixcheck は実行ファイル（player）で回した回。同じ道で回さないと比べられない
    ・Recorder はエディタの中でしか動かず、player では撮れない
    ・使い道がないので足さなかった。パッケージ（manifest.json）は変えていない

  回し方
    ・実行ファイル：-batchmode だけで、-nographics は付けない（描くため。HUD・1倍の待ちは -batchmode なので動かない）
      引数 -ssCondition fam_p0_s2_r2_a19 -ssSeed 0 -ssNight 20261029 -ssParallel 1 -ssRunning 1
      　　 -ssPassBy on -ssRuleB off -ssStandbyReturn on（今の標準）
    ・ffmpeg：/opt/homebrew/Caskroom/miniforge/base/envs/ros_env/bin/ffmpeg（7.1.1。PATH にはなかったので、このパスを渡した）

  最後の状態：cs:41 head・保留 0（cm status --machinereadable は STATUS 行だけ）


====================================================================
3. 2回の run_stem と録画ファイル
====================================================================

  置き場所：/Volumes/KIOXIA/r2r2r-data/service_sim/unity/{run_stem}/recordings/
  2回とも、映す範囲・向き・カメラ・光・品質は同じ（同じスクリプト・同じ引数・同じシーン）

  直した後（店の形の版 08db8a0d067c・cs:41・保留 0）
    run_stem：20261029_lpdemo_cs41_fam_p0_r2_s0_passon_sbret（completed・実時間 3.5 分・build_id cs41_20261029_2050）
    20261029_2050_lpdemo_after_A_close.mp4   1680×1080・125.03 秒・3751 コマ・2,027,031 バイト
    20261029_2050_lpdemo_after_B_whole.mp4   1920×1560・125.03 秒・3751 コマ・2,673,237 バイト
    20261029_2050_lpdemo_after_A_close_frames.csv / _B_whole_frames.csv（frame, t_s。0 → 900.0 秒 … 3750 → 1650.0 秒。間はすべて 0.2 秒）

  直す前（店の形の版 dffc100b269c・cs:41 に保留 17 件：写した 14 ファイルと、建てたときに触った .asset など 3 件）
    run_stem：20261029_lpdemobefore_cs41_fam_p0_r2_s0_passon_sbret（completed・実時間 3.6 分・build_id cs41_20261029_2055）
    20261029_2055_lpdemo_before_A_close.mp4  1680×1080・125.03 秒・3751 コマ・3,307,186 バイト
    20261029_2055_lpdemo_before_B_whole.mp4  1920×1560・125.03 秒・3751 コマ・2,518,174 バイト
    20261029_2055_lpdemo_before_A_close_frames.csv / _B_whole_frames.csv（同じく 900.0〜1650.0 秒・0.2 秒ごと）

  映像A（寄り）：真上から正投影。x 3.0〜10.0・y 10.5〜15.0（7.0 × 4.5 m。1 m ＝ 240 画素）。+y が画面の上
  映像B（全体）：真上から正投影。x −0.8〜24.8・y −0.8〜20.0（店の外寸 24 × 19.2 m に 0.8 m の余白。ServiceSimCameras.FrameTop と同じ余白）
  見た目：ロボット白・スタッフ青・客黄。ロボットの道の線（薄いオレンジ）は今の標準のまま映る
  A の範囲についての気づき：T01・T04 の止まる位置は入るが、卓そのもの（T01 x 0〜2.6・T04 y 15.0〜16.2）は範囲の外で映らない

  直す前の作り方（依頼の 3）
    ・site_copy_dffc100b269c の params・summary.json・6店の JSON と地図（14 ファイル）を cp で写した。
      写したあと、14 ファイルとも cs:39 に check-in された中身と同じことを cmp で確かめた
    ・JSON Store「② を建てて確かめる」：版 dffc100b269c・卓 19・席 88・合わないもの なし・止まる位置は乗らない 0 / 19・
      受け渡し口から全 19 卓がつながった
    ・Map Planner「② 確かめ A」：引けない卓 0 / 19・待機場所3つとも引けた → 通った
    ・録画のあと cm undo で 17 件を戻した。params と②の JSON・地図が 08db8a0d067c の写しと同じに戻ったことを cmp で確かめた。保留 0
    ・JSON Store は時刻の入らない名前で unity/screens/ に書き出す（20261029_p0_memory_json_check.txt・
      20261029_p0_memory_table_dist.csv・20261029_family_v0_* など）。直す前の版で上書きされたので、戻したあとにもう一度
      「② を建てて確かめる」を回し、今の版（08db8a0d067c・合わないもの なし）の中身に書き直した。そのとき触った .asset 3 件も cm undo で戻した。
      20261029_2055_* の名前のもの（直す前の確かめ A）は残してある


====================================================================
4. 確かめたことの答え
====================================================================

  1. 直す前の録画の回の、丸テーブルのまわり（x 4.75〜6.85・y 11.3〜14.0）の 60 秒の「動けなくなった」
     8 回あった。p0check と時刻・場所・理由が同じ（1 行ずつ同じ）
       ロボット1 往復3：t=948.1・1039.85・1267.0（(5.36, 12.41)・椅子）
       ロボット2 往復4：t=1104.75（椅子）・1184.5・1265.15・1345.75・1420.95（もう1台のロボット）（(5.85, 11.98)）
     → p0check（ロボット2・往復4・t=1021〜1527 秒ごろ）と同じ時刻に起きた

  2. 直した後の録画の回の、同じ範囲の 60 秒の「動けなくなった」
     0 回。p0fixcheck と同じ
     900〜1650 秒のロボットの位置（robot_track.csv・5 秒ごと）は p0fixcheck と1行も違わない
     （ずれ始めるのは t=6290 秒。直す前も、p0check と t=6550 秒まで同じ）

  3. 直した後の回で、片方が T05 か T06 に止まっている間に、もう1台が2つの丸テーブルの間を通り抜けた時刻（900〜1650 秒）
     なかった。この間に丸テーブルへ行ったのは1台ずつで、そのとき、もう1台は待機場所にいるか受け渡し口へ戻る途中だった
       ロボット1 が T05 に止まる：t≒950〜970・1270〜1290（もう1台は待機場所）
       ロボット2 が T05 に止まる：t≒1050〜1070・1330〜1350（もう1台は待機場所か受け渡し口のそば）
     回全体で探すと、そういう場面は1つだけだった（範囲の外）
       t≒4855〜4880：ロボット2 が T05 に止まっている間に、ロボット1 が T06 へ入る（4858 秒ごろ）。
       そのあと、ロボット1 が T06 に止まっている間に、ロボット2 が丸テーブルの間を抜けて受け渡し口へ戻る（4875 秒ごろ）。
       p0fixcheck でも同じ時刻に起きている
     （robot_track.csv の 5 秒ごとの位置を線でつないで探した。秒は ±5 秒くらい）

  4. 直す前の録画で、もう1台が抜けられずに待っている場面の始まりと終わり
     ロボット2（往復4・T05 へ）：始まり t=1021.2（(6.13, 11.85) で止まる）〜 終わり t=1527.5（動き出す）。T05 に着いたのは t=1545.0
       映像のコマでは 606 〜 3137 番（mp4 の 20.2 〜 104.6 秒）
     ロボット2 の前で止まっていたのはロボット1（往復3・T03 へ行く途中）。T05 に止まっていたのではない。
       (5.36, 12.41) で t≒948 から動けず、t=1526.8 に往復が打ち切られ、受け渡し口のそばへ瞬間移動した
       （t=1525 には (5.36, 12.41)、t=1530 には (9.75, 5.44)）。この瞬間移動は映像Aにも映る（コマ 3134 前後）

  5. 録画した回と画面なしの回の差（回全体。台帳と stops.csv）
                                 直す前：録画 ／ p0check     直した後：録画 ／ p0fixcheck
     30 秒以上の止まり             15 ／ 17                    6 ／ 5
     動けなくなった（60 秒）       12 ／ 12                    5 ／ 2
     往復の数                      73 ／ 73                    74 ／ 76
     入店待ち（分）                1.42 ／ 1.45                1.56 ／ 1.22
     料理の待ち（分）              0.98 ／ 0.94                0.61 ／ 0.54
     会計待ち（分）                1.18 ／ 1.16                0.67 ／ 0.88
     打ち切り                      1 ／ 1                      0 ／ 0
     あきらめた                    13 ／ 12                    10 ／ 4
     瞬間移動                      14 ／ 15                    11 ／ 15
     店の時間（分）                163.3 ／ 164.0              165.2 ／ 162.7
     ・900〜1650 秒は2回とも位置が同じなので、録画した場面は画面なしの回と同じ動き
     ・違いが出るのは t=6290 秒（直した後）・6550 秒（直す前）より後。直した後は入店待ち +0.35 分・動けなくなった +3 で、差が大きい
       直した後の、丸テーブルの外の「動けなくなった」5 回の場所：待機場所1のそば (12.24, 5.51) 1 回・
       入口とレジのまわり（(12.8〜13.5, 1.7〜3.3)。スタッフ・お客さん）4 回
     ・ずれた理由は調べていない。今までの記録（busycheck）でも、同時に回す本数で数が動くと分かっている。
       画面ありで回した分だけ1コマの実時間が変わったことが関わっている、と思うが、確かめていない


====================================================================
5. 台帳
====================================================================

  行数：667 → 669（2 行足した。追記だけ。列は 59 列のまま）
    20261029_lpdemo_cs41_fam_p0_r2_s0_passon_sbret       completed・ServiceSim/cs:41・08db8a0d067c
    20261029_lpdemobefore_cs41_fam_p0_r2_s0_passon_sbret completed・ServiceSim/cs:41・dffc100b269c
  先頭 667 行の md5：c7e561fec03ba49cb6cf5fa44628fe5e（始める前と同じ）
  鍵ファイルは残っていない
  ※ 直す前の行の unity_cs は「cs:41」だが、実際は cs:41 のコードに、保留として cs:39 と同じデータを入れたもの。
    見分けは layout_generation（dffc100b269c）でつく
  make_queue.py・night_runner.py・judge_night.py・p2m-site は変えていない


====================================================================
6. 残ったもの（消そうとしたが、消す許可が出なかった）
====================================================================

  録画のしくみの試し（店の時刻 20〜26 秒だけ撮り、回の途中で止めた。台帳には書いていない）の出力が KIOXIA に残っている
    /Volumes/KIOXIA/r2r2r-data/service_sim/unity/20261029_rectest_cs40_fam_p0_r2_s0_passon_sbret/（recordings/ に試しの mp4 2 本）
    /Volumes/KIOXIA/r2r2r-data/service_sim/unity/20261029_rectest_cs40_fam_p0_r2_s0_passon_sbret_stopped/（途中で止めた回の記録）
  プロジェクトの Builds/rec_test・rec_after・rec_before（Builds/ は VCS の外）


====================================================================
7. 決めてほしいこと
====================================================================

  1. 直す前の回のフォルダ名。
     同じ夜・同じラベル lpdemo・同じ cs41 だと、直した後と1字も違わない名前になる（直す前の状態は check-in しないため）。
     -ssTry 2 で分けると、judge_night.py が「やり直し」として1つにまとめてしまう。そのため、ラベルを lpdemobefore にして回した。
     このままでよいか。名前を変えるなら、フォルダと台帳の run_folder をどうそろえるか。
  2. 直した後の「すれ違って抜ける」場面が、録画した 900〜1650 秒の中にない。
     回全体で1つだけあり、t≒4855〜4880 秒（画面なしの回でも同じ時刻）。
     見せたいなら、直した後をこの時刻のあたり（例 4800〜4950 秒）で撮り足すかどうか。
     依頼で撮り直してよいのは「直す前に詰まりが出なかったとき」だけなので、撮り直していない。
  3. 録画した回の数が、画面なしの回と t≒6300 秒より後でずれる（直した後は、入店待ち 1.56 ／ 1.22 分・動けなくなった 5 ／ 2）。
     録画の場面（900〜1650 秒）は同じ動きだが、LP に数字を並べるなら、画面なしの回（p0check・p0fixcheck）の数を使うのがよいと思う。どちらを使うか。
  4. 試しの出力（6 章の rectest 2 フォルダ）を消すか残すか。
