Prévia pública Novidades: interface e entrada · mods de jogabilidade · gateway · MCP

Deixe qualquer agente de LLM projetar sozinho a IA de Warcraft III

O War3AI transforma o jogo numa interface feita para agentes — o estado completo do mapa inteiro a cada 50 ms, comandos semânticos executados em cerca de um frame, cada um com recibo e código de motivo. Entregue a documentação ao Claude, GPT, Gemini, Qwen ou qualquer agente — ele escreve o Bot, entra em partida, lê os resultados e se aprimora sozinho.

Windows 10/11 · Warcraft III 1.27a · Dê dois cliques em start.bat, o resto se instala sozinho

agent-session inst 20 1.27 2×
Você

Humanos. Se o herói ficar abaixo de 40% de vida, recue para a base; depois que escurecer, com 3 soldados ou mais, ataque o acampamento de creeps mais próximo.

Li llms.txt e api.json e gerei night_raider.py, usando só 8 APIs verificadas.

night_raider.py api.json BOT_HANDBOOK.md
from openwar3 import Bot

class NightRaider(Bot):
    def on_tick(self, g):                     # cerca de 5 vezes por segundo
        halls = g.my_buildings({"htow", "hkee", "hcas"})
        army, camps = g.my_army(), g.creeps()
        if not halls:
            return
        home = halls[0]
        with g.batch():                       # os comandos deste tick saem de uma vez
            for h in g.my_heroes():
                if h.hp < h.hp_max * 0.4:     # proteger o herói
                    g.move(h, home.x, home.y)
            if g.is_night() and len(army) >= 3 and camps:
                camp = min(camps, key=lambda c: g.path_distance(home, c) or 1e9)
                g.attack_move(army, camp.x, camp.y)   # creepar à noite

    def on_event(self, g, ev):
        if ev.kind == "production.done" and ev.owner == g.me():
            print("Concluído", ev.done_code, f"{ev.value:.1f}s")
Minimapa 21:40 · noite
last_seen · há 42s walk_path → attack_move
Eventos Ao vivo
  1. production.donehbar → hfoo · 14.9s
  2. order.changedHamg → attack
  3. damagehfoo → ngno −14 · normal
  4. receiptattack_move ×5 ✓ Aceito · 6 µs
Conectado Snapshot #18342 · 50 ms 12 comandos neste tick · enviados em lote fair=True

Compatível com qualquer modelo ou agente que escreva código ou gere JSON

Claude GPT Gemini DeepSeek Qwen Kimi GLM Llama Claude Code Cursor Codex LM Studio Ollama
50 ms
Ciclo de envio do estado do mapa
Ajustável até 16 ms; o cliente lê uma cópia em ~0.4 ms
~1 frame
Execução do comando
4~8 µs por comando na thread do jogo
3.000 cmd/s
Vazão de comandos
6 processos em paralelo, espera mediana de 0.06 ms
103
APIs
98 com caminho interno verificado em partidas reais
1.024
unidades com estado completo
Vida e mana, ordens, quem está atacando, recargas, buffs, inventário

Números medidos em partidas reais numa instância de teste da 1.27 (2026-09-23 / 24); metodologia em Plataforma · Desempenho.

Fluxo de trabalho

De uma frase a uma IA que sabe lutar

Não precisa saber programar — você explica como quer que ela jogue; o agente escreve o código, entra em partida, analisa o resultado e ajusta até ficar do seu jeito.

  1. 01

    Descreva a estratégia em linguagem comum

    “Humanos, Arquimago primeiro; dois quartéis fazendo soldados e fuzileiros; com 12 unidades, ataque a expansão inimiga; recue o herói abaixo de 30% de vida.”

  2. 02

    O agente lê a documentação e escreve o Bot

    Entregue a ele llms.txt, api.json e o manual. As APIs usam os nomes do jogo (códigos de quatro caracteres, nomes de habilidades), e o modelo entende de primeira.

  3. 03

    Um comando para entrar em partida

    tools/play.py abre o jogo, injeta o runtime, inicia a partida e sobe o Bot. Velocidade, raça, dificuldade e modo justo são parâmetros.

  4. 04

    Ler recibos e eventos e se corrigir

    Cada comando tem recibo e código de motivo; o fluxo de eventos registra cada golpe de dano, cada abate e cada produção. Com isso, o agente localiza o problema, altera o código e joga de novo.

