鬼ごっこ

TypeScript

Firebase

Firestore

Flutter

Dart

鬼ごっこ

音揃怜翔

Miyuu Arima

Rio

推しアイデア

鬼ごっこ

作った背景

鬼ごっこ

推し技術

Flutter

プロジェクト詳細

🏃‍♂️ 鬼ごっこアプリ MVP仕様書 (Flutter × Firebase × Cloud Functions)

🎯 プロジェクト概要

リアルタイムに「鬼」と「逃走者」が動くシンプルなオンライン鬼ごっこアプリ。
Firebaseをバックエンドとして使用し、サーバーレス構成で最低限の機能を実装。
目的はリアルタイム通信・位置共有・捕獲判定のプロトタイプ完成。

⚙️ 技術スタック

分類使用技術役割
フロントエンドFlutterUI / 位置送信 / マップ描画 (GoogleMapAPI)
バックエンドFirebase Cloud Functions捕獲判定・ゲームロジック
データベースFirestore (または Realtime Database)プレイヤー情報・状態管理
認証Firebase Auth匿名 or Googleログイン
ストレージFirebase Storage (オプション)アバター・プロフィール画像保存
通知Firebase Cloud Messaging (将来的に)捕まった・終了通知など

🧩 コア機能一覧

機能名概要優先度
プレイヤー登録匿名ログインまたはGoogleアカウントで参加★★★
ロビー作成 / 参加ゲームルームを作成または参加できる★★★
役割割り当て鬼と逃走者を自動で割り当て★★★
位置更新Flutter → Firestoreに現在座標を定期送信★★★
位置表示Firestoreの全プレイヤー座標をリアルタイム表示★★★
捕獲判定Cloud Functionsで鬼と逃走者の距離を計算★★★
勝敗判定全員捕獲 or 時間切れをFunctionsで判定★★★
結果表示勝者・捕獲人数をUIで表示★★☆
再戦同じルームで再スタート★☆☆

🕹️ ゲーム仕様詳細

🎮 ルール

  • 1ゲームあたりの時間:5分, 15分, 30分, 1 時間
  • プレイヤー:最大 5人(鬼1人 + 逃走者4人)
  • 鬼が全員を捕まえたら鬼の勝ち
  • 制限時間まで逃げ切れば逃走者の勝ち
  • 鬼側はいずれかのタイミングで逃走者の位置がわかり、逃走者側は鬼の位置を見れない

🧠 捕獲ロジック(Cloud Functions)

  • Firestoreの /players/{id}/position 更新をトリガー
  • 鬼と逃走者の距離を計算(例:距離 < 2m)
  • 捕まった逃走者の status"caught" に更新
  • 全員 caught になればゲーム終了イベント発火

📡 通信仕様

  • Flutter側で5秒おきに現在位置をFirestoreへ送信
  • Firestoreのsnapshot listenerで他プレイヤーの位置を購読
  • Functionsが勝敗を更新したら結果を反映

アイテム

  • 範囲内にランダムで配置
  • 逃走者側が鬼の位置を可視化できる(逃走者側)
  • 偽の位置情報共有(鬼・逃走者)
  • 半径5メートルに鬼が近づいたときに、ボタンを押すと、鬼は一時的に停止する(逃走者)
  • トラップ:トラップを通ると、逃走者は一時停止&鬼側に通知(鬼)
  • 全員一旦停止(鬼)
  • アイテムの位置は全員に共有ではなく、鬼側のアイテムは鬼側、逃走者側のアイテムは逃走者側に見える

UI

ベース:https://apps.apple.com/ro/app/gottcha-irl-hide-and-seek/id6446601497

環境構築

  • Flutter:3.38.0ver
  • Firebase
  • UI:Figma, UI-pocket

音揃怜翔

@be8b89c2d9db01c4