Skip to content
Castro-archPublic

About

Pique-esconde pela cidade: corredores e caçadores em ruas de verdade, com pings, zona que encolhe, boosts e coração acelerado. App Expo + Convex.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pique: pique-esconde pela cidade

Pique

Pique-esconde pela cidade. Uns se escondem, outros caçam, em ruas de verdade.
O celular cuida do tempo, dos pings e de quem ganhou.

Jogar no navegador · Como jogar · Instalar · Rodar o projeto

Status: beta fechado Expo SDK 58 Convex Android e web


O que é

O Pique é o pique-esconde (e o pique-pega) levado para a rua, com o celular de juiz. Uma pessoa cria a partida, marca a zona no mapa e manda o código para a crew. O app sorteia quem corre e quem caça, dá a vantagem dos corredores e, a cada poucos minutos, solta um ping: os caçadores veem onde cada corredor estava naquele instante. Ganha quem se esconder até o fim do tempo, ou os caçadores, se pegarem todo mundo antes.

Ninguém fica olhando a localização de ninguém o tempo todo. Os caçadores só enxergam os corredores nos pings, e a localização só é enviada enquanto a rodada está rolando.

Como jogar

  1. Crie a partida e compartilhe o código de 6 letras (ou o QR) com a crew.
  2. Marque a zona no mapa: o círculo onde todo mundo tem que ficar.
  3. Escolha o lado (corredor, caçador ou sorteio) e ajuste as regras da casa: duração, vantagem, intervalo do ping, zona que encolhe, boosts e o que mais quiserem.
  4. A roda: juntem os celulares no meio. Uma luz passa de celular em celular e para em quem vai caçar.
  5. Vantagem: os corredores têm 1 minuto (no padrão) para sumir enquanto o caçador fica travado. Depois ele é liberado.
  6. Pings: a cada 2 minutos (no padrão), os caçadores veem onde cada corredor estava naquele momento.
  7. Pegou? O caçador marca o corredor e o corredor confirma no celular dele. Sem resposta em 60 s, conta como pego.
  8. Fim: quando o tempo acaba (corredores vencem) ou quando não sobra ninguém (caçadores vencem). Dá para pedir revanche com a mesma crew.

O que tem no jogo

Mapa de ruas de verdade Ruas, praças, rios e prédios do lugar onde vocês estão (OpenStreetMap), no visual escuro do Pique.
Zona que encolhe O círculo diminui de tempos em tempos, com 1 min de aviso. Quem fica 30 s fora aparece ao vivo para os caçadores.
Coração acelerado O celular do corredor vibra no ritmo de um coração quando um caçador chega a menos de 30 m, sem dizer de onde.
Grito O caçador faz o celular do corredor mais perto tocar um som. Se estiver perto, ele se entrega. 3 por rodada.
Boosts Aparecem pelo mapa durante a caça. Pegar deixa você visível por uns segundos, e você guarda até 2. Sombra some do próximo ping, Despiste solta um ping falso a 60 m e Escudo protege da pega por 2 min.
Salvar o amigo Quem é pego fica preso no lugar. Um corredor que chegar a 10 m e ficar 3 s solta o amigo, e os dois voltam para o jogo.
Radio Canal de cada time, com respostas prontas e áudio curto.
Avisos com o celular no bolso Ping, coração acelerado, grito, pega e fim da rodada chegam como notificação.
Molduras Cosméticos em volta da sua foto no mapa. Só visual: ninguém compra vantagem.
Como jogar narrado Um tutorial de 14 passos em cima do mapa de ruas de verdade: as pessoas correm pelas ruas, a câmera dá zoom, cada boost é mostrado funcionando e uma narradora explica cada regra, com o texto aparecendo no ritmo da fala. Passa sozinho, em 1x, 1,5x ou 2x.
Figurinhas Ícones, boosts e o nome no Início no estilo de adesivo, com contorno preto.

Telas

Início Lobby do anfitrião Como jogar: vantagem Como jogar: o ping
Início Lobby Como jogar O ping
Boost Despiste: ping falso Revelação do papel: corredor Radio dos caçadores Seu celular gritou
Boost Despiste Você corre Radio Grito
Um caçador te achou? Loja de molduras Perfil Fim da rodada
Fui pego Loja Perfil Fim da rodada