As etapas 2 a 4 formam um ciclo fechado — recibos e eventos são dados estruturados, então o agente sabe o que deu errado sem precisar ver a tela. Iteração autônoma do agente
Recursos

Uma interface feita para agentes

Observação sem espera, comandos com recibo, resultados em eventos — é exatamente o feedback estruturado, verificável e autocorrigível de que um modelo precisa.

Estado completo do mundo, sem espera

Recursos e comida de 16 jogadores; vida e mana, ordens, quem está atacando, recargas de habilidades, buffs e inventário de até 1024 unidades; itens no chão, árvores, filas de produção, dia e noite. O runtime envia tudo para a memória compartilhada, e ler uma cópia leva ~0.4 ms.

Comandos semânticos, cada um com recibo

Mover, atacar, coletar, construir, treinar, lançar feitiços, aprender habilidades, reviver, usar itens, comprar… Se foi aceito e, se não, por quê — você sabe no mesmo frame.

Fluxo de eventos

Unidades aparecendo / morrendo, troca de ordens, herói subindo de nível, itens aparecendo; cada golpe de dano em nível de motor (origem, tipo de ataque, dano antes da armadura) e produção concluída — inclusive as do adversário.

Lotes executados em um frame

Os comandos dentro de with g.batch() são enviados como um lote. Nos testes, 8 movimentos caíram de 68 ms para 6.5 ms.

Cálculo de combate e caminhos

stats / time_to_kill usam a tabela de counters do próprio jogo e a tecnologia em tempo real; path_distance / walk_path rodam A* na grade de terreno do motor.

Modo justo

Só enxerga unidades, itens, produção e eventos dentro da visão; last_seen lembra dos inimigos na névoa de guerra. É a regra da Arena.

Documentação feita para modelos

O api.json é gerado a partir do código, e cada API traz status de teste, faixa de latência e mecanismo interno, então o modelo não precisa adivinhar; llms.txt / llms-full.txt permitem ao agente ler o site inteiro de uma vez.

Arquitetura

Um runtime, um protocolo, qualquer IA

O runtime é injetado no jogo original e, na thread do jogo, coleta o mundo inteiro, executa comandos e reporta os resultados; sua IA conversa com ele por um protocolo W3P versionado — pelo SDK em Python ou por qualquer linguagem que leia e escreva memória compartilhada.

Seu agente / Bot
Qualquer modelo, qualquer linguagem
Claude CodeCursorChatGPTQwen localBot em PythonIA de referência
Decisão
import openwar3 · ou gateway WebSocket / JSON · MCP
OpenWar3 SDK
Python · openwar3
Game / BotSnapshot w3worldVia rápida w3fastcombat (cálculo de combate)pathing (caminhos)w3claim (reivindicações)canvasjass (canal JASS)schemes (esquemas)
Interface
Mundo enviado a cada 50 ms · comandos em ~1 frame · recibo para cada um
Protocolo W3P v2
Memória compartilhada · cópia zero · versionado
War3WorldWar3EventsWar3MapWar3TreesWar3Fast (vias de comando)War3Canvas (canvas)
Protocolo
Execução em lote na thread do jogo · 4~8 µs por comando · orçamento de 4 ms por esvaziamento
W3 Runtime
Roda na thread do jogo
Publicador do estado do mundoFluxo de eventosExecutor de comandos semânticosConsultasPermissões e perspectivaCanvas desenhado pelo runtimeChamadas JASSCompatibilidade de versõesSaúde e disjuntores
Runtime
War3.exe 1.27 · jogo original, nenhum arquivo no disco é modificado
Código

Escrever é como
comandar um exército

A fachada tem só duas classes — Bot cuida do ritmo, Game cuida de ver e agir. Unidades por código de quatro caracteres, habilidades por nome de ordem, os mesmos nomes do jogo.

  • Sem leitura é None, não 0
  • Comandos aceitam uma unidade ou uma lista
  • Fila com Shift via queue='after'
  • Recibo aceito ≠ concluído — confira o efeito no snapshot e nos eventos
Modelo mental: snapshot, comando, evento, tick
from openwar3 import Bot

