プロジェクトへ戻る

運営完了・デモ公開

AJOU ARCADE

屋外の学園祭で来場者の足を止めるため、視線で操作するアーケードゲーム4種を3週間で開発しました。

大学サークル博覧会で来場者の足を止めるため、Webカメラの視線追跡だけで遊べる4種類のアーケードゲームを開発しました。体験後にそのまま応募導線へつなげ、現場フィードバックを即時反映しました。

期間
2026.02
担当範囲
視線入力 · 4ゲーム · 配布 · 現場修正
チーム
個人開発
リポジトリ
公開リポジトリ

説明より先に足を止めてもらうための体験

多くのブースが並ぶ学園祭では、ITサークルが何を目指しているのかを、チラシだけで短時間に伝えることは困難でした。必要だったのは技術を並べた展示ではなく、通りかかった人が足を止め、体験し、応募まで進める入口です。

そこで、よくあるクリックゲームではなく、追加インストールなしで『視線だけで遊べる』体験を、興味を持ってもらうきっかけ(フック)にしました。

視線からゲームまで

来場者が画面を見てからゲームを終え、応募フォームを開くまで

  1. 01

    カメラ

    MediaPipeで顔と目を読む

  2. 02

    揺れを整える

    キャリブレーション+平滑化

  3. 03

    見る・まばたく

    注視/まばたきで操作

  4. 04

    4つのゲーム

    Reactのゲームループ

  5. 05

    結果から応募へ

    応募フォームを開く

毎フレームの状態更新が生んだフレーム落ち

初期実装では顔ランドマークを受け取るたびReactの状態を更新し、Canvasゲームの描画とUI描画が競合してフレーム落ちが発生しました。

MediaPipeの座標は高頻度で届きますが、スコア・ゲームオーバー・選択のようなUI状態は毎フレーム変える必要がありません。屋外では光や顔位置による細かな揺れも増えました。

最新座標はrefに保存し、requestAnimationFrame内でCanvasへ描画しました。Reactの状態にはスコアや確定した選択など、画面構造が変わるイベントだけを渡しました。

  • 9点キャリブレーションで画面座標へ対応付けしました。
  • 平滑化・デッドゾーン・注視判定で小さな揺れを除去しました。
  • EAR基準のまばたき入力と運営者用リセットを実装しました。

この入力処理でWebゲーム4種を屋外ブースで運営し、当日の光に合わせた表示修正も再配布しました。公開デモでも同じゲームを確認できます。

高頻度のセンサーデータと、画面構造を変えるUI状態は更新周期を分ける必要がありました。

AJOU ARCADEのゲーム結果画面

日差しの下で作り直したゲーム画面

レトロ調に合わせた暗色画面は室内では読めましたが、屋外の強い日差しと反射の下では案内とゲーム内容が見えにくくなりました。来場者が入れ替わるたび、開始状態へ戻す手間も発生しました。

博覧会はすでに進行中で、カメラモデルやゲーム全体を入れ替える時間はありませんでした。認識精度の調整と、画面が読めない問題も分けて扱う必要がありました。

認識パラメータをむやみに変える代わりに、明るいテーマ、短い案内、無操作時の自動リセットと運営者リセットを追加し、その日のうちに再配布しました。

  • 明色・暗色テーマを切り替え可能に構成しました。
  • 開始案内と次の利用者向けリセットの流れを短縮しました。
  • 現場フィードバックを反映しVercelへ再配布しました。

修正版で屋外ブースの運営を続け、4つのゲームを最後まで提供しました。変更前後の可読性や待ち時間は数値で測定していません。

実際の利用環境は開発環境と異なるため、アルゴリズムだけでなく、光・待ち時間・運営者の操作まで配布前に検証する必要があると学びました。

来場者が実際に視線操作ゲームを体験した屋外ブース
来場者が行き交う屋外サークル博覧会の様子

4つのゲームは公開デモで確認できます。前学期の同じ募集段階と比べ、応募者数は9人から約150人に増え、最終参加者は約50人でした。

今はアルゴリズムの精度だけでなく、会場の光、待ち時間、運営者用リセットまで一緒に設計します。

応募増加には募集対象、現場運営、景品、広報など他の要因も含まれ、ゲーム単独の効果ではありません。

  • ブラウザとカメラ環境の互換性テスト
  • 視線ロジックとゲーム回帰テストを追加