Atalaia

Pré-alfa · software da fase 2 pronto, fase 3 começou · ainda não pronta para o campo

A plataforma aberta de combate simulado

A Atalaia é uma plataforma aberta para os dispositivos eletrónicos de jogo (os props) de airsoft, paintball e milsim: as caixas que as equipas capturam, as bombas que armam e desarmam. Monta uma caixa de domínio com um microcontrolador de 20 € (uma pequena placa de computador, barata), transforma um telemóvel Android antigo num terminal de hacking, organiza um milsim de fim de semana com 20 caixas numa rede mesh LoRa (rádio de longo alcance e baixo consumo, em que as caixas passam as mensagens umas às outras de um lado ao outro do campo) e escreve os teus próprios modos de jogo em pequenos scripts. Tudo corre no próprio campo: não precisa de nuvem nem de internet, e não te prende a nenhum fabricante.

Atalaia: torre de vigia no alto de um monte, de onde se via o perigo a chegar e se passava o aviso. Porquê este nome?

Ilustração: ao anoitecer, uma torre de vigia de pedra no alto de um monte tem uma caixa de rádio no topo, cujos sinais chegam a caixas luminosas «GAME PROP» espalhadas pelo vale, onde um grupo de jogadores caminha por um trilho. À esquerda, o título «Projeto de código aberto ATALAIA».

Como funciona um jogo

Para jogar não é preciso perceber nada de eletrónica. É assim que um jogo vai correr quando as caixas estiverem construídas (fases 1 e 2); o simulador já hoje joga os mesmos modos num computador.

  1. Preparar

    A organização espalha as caixas pelo campo e escolhe um modo de jogo, como o Domínio, no teclado de uma caixa ou num telemóvel, em menos de um minuto.

  2. Capturar

    Para tomar uma caixa, a equipa mantém premido o botão da sua cor durante uns segundos. A caixa acende-se com essa cor e pontua para a equipa até a outra a roubar.

  3. Transmitir

    Cada caixa avisa por rádio o controlador de campo, um pequeno computador na base; as caixas mais afastadas passam a mensagem pelas que estão no meio. Uma caixa que perca a ligação continua a jogar e põe-se em dia mais tarde.

  4. Pontuar

    O controlador faz as contas. A organização acompanha o jogo ao vivo no telemóvel, e o campo pode mostrar o marcador num ecrã grande ou numa transmissão em direto.

Porquê a Atalaia

Os dispositivos eletrónicos dão outra vida a um jogo, mas os sistemas comerciais guardam as regras num firmware fechado. Os modos novos ficam à espera do fabricante, não há API pública e não dá para juntar hardware próprio. A Atalaia faz diferente.

  • Funciona sem internet

    Todos os jogos correm no próprio campo, totalmente offline, numa casa ou numa mata com vários quilómetros. A internet é opcional.

  • Qualquer hardware

    Placas ESP32 baratas, computadores Raspberry Pi do tamanho de um cartão de crédito, placas simples tipo Arduino e telemóveis Android, novos ou reaproveitados, entram todos no mesmo jogo.

  • Modos em scripts

    Os modos de jogo são pequenos scripts Lua, ficheiros de texto com as regras, mais um ficheiro de definições. Muda-os ou partilha-os sem voltar a gravar o software que vem dentro das caixas.

  • Protocolo e API abertos

    Os dispositivos falam entre si pelo Skirmesh-RF, um protocolo de rádio documentado, por isso qualquer pessoa pode construir um aparelho que entre no jogo. O controlador de campo disponibiliza APIs MQTT, REST e WebSocket para marcadores, transmissões em direto e outras ferramentas.

  • Feita para os campos

    Funções de jogador, squads, cenários personalizados e um registo de cronografagem que guarda as medições de cada réplica para verificações aleatórias estão previstos de raiz.

  • Copyleft

    Campos que cobram entrada e makers que vendem caixas são bem-vindos. Quem distribuir ou alojar uma versão alterada tem de partilhar as alterações.

Como tudo se liga

Em poucas palavras: os dispositivos no campo falam por rádio com o controlador de campo, um pequeno computador na base que corre o jogo e guarda a pontuação. Os telemóveis ligam-se a ele por Wi-Fi, e os marcadores, as transmissões em direto e as apps de mapas, como o ATAK, pela sua API. Um servidor do clube, opcional e na internet, guarda as contas e o histórico. O controlador, a sua API e a consola da organização já estão feitos e testados num computador, ainda não no campo; o servidor do clube chega numa fase posterior.

Um servidor do clube, opcional, liga-se pela internet ao controlador de campo. As apps da organização e dos jogadores chegam ao controlador por Wi-Fi, os marcadores e outras ferramentas por MQTT e REST, e os dispositivos pela rede mesh LoRa Skirmesh-RF. Servidor do clube (opcional)contas · histórico · app de jogador internet Apps da organizaçãoe dos jogadores · Wi-Fi Controlador de campoRaspberry Pi ou Android Marcadores, ATAKMQTT, REST, webhooks Skirmesh-RF · rede mesh LoRa Field BoxESP32 SatéliteESP32 Dispositivo Androidcom módulo ESP32 Nó simplestipo Arduino
  1. Servidor do clube (opcional): contas, histórico e a app de jogador, pela internet.
  2. Controlador de campo num Raspberry Pi ou Android: as apps da organização e dos jogadores ligam-se por Wi-Fi; os marcadores e o ATAK usam MQTT, REST e webhooks.
  3. Dispositivos na rede mesh LoRa Skirmesh-RF: Field Boxes e satélites ESP32, dispositivos Android com módulo ESP32 e nós simples tipo Arduino.

