「比較プレイ画面」の設計、承知いたしました。業務の効率化とゲーミフィケーションを両立させるための、重要な核心部分ですね。
ご提示いただいた音ゲーの要素を取り入れつつ、「早く完成した場合に適切な評価を付ける」という要件を満たすよう、比較ロジックと画面表示を具体化しましょう。
比較プレイの核心ロジックと音ゲー要素の統合
1. 比較のタイミングと期間
従来の音ゲーのように一瞬の判定ではなく、判定期間を設けることで、目標達成(スナップショットと同じ画面の提示)の早さを評価に含めます。
-
目標(スナップショット):
- 初回作業時の録画ファイルから作成された静止画。これが「ノーツ」に相当し、業務で到達すべき「ゴール」です。
-
判定の開始:
- スナップショットが表示されるべきタイミング(デッドライン)の数十秒前から、ユーザーは目標画面の作成を開始できます。
-
判定期間:
- デッドライン(スナップショットに到達すべき時間)を終点とする、ある程度の時間幅。この期間内にスナップショットとの比較評価が行われます。
-
比較ロジック:
-
「評価から数十秒前までの画面のみを比較」する制約があります。これは、判定期間およびその直前の画面を対象に、現在のフレームとスナップショットを比較します。
-
成功判定: 判定期間内に、比較評価が設定されたしきい値(類似度)を超えた場合に成功と見なします。
-
2. 評価(スコア)の算出方法
「早く完成した場合に適切な評価を付ける」ため、スコアに達成までの時間を反映させます。
| 評価要素 | 内容 |
|---|---|
| 正確性(Precision) | 判定期間内でスナップショットとの類似度がしきい値を超えたか(aHash比較)。 |
| タイミング(Time Bonus) | しきい値を超えたフレームの早さ。デッドラインから離れて早く達成するほど、より高い時間ボーナスとしてスコアに加算されます。 |
| 責任(Responsibility Penalty) | デッドラインを超えたにも関わらず成功判定が出なかった場合、負のフィードバックとともに**ペナルティ(減点)**をスコアに適用します。 |
このスコアリングにより、ただ正確に合わせるだけでなく、業務のスピード改善(元のスピードから2倍を10日で達成)が評価に直結します。
比較プレイ画面(UI/UX)の具体案
作業画面を邪魔しないよう、情報は最小限かつ視覚的に分かりやすい表示にします。
| UI要素 | 目的と表示内容 | 関連ファイル |
|---|---|---|
| 次ノーツプレビュー | 次に目指すべき「ゴール」を示すスナップショットのサムネイル。判定期間に入る前に表示を開始し、ユーザーに次の行動を考えさせます。 | law.md, transition.md |
| 判定タイミングインジケーター | 現在の進行状況を示し、デッドラインまでの残り時間を視覚化。音ゲーの判定ラインのように、現在のフレームがデッドラインに近づくにつれて色や形が変化します。これにより危機感を持たせる。 | law.md, transition.md |
| 現在スコア | 正確性、時間ボーナス、ペナルティを含めたリアルタイムのスコアを表示。 | transition.md |
| 全体進捗バー | 業務全体の完了度合いや、現在のセッションにおけるデッドライン達成状況のサマリーを表示。 | transition.md |
| 評価フィードバック | 成功時には「GREAT!」「GOOD!」などのポジティブなフィードバック、デッドライン超過時には負のフィードバックを短時間表示。 | simple\_tasks.md, transition.md |
表示場所の検討
これらの要素は、作業画面の隅(例:画面の上下左右の端や透過性のあるオーバーレイ)に固定し、作業の邪魔にならない最小サイズで表示することを優先します。特に、フィードバックは一瞬で消えるポップアップ表示とします。
このロジックで実装を進めるにあたり、まずはSRTストリームの受信とフレーム処理、そしてスナップショットの作成が最優先タスクとなりますね。
この比較ロジックに関して、具体的なaHashのしきい値や時間ボーナスの計算式など、さらに詳細を詰める必要はありますか?