BotStrikes

demo · 64 Hz · tick 0004096

Em desenvolvimento FPS tático 5v5 · PC · fase atual: API para IAs

HumansvsMachines

Humanos e inteligências artificiais na mesma partida, com as mesmas regras, as mesmas informações e os mesmos controles. Um shooter tático pensado para rodar em PCs antigos.

UserCmd v2 · 14 bytescliente → servidor · 64 por segundo
Humano 01 00 00 0081 0000 4000 000000FB 0F IA 01 00 00 0004 00A6 CF00 000000FC 0F sequênciateclasyawpitcharmares.tick visto

Humano: W + disparo · yaw 90,0° · pitch 0,0° · vê o tick 4091IA: A · yaw 292,0° · pitch 0,0° · vê o tick 4092

O mesmo formato para pessoas e IAs: os bytes não dizem quem os escreveu. O papel viaja no token assinado da conexão, e com ele o servidor aplica a percepção e os limites de cada liga.

O objetivo

As mesmas regras para pessoas e máquinas

O BotStrikes parte de uma pergunta: quem vence quando humanos e IAs jogam com exatamente as mesmas regras? Para respondê-la, é preciso um jogo em que uma IA seja só mais um jogador. Ela se conecta pelo mesmo protocolo documentado, envia as mesmas teclas e movimentos de mouse que uma pessoa e só recebe o que o servidor a autoriza a ver. Quem impõe isso é o servidor: não se confia no código de ninguém.

5v5

Tático de verdade

Hoje: recuo fixo que se aprende, precisão que depende do movimento e penetração conforme o material, com duas armas. Rodadas, economia e bomba chegam na F6. Não se adiciona conteúdo até que o núcleo cumpra seus critérios.

64Hz

Antitrapaça primeiro

O servidor decide cada movimento e cada disparo. Só envia os jogadores com linha de visão direta, sem margem: o que está atrás de uma parede não viaja pela rede. Enviar comandos mais rápido não faz você se mover nem atirar mais rápido.

60FPS · UHD 630

Pensado para qualquer PC

Objetivos: 1080p a 60 FPS numa Intel UHD 630 e 200 FPS ou mais numa GTX 750 Ti, com motor próprio em C++ e menos de 1 GB. Hoje roda só no Linux; o Windows chega na F8.

Modalidades

Quatro formas de se enfrentar

Todas usam o mesmo servidor e o mesmo comando de 14 bytes. Muda quem está do outro lado, e o quanto a mão da IA se parece com a de uma pessoa.

PessoaIA

Humanos vs Humanos

Liga Humanos

O shooter tático de sempre, num servidor que não deixa informação escondida para ser roubada.

Humanos vs IA

Liga Equivalente humano

O servidor já aplica à IA limites de mãos provisórios: ela vê o mundo com 150 ms de atraso e gira no máximo a 1.800 °/s. Eles ainda não estão validados; serão calibrados com dados de jogadores reais e publicados por temporada.

IA vs IA

Liga IA Livre

A liga de engenharia. Entre máquinas não há limites de mãos: mira e reflexos livres. O que nunca muda é a informação: cada IA recebe só o que uma pessoa veria na tela.

Misto

Liga Mista

Pessoas e IAs no mesmo time. Se houver uma pessoa na partida, todas as IAs jogam com os limites de mãos.

Status do projeto · 12 set 2026

Onde estamos

O jogo é construído por fases, e cada fase tem critérios que uma máquina verifica. O que não dá para medir, como a sensação ao se mover ou ao atirar, é aprovado por uma pessoa antes de avançar. Ainda não há download público.

  1. F0Ambiente
  2. F1Movimento
  3. F2Disparo
  4. F3aRede
  5. F3bDisparo em rede
  6. F4API para IAs
  7. F5Mapa e gráficos
  8. F6Bomba 5v5
  9. F7Ligas e torneios
  10. F8Windows
  11. F9Conteúdo

FechadaEm andamentoPendente

F3b · falta o teste humanoDisparo em rede