Por dentro, todos os aparelhos que correm modos de jogo usam o mesmo núcleo partilhado, escrito em C11, e os mesmos modos em Lua; só muda uma camada fina para cada tipo de hardware. Um modo escrito uma vez joga-se da mesma maneira numa caixa, num telemóvel ou num Raspberry Pi.

Como funciona o rádio

Os dispositivos falam por LoRa, um rádio de longo alcance e baixo consumo, no protocolo próprio da Atalaia, o Skirmesh-RF. Dois diagramas mostram o que o LoRa consegue e não consegue fazer num campo, e como um só protocolo corre em aparelhos muito diferentes. Nada disto passou ainda por um campo a sério.

Como funciona o rádio, em dois diagramas →

Modos de jogo

Os modos reagem à intenção («uma equipa está a capturar este dispositivo») e não ao hardware, por isso o mesmo script corre numa Field Box, numa caixa com teclado ou num telemóvel Android. Há sete modos, um modificador e as Ligaduras já escritos e testados em software; ainda nenhum correu num campo a sério.

Domínio

Uma equipa mantém premido o botão do dispositivo durante uns segundos para o capturar e pontua a cada intervalo enquanto o tiver. A outra equipa pode roubá-lo a qualquer momento.

Botões de equipa · uma caixa ou várias

Bomba / Rush

Os atacantes armam a bomba e depois defendem-na; os defensores têm de a desarmar antes do fim da contagem. Arma-se e desarma-se a manter um botão premido, ou com um código de teclado para cada equipa.

Botões de equipa ou teclado · tempos configuráveis

Baixa Confirmada

Cada participante leva uma etiqueta NFC assinada. Uma equipa lê numa estação as etiquetas que recolheu: a de alguém da equipa adversária confirma a baixa, a de alguém da própria equipa nega-a. Etiquetas falsificadas são recusadas.

Leitor NFC · etiquetas dos participantes

Ver os 7 modos →

O que se vê

Oito capturas do firmware real da Field Box (ESP32, LVGL 9.2, ecrã de 320 × 240) a correr no emulador Wokwi. A interface da caixa está em inglês. Ainda não foi testado em hardware físico.

Ecrã da Field Box: cabeçalho «GAME MASTER», pedido «Enter the admin PIN», quatro círculos vazios para os dígitos, indicação «# enter * delete».
A organização introduz o PIN de administrador para desbloquear a configuração.
Ecrã da Field Box: cabeçalho «CHOOSE A GAME» com a lista 1 «Bomb» (destacada a amarelo), 2 «Domination», 3 «Hold-All Domination», 4 «Last Stand» e 5 «Codes», e a indicação «1-9 choose # next * back».
Escolha do modo de jogo no menu da própria caixa.
Ecrã da Field Box: cabeçalho «START THE GAME?» sobre fundo laranja, nome do modo «Bomb», «Timer: 10 min», indicação «# start * back».
Confirmação do modo e do temporizador antes de arrancar.
Ecrã da Field Box: cabeçalho «STANDBY», texto «Hold the button to arm», «RED» a vermelho, «The bomb is not armed» em baixo.
À espera que a equipa vermelha mantenha premido o botão de armar.
Ecrã da Field Box: cabeçalho «ARMED» sobre fundo vermelho, contagem «5:00» em grande, legenda «until detonation».
Bomba armada; a equipa azul tem 5 minutos para a desarmar.
Ecrã da Field Box: fundo azul, visto branco, «DEFUSED» em grande, «BLUE team wins» abaixo.
A equipa azul desarmou a bomba a tempo.
Ecrã da Field Box: cabeçalho «JOINED GAME 4242», etiqueta «Game» à esquerda, «zone, node 7» à direita.
Caixa entrou no jogo de campo via cartão NFC ou consola série.
Ecrã da Field Box: cabeçalho «CODE», dois de quatro círculos preenchidos a amarelo, indicação «# enter * delete».
A escrever um código do modificador Códigos (pontos, pistas ou desbloqueios).

O manual de montagem tem o esquema de ligações completo e o guia da primeira gravação do firmware, para a Heltec WiFi LoRa 32 V4.

A app Android

A app desenha os mesmos ecrãs dos modos, a partir dos mesmos ficheiros YAML. Estas são as imagens dos testes da app, não fotografias de um telemóvel: ainda nada correu num telemóvel a sério.

