# リリースノート: v1.0.0 ライブ共有リアルタイム表示

## 概要

コントローラー入力を、入力PCから配信用PCへリアルタイム共有できるライブ共有機能を追加しました。オフライン大会・オンライン大会の1v1イベントで、操作するPCと配信に映すPCを分けて運用できます。

## 追加機能

- スキンカードにライブ共有ボタンを追加
- ライブ共有ボタンから入力PC用のホスト画面を直接開けるように変更
- ホスト画面を開くと、配信用URLを表示
- 配信用PCで配信用URLを開くと、入力PCのコントローラー状態をリアルタイム表示
- 共有状態を送信側/視聴側の画面右下に表示
- 視聴側の画面右下に推定遅延を表示
- 通常フレームの共有データを軽量化して、ライブ共有の反映遅延を低減
- Firebase Realtime Databaseを使った低コストな同期に対応
- トップページで未読バージョンのリリースノートをポップアップ表示
- 右上のリリースノートボタンから、いつでも最新リリースノートを再表示

## 使い方

1. トップページで使いたいスキンのライブ共有ボタンを押す
2. コントローラーを接続する入力PCでホスト画面が開く
3. ホスト画面の右下に表示される配信用URLをコピー
4. 配信用URLを配信用PC、OBSブラウザソース、または別ブラウザで開く
5. 入力PCでコントローラーを操作すると、配信用PC側に動きが反映される

## URLパラメータ

- `share=host`: 入力PC側。ライブ共有を開始して入力状態を送信します。
- `share=watch`: 配信用PC側。共有ルームを購読して入力状態を表示します。
- `room`: 視聴側が接続する共有ルームIDです。

例:

```text
/viewer/?skin=skin-123456789&share=host
/viewer/?skin=skin-123456789&share=watch&room=abc123def456
```

## Firebase側の設定

この機能を使うには、Firebase側で以下が必要です。

- Authenticationの匿名認証を有効化
- Realtime Databaseを作成
- Realtime Database Rulesを設定

詳しい手順は [realtime-share-firebase-guide.md](/Users/andtsubasaer/Documents/GitHub/VoidPadVIEWER/docs/realtime-share-firebase-guide.md) を参照してください。

## 運用メモ

- 数部屋程度の1v1イベント利用を想定しています。
- 入力状態は変化中に最大60fps程度で送信します。
- 遅延はゼロにはできません。入力PC/配信用PCの回線、Firebase Realtime Databaseのリージョン、OBS/ブラウザ側の描画タイミングで変動します。
- 古い共有ルームは `expiresAt` を目安に削除してください。
- 大会本番前に、入力PCと配信用PCの2台で接続テストをしてください。

## 既知の注意点

- Firebase側の匿名認証が無効だと、ホスト画面でライブ共有を開始できません。
- Realtime Databaseが未作成、または `databaseURL` が違う場合、共有機能は動作しません。
- 配信用PCでは、通常のスキンURLではなく、ホスト画面に表示された配信用URLを開く必要があります。

## バージョン管理

- 現在のアプリバージョンは `1.0.0` です。
- トップページのポップアップ内容は [js/app-version.js](/Users/andtsubasaer/Documents/GitHub/VoidPadVIEWER/js/app-version.js) で管理します。
- 次回リリース時は `APP_VERSION` と `RELEASE_NOTES` を更新すると、ユーザーに新しいリリースノートが自動表示されます。
