# De onde vêm os dados

> A origem e a precisão de cada tipo de dado. Quando algo “parecer errado”, comece por esta página.

Fonte: https://war3ai.com/pt/docs/data-sources/

| Dado | Origem | Precisão |
|---|---|---|
| Unidades, recursos, ordens, habilidades, buffs, inventário | Bloco do mundo enviado pelo runtime a cada 50 ms | Período de publicação (ajustável até 16 ms) |
| Eventos de dano e abate | Registrados pelo runtime na thread do jogo, a cada golpe | Imediata |
| Outros eventos (aparecer, morrer, trocar de ordem, subir de nível…) | Comparação entre duas publicações consecutivas | Período de publicação |
| Tabela de produção (treino / pesquisa / construção / melhoria) | Campos de tempo da habilidade de produção do motor + tempo decorrido acumulado pelo runtime | Cerca de ±0.2 segundo de jogo |
| Atributos de combate, tabela de counters | Tabelas de dados do próprio jogo (extraídas do jogo na sua máquina) | Sem os modificadores de itens, auras e buffs |
| Caminhos | Transitabilidade do terreno no motor (células de 128) + árvores + área ocupada por construções, A* no lado do SDK | Uma célula; passagens mais estreitas que uma célula contam como bloqueadas |
| Horário do jogo | JASS `GetFloatGameState(GAME_STATE_TIME_OF_DAY)` | Período de publicação |
| Visibilidade | Máscara de visibilidade por jogador que o runtime calcula para cada unidade | Período de publicação |
| Contagem de tecnologia, viabilidade, ouro restante na mina | Consulta pela via rápida, direto ao motor | Imediata |

## Os dados do jogo não são distribuídos com o código

Tabelas de unidades, habilidades, itens, heróis, buffs, tabela de dano por tipo etc. vêm dos arquivos de jogo da Blizzard e **não entram no repositório**. Depois que você define a pasta do jogo na “Central de controle” do Farsight, eles são extraídos automaticamente do seu próprio jogo; também dá para rodar manualmente:

```bash
python data/tools/extract_game_data.py
```

O resultado fica em `data/game/` (fora do git): os arquivos originais `.slk` / `.txt` e os arquivos organizados `units.json`, `names.json`, `skills.json`, `items.json`, `heroes.json`, `buffs.json`.

## Alguns números concretos

| Grandeza | Valor |
|---|---|
| Um dia | 480 segundos de jogo (240 segundos de dia e 240 de noite); uma hora = 20 segundos de jogo; a partida começa às 8 da manhã |
| Dia | 6:00 ~ 18:00 |
| Coeficiente de armadura | 0.06 (da tabela de dados do jogo) |
| Capacidade do bloco do mundo | 16 jogadores, 1024 unidades, 256 detalhes de unidade, 256 itens no chão, 128 produções |
| Árvores | Até 4096 destrutíveis, atualizados a cada 2 segundos |
| Anel de eventos | 8192 entradas; se a leitura for lenta demais, há perda (o SDK detecta) |
| Grade do mapa | 128 unidades de jogo por célula, até 256 × 256 |

## Exemplos calibrados com medições reais

- Tempo de produção: Camponês 14.9, Fazenda 34.9, Iron Forged Swords 59.9 segundos de jogo, iguais aos enviados pelo runtime (erro menor que 0.2 segundo);
- Atributos de combate conferidos com o painel do jogo: Paladino com 650 de vida, 255 de mana, 3.9 de armadura e ataque 24 ~ 34; Soldado com a primeira melhoria de ataque, 13 ~ 15;
- O dano antes da armadura nos eventos de dano do motor (14 / 15 / 15) cai dentro do intervalo calculado por `stats()`;
- Caminhos: em Echo Isles, 116 × 88 células; distância por terra até o edifício principal do outro lado, 10642 (em linha reta, 9856); montar a grade leva 18 ms, e um A* cerca de 1 ms.
