Skip to content

AI Operated Hide-and-Seek

Hide-and-Seek supported by AI Operator.

Core trick

Has Gemini describe the hider's camera view as audio, so the seeker can locate the hider by sound.

Tags

Description

Hide-and-Seek supported by AI Operator. Hide person have phone with camera, seek person ask gemini operator about what it can see. Use the audio information to find the hide person.
houseiwang/google-hackathon★ 00 forksSwiftCreated Feb 21, 2026 · last push Feb 21, 2026

README excerpt

Product Requirement Document (PRD): "The Blind Tracker"
1. Project Overview

App Name: The Blind Tracker

Platform: iOS (iPhone)

Target iOS Version: iOS 16.0+

Concept: 1台のiPhoneを使った1対1の非対称ローカルマルチプレイゲーム。

Roles:

Runner (逃走者): iPhoneを持ち、画面に表示されるお題(ミッション)の写真を撮りながら逃げる。

Tracker (追跡者): iPhoneに接続されたBluetoothイヤホンを装着し、画面は見ない。Geminiからの音声実況(Runnerの視界情報)を頼りにRunnerを見つけ出し、60秒以内に捕まえる。

2. Tech Stack & Frameworks

UI Framework: SwiftUI

Concurrency: Swift Concurrency (async/await, Task)

Media Handling: AVFoundation (AVCaptureSession for Camera, AVAudioEngine for Audio playback)

Network / API: URLSessionWebSocketTask (Gemini Multimodal Live APIへの接続)

JSON Parsing: Codable

3. Game Flow & State Machine

アプリは以下の GameState enum で状態管理を行う。

.title: タイトル画面。スタートボタンとAPIキー入力フィールド。

.ready: カウントダウン(3, 2, 1)と役割確認。WebSocket接続の初期化。

.playing: ゲーム本体(制限時間60秒)。

Runner向けに現在のミッション(例:"Find a green plant")を表示。

Gemini APIへカメラフレームを継続送信。

Gemini APIからの音声ストリームを再生。

ミッションクリア(Tool Call)を検知したらミッション更新。

.result: 結果画面(Trackerの勝ち、またはRunnerの逃げ切り)。

4. Core Modules Specification

Antigravityは以下のクラス・モジュール構成で実装すること。

4.1. CameraManager (ObservableObject)

役割: アウトカメラ(広角)からの映像取得。

要件:

AVCaptureSession をセットアップ。

AVCaptureVideoDataOutput でフレームを取得し、毎秒1〜2フレーム程度(1fps〜2fps)に間引く。

フレームをリサイズ(長辺512px程度)し、JPEG圧縮(quality: 0.6)してBase64文字列に変換。

変換したBase64文字列を GeminiLiveClient に渡す。

4.2. AudioManager (ObservableObject)

役割: Geminiから送られてくるPCM音声データのストリーミング再生。

要件:

AVAudioEngine および AVAudioPlayerNode を使用。

Gemini APIから受信したBase64エンコードさ

Team