class FocusFire(Bot):
    """Foca no inimigo que morre mais rápido, não no mais próximo; recua as unidades feridas."""

    def on_tick(self, g):
        army, halls = g.my_army(), g.my_buildings()
        foes = [e for e in g.enemies(fighters_only=True) if e.visible_to(g.me())]
        if not army or not foes or not halls:
            return
        home = halls[0]
        # considera counters, armadura, melhorias de ataque/armadura e a vida atual do alvo
        target = min(foes, key=lambda e: g.time_to_kill(army, e) or 1e9)
        with g.batch():                                   # dezenas de comandos, uma só espera pela thread do jogo
            for u in army:
                if u.hp < u.hp_max * 0.35:
                    g.move(u, home.x, home.y)             # recua os feridos
                elif (t := g.current_target(u)) is None or t.handle != target.handle:
                    g.attack(u, target)                   # só ordena a quem ainda não ataca o alvo
A versão completa e executável está em brains/examples/micro_bot.py (foco de fogo, recuo de feridos, proteção do herói, creeps à noite).
Agentes de IA

Seis formas de conectar um LLM ao Warcraft

Cinco já funcionam hoje, uma está em desenvolvimento. Elas não se excluem — na mesma partida, um Bot escrito por um agente executa, um modelo local aconselha, outro modelo dá voz às unidades, e você ainda pode intervir com uma frase a qualquer momento no Claude Code.

Offline · escrever código

O agente escreve o Bot

Claude Code, Cursor, Codex, ChatGPT… leem a documentação, escrevem o bot.py, entram em partida, analisam recibos e eventos e corrigem. A forma mais rápida de começar, sem precisar programar.

0 linhas de código escritas por você
Saiba mais
Online · conselheiro

LLM como coach de estratégia

A cada poucos segundos de jogo, um resumo da situação vai para o modelo, que devolve JSON estrito — diagnóstico, proporção de trabalhadores, o que priorizar, a postura para este minuto. A camada de regras aplica lista de permissões + limites antes de executar.

1.09 s Mediana, Qwen3.6-35B-A3B local
Saiba mais
Online · personagens

Faça as unidades falarem

Balões sobre qualquer unidade, com qualquer identidade, e saída em streaming de um LLM local — roda de conversa dos camponeses, diálogos entre heróis, narração da partida.

0.3 s Latência do primeiro token (modelo local)
Saiba mais
Online · ferramentas

O LLM usa as ferramentas diretamente

Conecte um servidor ao Claude Code, ao Claude Desktop ou a qualquer cliente com suporte a MCP, e o LLM passa a ver a partida, dar comandos, falar com o jogador na tela, perguntar ao jogador com cartões e tirar capturas de tela diretamente. Sem escrever código antes.

10 ferramentas, conectadas com um comando
Saiba mais
Online · qualquer linguagem

Conexão direta pelo gateway

O gateway WebSocket / JSON expõe as APIs públicas como elas são: JS, C#, Go, páginas de navegador e programas em outra máquina podem ver a partida, dar comandos, assinar eventos e pôr botões dentro do jogo. O papel de jogador só comanda o próprio lado e só enxerga a própria visão.

+1 ms de latência extra sobre a via rápida
Saiba mais
Em breve · jogar direto

O agente entra em campo

Arena: o árbitro filtra as observações pela visão, verifica a propriedade das unidades e marca os ticks pelo tempo de jogo, para que duas IAs externas decidam quem vence na mesma partida. Qualquer linguagem e qualquer modelo podem jogar direto.

P6 Fase da Arena
Saiba mais
Extensões de jogo Novo

Além das partidas — crie sua própria jogabilidade dentro do jogo

Desenhe sua própria interface na tela, com botões clicáveis e teclas de atalho que respondem; chame de fora todas as funções que um autor de mapas tem e ponha um parceiro de IA para jogar com você em mapas RPG; transforme uma jogabilidade nova inteira num mod, que você troca com um clique e compartilha à vontade, assim como os esquemas de IA.

Desenhado pelo runtime

Canvas

Caixas de texto, painéis, barras de progresso, imagens, círculos colados ao terreno, rotas com setas. Acompanham as unidades; fonte (inclusive chinesa), cantos arredondados e transparência como você quiser; desenha só na sua tela, seguro também em partidas multijogador.