Movimento (F1) e disparo local (F2) estão fechados: o fundador os testou e os aceitou para avançar. A rede (F3a) funciona: servidor autoritativo a 64 Hz, transporte criptografado, visão decidida pelo servidor e colisão entre jogadores. Agora o servidor também decide cada disparo:

  • Cadência, munição, recarga, recuo, dispersão, penetração, dano e morte são calculados pelo servidor
  • Compensação de latência limitada a 187,5 ms, sem poder saltar para trás bem na hora do disparo; um atraso sustentado é tratado como uma conexão lenta (risco residual limitado a 187,5 ms)
  • Dispersão com o segredo da partida: ninguém a prevê sem ele
  • Com 100 ms de latência, jitter e 2% de perda, cliente e servidor coincidem em 518 de 519 disparos (cenário sintético, rifle sem dispersão)
  • Só viajam os jogadores com linha de visão, e um jogador morto não recebe ninguém
  • Uma hora de fuzzing do protocolo v2, o vigente: 458 milhões de execuções, zero falhas
  • Auditoria adversarial do disparo em rede: sete achados, cada um corrigido e coberto por um teste
  • Adaptação de relógio entre máquinas: em simulação, com ±1% de deriva durante um minuto, zero comandos perdidos
  • Partida com duas pessoas em duas máquinas diferentes, disparando em rede

Medido · não estimadoOrçamentos de um 5v5

Trabalho do servidor por tick, p990,066 ms / 1 ms
Download por jogador, pior caso21.440 B/s / 32.000
Upload por jogador7.744 B/s / 8.000

10 jogadores simulados atirando de verdade durante 10 s no campo de testes (281 disparos, 18 mortes), num i7-10700, contando os cabeçalhos IPv6. O p99 varia entre execuções; todas as registradas ficam abaixo de 0,5 ms. Em amarelo, o que está perto do teto. A medição será repetida com o mapa definitivo.

Oito partidas 5v5 ao mesmo tempo na mesma máquina, cada uma com 5 pessoas e 5 IAs, todas simuladas: tick p99 entre 0,116 e 0,212 ms, com um teto de 2 ms.

Reprodutível: um milhão de passos de simulação dão o mesmo hash, 13f4506939c2211d, no GCC, no GCC com sanitizers e no Clang.

Desafios em aberto

Os problemas que ainda não estão resolvidos, e como planejamos resolvê-los.

  • Mãos humanasOs limites de reação e giro das IAs são provisórios. Calibrá-los exige telemetria de jogadores reais, que ainda não existe.
  • Ajuda de IA onlineUma pessoa assistida por uma IA só pode ser detectada por estatística. Os resultados oficiais de Humanos vs IA serão validados em LAN ou em eventos presenciais.
  • Visão de 360°Às IAs só chega o que cabe no campo visual de uma tela. Para as pessoas, é enviado todo jogador com linha de visão, mesmo que esteja às costas delas; limitá-las também ao seu campo visual é uma decisão em aberto do fundador.
  • Mapa completoA visão do servidor custa mais com mais paredes. Os números de hoje são de um campo pequeno e voltarão a ser medidos com o mapa da F5.
  • Mais de 10 jogadoresO upload já usa 97% do seu teto e, com 16 jogadores, o download passaria dos 32 KB/s no pior caso. É preciso compressão delta antes de qualquer modo maior que 5v5.
  • Computadores mais fracosAbaixo da UHD 630 (por exemplo, netbooks educacionais com gráficos UHD 600, 4 GB e tela de 1366×768) ainda não há objetivo. Se você tem um, queremos medi-lo.
  • Intel no WindowsOs drivers OpenGL da Intel no Windows são fracos. Por isso o plano inclui um backend Direct3D 11 na F8.
  • Código de terceirosReceber IAs de outras pessoas exige isolá-las antes do primeiro torneio. Instalar o Docker não basta para isso: isso será revisado na F4.

Requisitos de hardware · planejados

Pensado para o PC que você já tem

O shooter competitivo é jogado em lan houses, notebooks de escritório e PCs de dez anos atrás. Se o jogo não roda ali, quem vence a comparação entre pessoas e máquinas é o melhor hardware. Por isso o desempenho é um contrato: hoje cada verificação completa exige os orçamentos de rede e de servidor, e antes da F5 uma queda de FPS maior que 5% em relação à linha de base também fará a verificação falhar.

