Seu robô é controlado por um script JavaScript que você escreve. Esta referência cobre as regras do jogo (energia, pontuação, termos) e a API que seu bot usa pra lutar.
🧭 Termos rápidos
Termo
O que é
Tick
Um "quadro" da simulação. A cada tick, o motor chama run() uma vez em cada robô — uma batalha típica dura algumas centenas de ticks.
Bearing
Ângulo relativo, em graus, até um alvo/direção — não é a direção absoluta na arena.
Range
Distância até o alvo, em pixels de arena (a arena tem 800×600).
Prática
Batalha rápida contra um bot de exemplo, pra testar seu código. De graça, sempre — não gasta a energia da conta nem muda ELO.
Desafio
Batalha real contra o bot de outro jogador (1v1 ou em equipe). Muda o ELO dos dois lados.
Rumble
Fila automática que casa seu bot com adversários de ELO parecido em segundo plano. É a única coisa que consome a energia da conta.
⚡ Energia — dois medidores diferentes com o mesmo nome
É fácil confundir os dois. São contadores separados:
Onde
Como funciona
Dentro da batalha (a "vida" do robô)
Todo robô sempre começa a lutar com 100 de energia, não importa quanta energia sua conta tem. Ela cai assim:
bater na parede ou num obstáculo: -1 por tick de contato;
colidir com o robô adversário: -0.6 pra cada lado;
ser atingido por um tiro: -3× o poder do tiro (e mais um pouco se o poder for acima de 1 — um tiro no poder máximo, 3.0, tira cerca de 11).
Quando chega a 0, o robô é destruído (onDeath) e a batalha termina quando só sobra um lado. Atirar também custa energia — o poder do tiro (0.1 a 3.0) sai da sua energia na hora, acerte ou erre. Se acertar, você recupera 3× o poder de volta — atirar bem se paga, atirar à toa te esvazia.
Da conta (o número no topo da tela)
Um segundo medidor, de 0 a 100 por bot, que não tem nada a ver com o de cima. Regenera sozinho com o tempo (cheio em ~6h) e só é gasto pelo rumble automático (20 por entrada). Batalhas de prática e desafios contra outros jogadores são sempre de graça — nunca mexem nesse número.
🏆 Pontuação e ELO
Regra
Detalhe
Cada bot tem seu próprio ELO
Não existe "ELO da conta" — se você tem 3 bots, são 3 números diferentes. O pill do topo mostra o melhor deles.
Só batalhas de verdade valem ponto
Desafios (1v1 e equipe) e o rumble atualizam o ELO dos dois lados. Batalhas de prática contra o bot de exemplo nunca mudam ELO.
Fórmula
ELO clássico: vencer tira pontos de quem perdeu (mais pontos quanto maior a diferença de ELO — vencer um favorito vale mais); empate reparte a diferença; perder tira os seus.
🕓 no ranking
Bot que não luta há muito tempo perde posição no ranking (pra não travar o topo pra sempre) mas o ELO real dele não muda — é só a exibição que "esfria".
Funções que seu bot define
Função
Quando é chamada
run(snapshot)
A cada tick. snapshot.self traz sua posição/direções/energia; snapshot.events lista tudo que aconteceu neste tick.
onScannedRobot(event)
Seu radar encontrou o adversário. event.bearing (ângulo relativo à sua direção), event.range (distância), event.energy (energia dele).
onHitWall(event)
Você bateu na parede da arena. event.damage.
onHitObstacle(event)
Você bateu num obstáculo (só existe em alguns estágios da Campanha). event.damage — mesmo dano de bater na parede.
onHitBot(event)
Colidiu com o outro robô.
onBulletHit(event)
Um tiro seu acertou o adversário.
onHitByBullet(event)
Você foi atingido por um tiro.
onDeath(event)
Seu robô foi destruído.
onWin(event)
Você venceu a batalha.
Ações (o que seu bot pode fazer)
Ação
Faz o quê
setSpeed(v)
Velocidade desejada, de -8 a 8. Acelera/freia aos poucos, não é instantâneo.
turnBody(graus)
Gira o corpo do tanque. Até 10°/tick.
turnGun(graus)
Gira o canhão, independente do corpo. Até 20°/tick.
turnRadar(graus)
Gira o radar, independente do canhão. Até 45°/tick. Só o radar detecta o adversário — o canhão sozinho não escaneia.
fire(poder)
Atira com poder de 0.1 a 3.0. Poder maior = mais dano, bala mais lenta, mais energia gasta (e mais energia recuperada se acertar).
Exemplo mínimo
function run(snapshot) {
setSpeed(4);
turnRadar(15);
}
function onScannedRobot(event) {
turnGun(event.bearing);
fire(2);
}
function onHitWall() {
turnBody(90);
}
🤖 Prompt para gerar bots com sua IA
Copie o texto abaixo e cole como primeira mensagem numa IA de sua preferência (ChatGPT, Gemini, Claude, etc.) — ele explica as regras do jogo e a API do bot em detalhe, pra qualquer IA gerar scripts prontos pra colar no editor.
Carregando...
Tanklang
Programe. Batalhe. Suba de ranking.
Escreva o código. Vença a batalha.
Tanklang é um jogo de programação: você escreve o robô em JavaScript e ele luta sozinho, em tempo real, contra os robôs de outros jogadores.
Programe seu robô em JS, batalhe em tempo real e suba no ranking.
Teste agora, sem cadastro
Clique nos botões: o robô e o código JavaScript mudam na hora.O alvo atira, mas não causa dano.
🧠Programe a estratégia do seu robô em JavaScript
⚔️Batalhas automáticas contra robôs de outros jogadores
Crie seus bots, dispute o ranking e acompanhe seu histórico de duelos.
Esperando a autorização do seu responsável
Um modo por vez: codar, assistir ou decidir o próximo passo.
Crie seu primeiro robô
Selecione ou crie um bot pra entrar na fila.
ELO
–
Energia
–/100
Últimas 5
Peças
Modo equipejunte 2 a 4 bots e lute em time
Guerra de clã
Chat do clã
Data
Oponente
Tipo
Resultado
Elo
Ticks
Nenhuma batalha ainda pra este bot.
Comunidade
Ao vivo agora
Nenhum duelo em andamento no momento.
Lutas recentes
Ainda não há combates públicos.
Campeonatos
⭐
Passe Premium
Nada disso deixa o seu bot mais forte. Fila rápida, desafios e prática continuam grátis e sem limite pra todo mundo.
Trilha premium do passe
Skins avulsas
Indique e ganhe
Minhas compras
Cada pedido com o status atualizado. Pedido pago dá pra reembolsar em até 7 dias.
👤 Sua conta
Minhas compras
Resumo da conta
🤖
–
Bots ativos
⚔️
–
Batalhas
🏆
–
Vitórias
💥
–
Derrotas
🤝
–
Empates
📈
–
Taxa de vitória
⭐
–
Melhor ELO
🎖️ Passe de temporada
Suba de nível jogando. Cada nível dá um cosmético (título ou skin) — nunca peça de combate. A trilha grátis é de todo mundo; a premium vem com o Passe Premium.
——
Trilha premium do passe
✅ Missões diárias
Resetam à meia-noite (horário de Brasília). Complete as 3 pra ganhar um bônus de energia em todos os seus bots.
🪄 Gerar bots com sua própria IA
Conecte a chave de API da sua conta Anthropic ou OpenAI pra descrever um comportamento em texto e receber um script pronto no editor — o custo da chamada é seu, não nosso, e a chave fica guardada criptografada (nunca é reexibida depois de salva). Sem chave conectada, o botão "Gerar com IA" no editor fica indisponível.
🔌 Conectar sua IA (MCP)
Com o MCP, a IA que você já usa (Claude, ChatGPT, Cursor, VS Code…) lê as regras, cria e edita seus robôs e roda treinos por você. Ela só mexe nos seus robôs e só faz o que você faria no editor.
Copie agora: a chave só aparece esta vez. Ela funciona como uma senha — não mostre pra ninguém.
Depois de conectar, peça pra IA: "leia as regras do Tanklang e melhore meu robô".