# Откуда данные

> Источник и точность каждого вида данных. Если что-то «выглядит не так», начните с этой страницы.

Источник: https://war3ai.com/ru/docs/data-sources/

| Данные | Источник | Точность |
|---|---|---|
| Юниты, ресурсы, приказы, способности, баффы, инвентарь | Блок мира, который рантайм публикует каждые 50 ms | Период публикации (можно уменьшить до 16 ms) |
| События урона и убийств | Рантайм записывает прямо в игровом потоке, каждый удар | Мгновенно |
| Прочие события (появление, гибель, смена приказа, повышение уровня…) | Сравнение двух соседних публикаций | Период публикации |
| Таблица производства (тренировка / исследование / строительство / улучшение) | Поля таймера в способностях производства движка + прошедшее время, которое накапливает рантайм | Около ±0.2 игровой секунды |
| Боевые характеристики, таблица бонусов типов атаки и брони | Встроенные таблицы данных игры (извлекаются из вашей локальной копии игры) | Без учёта модификаторов от предметов, аур и баффов |
| Поиск пути | Проходимость рельефа в движке (клетка 128) + деревья + площадь зданий, A* на стороне SDK | Одна клетка; проходы уже клетки считаются непроходимыми |
| Игровое время суток | JASS `GetFloatGameState(GAME_STATE_TIME_OF_DAY)` | Период публикации |
| Видимость | Маска видимости, которую рантайм считает для каждого юнита по каждому игроку | Период публикации |
| Счётчики технологий, выполнимость, остаток золота в руднике | Запрос через быструю полосу напрямую к движку | Мгновенно |

## Игровые данные не распространяются с кодом

Таблицы юнитов, способности, предметы, герои, баффы, таблица бонусов урона и т. п. взяты из игровых файлов Blizzard и **в репозиторий не входят**. Когда вы укажете папку игры в «Центре управления» Farsight, они будут автоматически извлечены из вашей собственной игры; можно запустить извлечение и вручную:

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

Результат извлечения лежит в `data/game/` (в git не попадает): исходные `.slk` / `.txt`, а также подготовленные `units.json`, `names.json`, `skills.json`, `items.json`, `heroes.json`, `buffs.json`.

## Несколько конкретных чисел

| Величина | Значение |
|---|---|
| Сутки | 480 игровых секунд (день и ночь — по 240 секунд), один час = 20 игровых секунд; матч начинается в 8 утра |
| День | 6:00 ~ 18:00 |
| Коэффициент брони | 0.06 (из таблиц данных игры) |
| Ёмкость блока мира | 16 игроков, 1024 юнита, 256 наборов подробных данных юнитов, 256 предметов на земле, 128 записей производства |
| Деревья | До 4096 разрушаемых объектов, обновление каждые 2 секунды |
| Кольцо событий | 8192 записи; при слишком медленном чтении события теряются (SDK это обнаруживает) |
| Клетки карты | 128 игровых единиц на клетку, максимум 256 × 256 |

## Примеры, откалиброванные измерениями

- Время производства: крестьянин 14.9, ферма 34.9, улучшение Iron Forged Swords 59.9 игровой секунды — совпадает с тем, что публикует рантайм (расхождение меньше 0.2 секунды);
- Боевые характеристики сверены с игровой панелью: Паладин — 650 здоровья, 255 маны, броня 3.9, атака 24 ~ 34; пехотинец с первым улучшением атаки — 13 ~ 15;
- Урон до учёта брони в событиях урона движка (14 / 15 / 15) попадает в диапазон, рассчитанный `stats()`;
- Поиск пути: Echo Isles — 116 × 88 клеток, путь по земле до главного здания соперника 10642 (по прямой 9856), построение сетки 18 ms, один проход A* ≈1 ms.