PerfilHardware de referênciaObjetivoEvidência hoje
Notebook de escritório (o perfil mais exigente)Intel HD 620, 2 núcleos / 4 threads, 8 GB, disco mecânico1080p ≥ 60 FPS, carregamento ≤ 15 sPendente Hardware ainda a conseguir.
iGPU de desktopIntel UHD 6301080p, frame p99 ≤ 16,6 msPendente A iGPU da máquina de testes ainda não está ativada.
Placa dedicada antigaGTX 750 Ti · Radeon HD 7870 2 GB≥ 200 FPS; na HD 7870, média ≥ 300 e 1% low ≥ 200Medido Campo de testes na HD 7870: 5.916 FPS de média, p99 0,220 ms. É uma cena pequena, não uma partida 5v5.
Servidor1 núcleo de um i7-10700 por partidaTick p99 ≤ 1 ms num 5v5Medido 0,066 ms com 10 jogadores simulados atirando, campo de testes.
ConexãoQualquer banda larga doméstica≤ 32 KB/s de download e ≤ 8 KB/s de upload por jogadorMedido 21,4 e 7,7 KB/s no pior caso.
Memória e CPUComputador com 4 GB ou maisRAM ≤ 1,5 GB, VRAM ≤ 384 MB, CPU ≤ 5 ms por frame numa CPU de 4 núcleos de 2015Pendente Será medido com o mapa e os gráficos da F5.
InstalaçãoDisco rígido ou SSD< 1 GB na primeira versão públicaPendente Ainda não há instalador.
SistemaLinux hoje; Windows 10/11 na F8Mesmos orçamentos no Windows com a UHD 630Pendente Ainda não há build de Windows.

Por que estes números: a UHD 630 e a HD 620 são gráficos integrados comuns em computadores de escritório de 2017–2018; 200 FPS numa placa de 2014 deixam margem para monitores de alta frequência; 1 GB dá para baixar em conexões lentas. Ainda não medimos quantas lan houses e casas da região têm algo pior: se o seu computador é mais antigo, queremos saber. O que não está medido diz “pendente”.

Comparar evidências, não trocar previsões.

Não pedimos que você acredite no BotStrikes. Cada número marcado como medido tem um registro com seu cenário, sua máquina e sua data; o resto está marcado como objetivo ou pendente. O código ainda é privado: se você quiser o registro de um número, peça e nós o enviamos com o respectivo método.

Se você tem um PC antigo, uma IA ou uma objeção sobre a justiça entre pessoas e máquinas, o convite é o mesmo: traga seus dados (hardware, sistema, o que você mediu e como) e nós os comparamos.

Enviar evidências

Patrocinadores

Você oferece o prêmio. Nós oferecemos a arena.

Procuramos patrocinadores fundadores para os prêmios dos primeiros torneios: humanos contra humanos, humanos contra IA, IA contra IA e times mistos. A meta é que cada partida possa ser reproduzida e auditada, e que os resultados oficiais de Humanos vs IA sejam disputados em LAN.

Hoje não pedimos dinheiro: pedimos uma carta de intenção sem compromisso. Os prêmios serão definidos com regulamento público, entidade organizadora e datas quando existir a plataforma de torneios (fase F7).

Vamos falar de patrocínio

contacto@botstrikes.com

Ideias de prêmio

Copa por modalidade
“Copa [sua marca] · IA vs IA”: o prêmio de uma modalidade leva o seu nome.
Desafio humano
Para o primeiro time de pessoas que vencer a IA campeã.
Prêmio de engenharia
Para a melhor IA com limites humanos da temporada.
Em espécie
Hardware, créditos de computação ou bolsas para quem desenvolve IAs.

O que a sua marca poderia receber

  • O seu nome no torneio e no prêmio.
  • Presença na visão de espectador e nos replays, quando existirem (F6–F7).
  • Um espaço no botstrikes.com.
  • Contato com quem construir IAs para a plataforma.

Para quem programa IAs

Sua IA, com as mesmas regras que todos

  • Protocolo documentado. Sua IA é só mais um cliente de rede: o servidor não tem atalhos nem hooks especiais.
  • A informação de uma pessoa. Recebe só o que uma pessoa veria na tela: jogadores no seu campo visual, com linha de visão e cobrindo pelo menos 2 × 2 pixels em 1080p. Quem aplica isso é o servidor.
  • As mãos de um teclado e um mouse. Um comando por tick: teclas mantidas, ângulos de visão e arma.

A percepção e os limites de mãos já rodam no servidor, e o SDK Python e o gym de treinamento já funcionam em testes internos, embora ainda não tenham sido publicados. O protocolo já está documentado.

Ler a documentação
Python · protocolo v2
# Um UserCmd: a única coisa que um jogador envia, pessoa ou IA.
cmd = struct.pack("<IHHhBBH",
    sequence,          # sobe de um em um por tick
    FORWARD | FIRE,    # teclas mantidas
    yaw_units(90.0),   # 65.536 unidades por volta
    pitch_units(0.0),  # 1/256 de grau
    RIFLE, 0,          # arma pedida, reservado
    view_tick)         # tick em que você desenhava os demais
assert len(cmd) == 14