0.3 ms Custo por frame (9 elementos)
Saiba mais
1291 funções

Canal JASS

As funções que um autor de mapas usa, chamadas direto pelo nome — criar unidades, efeitos, painéis, diálogos, sons, câmera, névoa de guerra… Funciona no console Farsight, na linha de comando, por HTTP e em Python; comandos de chat, menus de botões e setas do teclado também se conectam.

94 funções com o efeito conferido uma a uma em partidas reais
Saiba mais
RPG / mapas personalizados

Companheiro de IA

Segue você, ajuda a lutar, cura você quando sua vida está baixa e conversa com você — as falas podem vir de um LLM local. Quatro modos: aliado, próprio, adotar uma unidade do mapa, só fala; os nomes das unidades personalizadas são lidos direto do mapa.

37 / 38 mapas RPG com os nomes das unidades personalizadas lidos
Saiba mais
Trocar · compartilhar · importar

Esquemas de IA

Uma IA, uma pasta. Troque com um clique — até a partida em andamento pode passar para outra IA; exportar um zip já é compartilhar, e esquemas de outras pessoas só rodam depois que você confirma que confia neles; os resultados de cada esquema são contabilizados automaticamente.

zip Exportar é compartilhar; confirme a confiança antes de importar
Saiba mais
Clicar · apertar

Interface e entrada

Botões e cartões de escolha desenhados podem ser clicados, com destaque automático ao passar o mouse; registre teclas de atalho, clique no chão para escolher uma posição, leia para onde o mouse aponta. Quem o jogador selecionou, que feitiço lançou e o que digitou no chat entram no fluxo de eventos. Os botões ficam abaixo do cursor do mouse, e o jogo não recebe o clique dado neles.

16 / 16 itens conferidos em partidas reais
Saiba mais
Um arquivo, uma jogabilidade

Mods de jogabilidade

Você joga, o mod cria os desafios: prepara o início, gera inimigos por tempo, oferece três reforços para escolher a cada nível, chama ondas por tecla de atalho, põe torres com um clique no chão, decide o resultado. Herde de openwar3.Mod e escreva algumas funções; dois exemplos embutidos: Roguelike de Heróis e Defesa Infinita.

~150 linhas de código para um mod completo
Saiba mais
Medições

Baixa latência, medida

Cruzar processos não é lento; lento é “cada requisição esperar uma volta do loop de mensagens” e “um único lock para a máquina inteira”. A via rápida dá a cada cliente uma via exclusiva, sem lock, executada em lote dentro da distribuição de eventos da thread do jogo.

Vazão de comandos
Antes 88 3.000 cmd/s
6 processos em paralelo
Espera mediana em paralelo
Antes 67 ms 0.06 ms
Canal de controle antigo → via rápida
16 comandos
Antes 121 ms 13 ms
Um a um → um lote
Uma rodada de decisão do cérebro de referência
Antes 0.15~0.56 s 0.02~0.07 s
Partida de 39 minutos, 0 erros
Roadmap

Cada fase é validada em partidas reais

P0 ~ P3, P5, as extensões de jogo, o gateway e o MCP já rodam na 1.27; a seguir vêm a compatibilidade com várias versões e a Arena.

  1. P0 Via rápida + fachada do SDK Concluído
  2. P1 Comandos semânticos + recibos Concluído
  3. P2 Camada de informação em tempo real Concluído
  4. P3 Migração do cérebro de referência Concluído
  5. P5 Permissões e perspectiva Concluído
  6. EX Extensões de jogo: canvas · JASS · companheiro · esquemas Concluído
  7. EX+ Interface e entrada · mods · gateway · MCP Concluído
Roadmap completo

Apenas para clientes que você possui legalmente

Local, rede local, partidas criadas por você. Não modifica o Game.dll no disco, não distribui nenhum arquivo da Blizzard (os dados do jogo são extraídos do seu próprio jogo), não pode ser usado na Battle.net nem em qualquer servidor com anti-cheat.

Limites de uso

Entregue esta frase ao seu agente

Leia https://war3ai.com/pt/llms-full.txt e use o OpenWar3 para escrever um Bot de Humanos para mim — Arquimago primeiro, creepar com as tropas à noite, recuar o herói abaixo de 40% de vida.