Docs Referência
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.
| 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:
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.