Prints do app no modo demonstração. As fotos de perfil aparecem como iniciais, igual ao app enquanto a pessoa não envia uma foto.

Instalar e jogar

O Pique está em beta fechado, para jogar com os amigos.

  • iPhone (pelo navegador): abra pique.expo.app no Safari, toque em Compartilhar → Adicionar à Tela de Início e abra pelo ícone. Assim ele abre em tela cheia e recebe os avisos da partida.
  • Android (app): instale o APK do beta, pedindo o link para quem organiza o teste. Na primeira abertura o Android pede para permitir instalar apps dessa fonte.
  • Qualquer celular: dá para jogar só pelo site, sem instalar nada.

Depois do nome, o app pede numa tela só as permissões: localização (durante o uso e com a tela bloqueada), avisos, microfone (para o Radio) e câmera e fotos.

Privacidade

  • Quando a localização é enviada: só durante a rodada, e para de ser enviada quando você é pego ou sai.
  • Quem vê o quê: caçadores veem corredores só nos pings, ou ao vivo se o corredor ficar fora da zona. Corredores nunca veem caçadores.
  • O que é apagado: os áudios do Radio somem no fim da rodada, e a partida inteira (posições, mensagens, avisos) é apagada 7 dias depois.

Rodar o projeto

Requisitos: Node.js 20 ou mais novo e npm. Para gerar o APK, uma conta gratuita na Expo.

git clone https://github.com/Castro-arch/pique.git
cd pique
npm install

Backend (Convex)

O backend é o Convex. Na primeira vez, o comando abaixo pede login e cria um projeto de desenvolvimento:

npx convex dev

Deixe esse terminal aberto. Em outro, configure as chaves do login:

npm run auth:setup

Opcional: para os avisos por push no site, gere chaves VAPID (npx web-push generate-vapid-keys) e salve no Convex com npx convex env set nos nomes VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY e VAPID_SUBJECT.

App

Crie um arquivo .env.local na raiz (ele não vai para o repositório):

EXPO_PUBLIC_CONVEX_URL=https://<seu-projeto>.convex.cloud
EXPO_PUBLIC_CONVEX_SITE_URL=https://<seu-projeto>.convex.site
# Opcional, para o push do site (a mesma VAPID_PUBLIC_KEY do Convex):
EXPO_PUBLIC_VAPID_PUBLIC_KEY=

E rode:

npx expo start --web   # no navegador
npx expo start         # no celular com um build de desenvolvimento

Testes

npm test            # regras do jogo no backend (vitest + convex-test)
npm run typecheck   # TypeScript

Publicar

npx expo export -p web --output-dir dist && npx eas-cli deploy --prod   # site
npx eas-cli build --platform android --profile preview                   # APK do Android

Tecnologias

  • App: Expo (React Native, expo-router), no site com react-native-web
  • Backend: Convex: banco de dados em tempo real, funções e agendamentos (pings, zona, fim da rodada)
  • Mapa: MapLibre com o mapa de ruas do OpenFreeMap (dados do OpenStreetMap)
  • Localização em segundo plano: expo-location e expo-task-manager
  • Avisos: Web Push no site e notificações locais no Android (expo-notifications)

Estrutura

convex/          backend: regras do jogo, rodadas, pings, boosts, avisos, Radio
  schema.ts      tabelas
  games.ts       criar, entrar, lobby, regras e zona
  rounds.ts      começo, ping, zona que encolhe, fim e limpeza
  play.ts        posição, quem vê quem, pega, coração acelerado, grito, boosts, resgate
  alerts.ts      avisos da partida (e push.ts envia para o site)
  game.test.ts   testes das regras
src/app/         telas (expo-router)
src/components/  componentes (mapa, cartões, boosts, avatar...)
src/lib/         ligação com o backend, localização, permissões, avisos
src/theme/       cores, fontes e espaçamento
public/          tela de carregamento, fontes do site e service worker (sw.js)
docs/            imagens deste README

Créditos

Licença

Ainda não definida. Sem uma licença, o código fica disponível só para consulta.

About

Pique-esconde pela cidade: corredores e caçadores em ruas de verdade, com pings, zona que encolhe, boosts e coração acelerado. App Expo + Convex.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages