082 ふたりの綱渡り
ローカル協力 / 2人同じキーボード / 日本語 / Pyxel + 標準ライブラリ

自分が歩くと、相手の足元がぐらり。だから「先にどうぞ」が操作になる。
二枚の8歩の板で、歩く・支える・迎えるテンポを合わせる小さな玩具です。
現実の綱渡り物理を再現するものではありません。

起動
WindowsはPython3を用意してsetup.bat、次からplay.bat。
Linux/macOSは bash setup.sh の後 bash play.sh。
初回セットアップのみPyxel取得の通信が必要。実行時は通信もアカウントも不要。
ランタイム依存はPyxel 2.9.9だけ。Python標準ライブラリ以外の素材読込依存なし。
launch.shは制作環境専用です。
実機操作はクラウドLinux。Windows/macOS・実キーボードの同時押し制限は未確認。

開始前
1/2/3で橋を選ぶ。Aは風も結び目もなし。Bは違う場所に結び目。
CはAの3歩目/Bの5歩目に結び目。風は刻8/16/24...に+1、12/20/28...に-1。
次の4刻にある風は数字と方向で予告します。
両者のキーを試すと準備OK。二人分が点灯してからEnter、キーを全部離すと開始。
各キーが同時に点灯するか確認してください。F2で別配置へ切り替えられます。
これは二つの固定配置です。あらゆるキーボードの同時押し対応を保証しません。

操作
通常A: A/Dで左/右、Sで支える。
通常B: 左/右矢印で左/右、下矢印で支える。
別配置A: F/Hで左/右、Gで支える。別配置B: J/Lで左/右、Kで支える。
長押しは2論理刻に1歩。初回は次の論理刻ですぐ一歩。
0.25秒（4Hz）ごとに両者の入力を同じ旧状態から同時解決します。
左右同時は移動0。支え＋移動は支え優先。無入力は支え扱いになりません。
実際に右へ一歩進むと相手の傾き+1、左へ戻ると-1。
端・結び目・クールダウンで動けなければ相手を揺らしません。
その刻の風→支える側を0→傾きが±3以上なら尻もち、の順序です。
尻もちは一歩だけ戻って傾き0。尻もち後退は相手を再度揺らしません。
結び目から右へ出るには一刻支えて準備。準備は待機・空振りでは失われず、
右への実移動時だけ消費します。左へ戻るための準備は不要。
ふたりとも8歩にいて尻もち処理後も8なら達成。
一人が先に着いて、支えながら迎えても同じ達成。命・制限時間・星評価はありません。
尻もち数・刻数・最後の同時一歩は任意記録です。

Pで共有停止。停止中は風・位置・時刻が止まります。
Pで再開したら、押されているキーは一度全部離すまで動きません。
停止中Xで直前の尻もち直前へ、両者の状態をまとめて戻せます。
複数回尻もちがあれば最後の一回を戻す操作です。初めから全て消す操作ではありません。
Rで同じ橋の最初へ戻る確認。Enter実行、他のキーで取消。
Mで入力確認画面へ（時間停止）。F12で画像保存。Q/Escapeで終了。

一変更の比較
入力確認中Bで「相手の実移動→自分の傾き」を「自分の実移動→自分の傾き」へ。
橋・風・移動クールダウン・支え・尻もち一歩・8歩の共同目標は同じ。
比較切替時は同じ橋を最初から。説明も現在の規則に合わせて表示します。
policy_results.jsonには両版を同じ交代入力で渡った記録を保存。
会話がどう変わるかは人の試遊で確認したい点であり、まだ実績ではありません。

技術確認と分かったこと
A/B/Cすべて、両版で同時進行・交代進行・尻もち後に到着できました。
安全な交代進行は正当な到着で、遅いことへの隠れ減点はありません。
Aは右だけの長押しでも21刻、各3回尻もちで到着します。導入用の寛容さです。
B/Cでは右だけでは結び目で止まり、96刻の検査でも未到着でした。
全員支え続けても負けにはならず、進みもしません。相談できます。
自動スクリプトは協力体験の検査を代替しません。人の2人試遊は未確認。

記録・テスト
model.pyは不変State/step、controller.pyが入力・4Hz・停止を管理。
python -m unittest -v test_model test_ui
同時順序対称、独立オラクル、風相殺、結び目、端、尻もち、支え、巻戻し、
開始/停止後の持越し入力、反対方向・複数人同時キーを検査。
media/automatic_*は実Pyxel画面を自動入力で収録した無音映像。
元GIFの各フレームを一度ずつ30fpsでMP4へ。原画像ハッシュとffprobe結果を保存。
media/native_*はエージェントによる実ウィンドウ入力。人の2人試遊ではありません。
各記録は実行時のソース複製とハッシュを保持。テストは媒体を書き換えません。
楽しさ・人の会話・Windows/macOS・音の実聴は未確認。公開・投稿していません。

ライセンス
自作コード・図形はLICENSE.txtのMIT。Pyxelはassets/PYXEL-LICENSE.txt。
日本語字形はNoto Sans CJK由来。assets/NOTO-LICENSE.txtにSIL OFL1.1全文。
実行時Pillow/ffmpegは不要。tools/build_font.py・export_video.pyは制作補助です。
