"This post was created for the purposes of entering the Gemini Live Agent Challenge 2026."
Como Construí um Jogo de Corrida Cyberpunk com Gemini Live AI — e o que aprendi no caminho
#GeminiLiveAgentChallenge #GoogleCloud #Flutter #GeminiAPI
Imagine estar correndo às 6h da manhã pelas ruas de Matão, SP, com um coach de IA no seu ouvido dizendo: "Operador, você está a 200 metros de perder o Setor Industrial para um rival. Acelere ou perca o território."
Isso é o First Runner.
É um jogo de fitness cyberpunk onde você conquista territórios reais da sua cidade correndo, caminhando ou pedalando — guiado por um coach de IA ao vivo, o Oráculo, alimentado pelo Gemini 2.5 Flash Native Audio.
Neste post vou contar como construímos isso, os desafios técnicos que quase nos quebraram, e o que aprendemos sobre construir agentes de IA verdadeiramente ao vivo.
A ideia: transformar a cidade num tabuleiro vivo
Apps de fitness tradicionais são chatos. Eles registram sua corrida, mostram um gráfico e... é isso. A motivação desaparece em semanas.
A nossa hipótese foi simples: e se cada rua da cidade fosse um território para conquistar?
Cada quarteirão mapeado pode ser "seu". Você corre o circuito, o app registra via GPS, e aquele território fica pintado com sua cor no mapa de todos os jogadores da região. Se um rival bater seu tempo, ele toma o território. Você perde. Precisa voltar e treinar.
A mecânica do First Run — ser o primeiro a mapear um circuito — cria uma corrida pela cidade que nunca existiu antes.
Mas o diferencial real é o Oráculo.
O Oráculo: um agente que corre com você
O Oráculo não é um chatbot. Ele é um agente de IA que:
- Ouve você enquanto você corre, sem precisar apertar nada
- Interrompe e é interrompido — barge-in real, não turn-based
- Conhece sua localização GPS em tempo real — pace, distância, territórios próximos
- Sabe o estado do jogo — quais territórios seus estão ameaçados, quais rivais estão ativos
- Responde em menos de 1 segundo — graças ao Gemini 2.5 Flash Native Audio
Quando você está subindo uma ladeira pesada e fala "Oráculo, quanto falta?", ele já sabe sua localização, calcula a distância do próximo checkpoint e responde enquanto você ainda está ofegante. Sem delay. Sem robótico.
Isso mudou tudo sobre como pensamos na interação homem-IA durante atividade física.
A arquitetura: onde as coisas ficaram interessantes (e difíceis)
Flutter App
│
├── PCM Audio (16kHz, raw) ──────────────────────────┐
│ ▼
├── GPS Telemetry (JSON) ──────────► Node.js/Express ──► Gemini 2.5 Flash
│ (Cloud Run) Native Audio API
└── Firestore SDK ◄──────────────── Firebase ◄────────────────────────────
(territories, Firestore
rankings, clans)
O pipeline de áudio
O Flutter captura áudio bruto em PCM 16kHz direto do microfone e transmite via WebSocket para o nosso servidor Node.js rodando no Google Cloud Run. Esse servidor orquestra uma sessão bidirecional contínua com o Gemini Live API.
Por que PCM bruto? Porque qualquer encoding adicional introduz latência. Quando você está correndo e fala algo, você espera resposta imediata — não 800ms depois.
O problema do barge-in
Esse foi o desafio mais difícil do projeto inteiro.
Barge-in significa: você pode interromper o Oráculo no meio de uma frase. Ele para de falar, ouve você, responde. Assim como uma conversa humana real.
O problema é que no Android, quando o app está reproduzindo áudio (o Oráculo falando), o microfone continua gravando — e ele grava o próprio áudio do app. O resultado? Um loop de feedback onde o Oráculo ouve a si mesmo e fica preso num ciclo.
A solução envolveu três camadas:
-
AudioContextAndroidcomgainTransientMayDuck— reduz o volume do speaker quando o microfone está ativo - Gerenciamento preciso do audio focus no Android para detectar quando o usuário está falando
- Lógica de reconexão WebSocket com buffer de PCM para não perder chunks de áudio durante a transição
Semanas para resolver. Mas quando funcionou, a sensação foi de ter um parceiro de corrida real no ouvido.
Injeção de telemetria em tempo real
O segundo grande desafio foi fazer o Oráculo realmente saber onde você está — não de forma genérica ("você está correndo bem!"), mas com contexto tático real.
A cada 5 segundos, o app injeta silenciosamente um JSON no contexto do Gemini:
{
"pace": "5:32 min/km",
"distance": "2.3km",
"location": "Setor Industrial, Matão SP",
"nearby_territories": [
{ "name": "HQ_MATÃO", "owner": "você", "threat": "nenhuma" },
{ "name": "CENTRO_MATÃO", "owner": "rival_07", "threat": "alta" }
],
"heart_rate_estimate": "elevated"
}
Esse JSON não quebra a conversa de voz — ele vai como parte do contexto de sistema enquanto o stream de áudio continua. O resultado é que o Oráculo diz coisas como: "O Centro está vermelho. Rival 07 está a 400 metros de você. Se você virar à direita agora, passa pelo território dele antes que ele consolide."
Não é motivação genérica. É tática real baseada em dados reais.
Os três tracks do Gemini Live Agent Challenge
Quando soubemos do challenge, percebemos que o First Runner tinha encaixe natural nos três tracks:
Track 1 — Live Agent: O Oráculo é o agente. Conversa contínua, barge-in, contexto de GPS em tempo real. É literalmente um agente ao vivo correndo com você.
Track 2 — Creative Storyteller: Após cada corrida, o Oráculo narra seu "Mission Debrief" — misturando texto épico com seus stats reais e snapshots do mapa num único output stream multimodal. "Operador Mark V. — você conquistou 3 territórios hoje. O Parque Central foi reclamado às 06:47. Dois rivais tentaram interceptar. Falham."
Track 3 — Interface Navigator: O Oráculo recebe screenshots do mapa tático e interpreta zonas vermelhas (territórios ameaçados), alertando o corredor sobre mudanças visuais no HUD em tempo real. Ele literalmente "vê" o mapa e age.
O que aprendemos
1. Native Audio muda tudo.
Usar o Gemini Native Audio ao invés de TTS tradicional foi a decisão mais impactante. O resultado não soa como um assistente de voz — soa como uma entidade que existe. A diferença perceptual é enorme para uma atividade física onde você está em estado de flow.
2. Latência é experiência.
Em um jogo de fitness, 2 segundos de delay é uma eternidade. Você já passou pela esquina, perdeu o contexto, quebrou o ritmo. O Cloud Run com WebSocket persistente foi essencial — sem cold starts, sem overhead de autenticação por request.
3. Contexto > Inteligência.
O Oráculo não é mais "inteligente" do que qualquer outro modelo de linguagem. O que o torna diferente é a qualidade do contexto que injetamos. GPS real + estado do jogo real + histórico da corrida real = respostas que parecem mágica mas são só dados bem estruturados.
4. O áudio pipeline é o produto.
A parte "difícil" do First Runner não foi a IA. Foi o pipeline de áudio. PCM buffer management, barge-in sem feedback loop, reconexão resiliente durante corridas em áreas com sinal intermitente. Se o áudio falha, o produto falha. Construa isso primeiro.
O modelo de negócio: B2B de tráfego físico
Uma descoberta inesperada durante o desenvolvimento: as corridas criam tráfego físico previsível e recorrente.
Isso abre um modelo B2B: academias, farmácias, cafeterias e varejistas podem se tornar pit stops oficiais no mapa do First Runner. O Oráculo guia o corredor até esses estabelecimentos com missões contextuais. "Operador, há um kit de hidratação disponível na Farmácia Central a 300 metros. Complete a missão de reabastecimento."
O Google Maps já está explorando esse espaço com o Ask Maps — vemos o First Runner como a camada de gamificação e IA de voz em cima da infraestrutura de localização que o Google está construindo.
Stack completa
| Componente | Tecnologia |
|---|---|
| Mobile frontend | Flutter (Dart) |
| Audio streaming | WebSocket — PCM raw 16kHz |
| Backend | Node.js / Express no Google Cloud Run |
| AI core | Gemini 2.5 Flash Native Audio via Google GenAI SDK |
| Database | Firebase Firestore (sync em tempo real) |
| Auth | Firebase Authentication |
| Maps | flutter_map + OpenStreetMap / Nominatim |
| Web3 | WalletConnect / web3dart |
Links
- App (Android testing): play.google.com/apps/testing/com.neonlabs.firstrun
- Site oficial: firstrunner.com.br
- GitHub: github.com/egonportolani/First-Runner
- Demo video: youtu.be/eQhiqb14v0M
- Devpost: devpost.com/software/first-runner-app
Construído por Egon Henrique Portolani para o Gemini Live Agent Challenge 2026.
#GeminiLiveAgentChallenge #GoogleCloud #GeminiAPI #Flutter #Firebase
Top comments (0)