Um telemóvel Android como bomba: o ecrã de contagem do modo («ARMED», «4:47», «until detonation») por cima de dois botões grandes, vermelho e azul, para manter premidos.
Um telemóvel como bomba, com os botões das equipas.
A vista de quem joga: o nome do jogo, 20:00 para o fim, os 20 pontos da equipa azul por cima dos 12 da vermelha, de quem é cada objetivo e o que aconteceu.
Quem joga segue o jogo no telemóvel.
O cronógrafo do marshal: o teclado da velocidade, o peso da BB e um «PASSA» verde, com a energia mais alta e o limite.
Cronografagem à entrada, com a medição assinada pelo marshal.

Experimenta já

Ainda não há firmware para gravar, mas o núcleo partilhado já corre num computador. O simulador joga um modo no browser: mantém premidos os botões das equipas, vê o ecrã de cada dispositivo e acompanha o registo de eventos. Os comandos abaixo escrevem-se num terminal.

Com um compilador de C

cmake -S core -B build -DATALAIA_SHARED=ON
cmake --build build
cd simulator
python -m atalaia_sim serve ../modes/bomb

Só com Docker

cd simulator
python ../tools/docker_sim.py serve ../modes/bomb

Depois abre http://localhost:8000. Precisas de Python 3.10 ou mais recente, com PyYAML. O guia do simulador (em inglês) explica todas as opções.

Roadmap

Seis fases. Cada uma acaba com um teste a sério no campo antes de a seguinte começar.

  1. Concluída

    0 · Alicerces

    Núcleo partilhado, sandbox Lua, codec Skirmesh-RF e simulador no browser. Prova superada.

  2. Software pronto

    1 · Uma caixa

    Firmware da Field Box a correr num emulador e manual de montagem; à espera das primeiras caixas.

  3. Em curso

    2 · Rede de campo

    Skirmesh-RF sobre LoRa, controlador de campo, API, consola da organização e um pacote de modos, testados em software; à espera das placas de rádio.

  4. 3 · Android e jogadores

    Dispositivos Android, módulo de E/S, app para quem joga e os modos que precisam dos telemóveis; muito já feito em software.

  5. 4 · Servidor do clube e jogo avançado

    Servidor do clube, cenários personalizados, modos avançados, ATAK.

  6. 5 · Comunidade

    Editor visual de modos, registo de modos, placa de suporte (PCB), traduções, guias de montagem.

O roadmap completo, com o que cada fase inclui e a sua prova →

Espaço da comunidade

É aqui que se vão encontrar campos, equipas e quem constrói o seu próprio material. Tudo é opcional: o espaço guarda só o que cada um decide publicar, e os dados de jogo ficam nos servidores de cada campo.

  • Aberto

    Discussão

    Perguntas, ideias, comentários à especificação e relatos de eventos. Ir para as Discussions

  • Previsto

    Galeria de montagens

    Fotografias, listas de material, ficheiros dos invólucros e esquemas de ligações de cada montagem, a começar pelos primeiros protótipos da Field Box.

  • Previsto

    Lista de campos e equipas

    Uma lista, só para quem se quiser inscrever, dos campos e equipas que usam a Atalaia, com a região, o tipo de espaço e um contacto.

  • Previsto

    Catálogo de modos e cenários

    O registo de modos, com descrições, modos para descarregar e avaliações da comunidade.

  • Mais tarde

    Estatísticas de utilização

    Totais anónimos de versões, plataformas e modos jogados, só para quem aderir. Desligadas por omissão.

  • Mais tarde

    Servidores de clube alojados

    Para clubes sem apoio informático, a preço de custo, com os dados de cada clube separados e exportáveis.

Participa

A Atalaia é feita por jogadores, donos de campos e makers. Já hoje podes ajudar:

Cada commit leva uma linha Signed-off-by, e o projeto é rigorosamente clean room, feito de raiz: nenhum código, firmware, manual, som ou imagem de qualquer produto comercial.

O emblema da Atalaia: três torres de vigia sobre dunas, com fogos de sinal no topo ligados por um arco, por cima da palavra ATALAIA.

O nome

Uma atalaia é uma torre de vigia: um posto de observação no alto de um monte ou à beira-mar, de onde se vigiava o horizonte e se passava o aviso. A palavra chegou ao português vinda do árabe aṭ-ṭalāʾiʿ, «os batedores», e ainda hoje se diz que alguém está de atalaia quando está atento ao que aí vem. Há atalaias espalhadas pela costa e pelo interior do país, e várias terras com o nome.

Um controlador de campo vê todos os dispositivos em jogo e avisa a organização mal alguma coisa muda. As atalaias também não dependiam de ninguém: trabalhavam com o que tinham à vista. E foram a primeira rede mesh de pouca largura de banda: fumo de dia, fogo à noite, passados de torre em torre. O Skirmesh-RF segue as mesmas regras, com LoRa.

Segurança no campo

Os dispositivos da Atalaia são equipamento de jogo, e devem parecê-lo: cores vivas, etiquetas bem visíveis a dizer «EQUIPAMENTO DE JOGO» ou «GAME PROP», e nada que se pareça com um engenho explosivo verdadeiro. Transporta-os em malas identificadas, nunca os deixes sem vigilância fora do campo e trata as baterias de lítio com cuidado.