# データの出どころ

> データの種類ごとの取得元と精度。「何かおかしい」と思ったら、まずこのページを確認してください。

出典: https://war3ai.com/ja/docs/data-sources/

| データ | 取得元 | 精度 |
|---|---|---|
| ユニット、資源、オーダー、スキル、バフ、インベントリ | ランタイムが 50 ms ごとにプッシュするワールドブロック | 発行周期（16 ms まで調整可能） |
| ダメージ、キルイベント | ランタイムがゲームスレッド上でその場で記録。1 回ごと | 即時 |
| その他のイベント（出現、死亡、オーダー変更、レベルアップ……） | 連続する 2 回の発行を比較 | 発行周期 |
| 生産表（訓練 / 研究 / 建設 / アップグレード） | エンジンの生産アビリティのタイマーフィールド + ランタイムによる経過時間の累積 | 約 ±0.2 ゲーム秒 |
| 戦闘ステータス、相性表 | ゲーム付属のデータ表（あなたのマシンのゲームから抽出） | アイテム、オーラ、バフによる補正は含まない |
| 経路探索 | エンジンの地形の通行可能性（1 マス 128）+ 樹木 + 建物の占有範囲、SDK 側の A* | 1 マス。1 マスより狭い隙間は通れないと判定 |
| ゲーム内時刻 | 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` です。

## 具体的な数値

| 項目 | 値 |
|---|---|
| 1 日 | 480 ゲーム秒（昼と夜がそれぞれ 240 秒）、1 時間 = 20 ゲーム秒。開始時は朝 8 時 |
| 昼 | 6:00 〜 18:00 |
| アーマー係数 | 0.06（ゲームのデータ表より） |
| ワールドブロックの容量 | プレイヤー 16、ユニット 1024、ユニット詳細 256、地面のアイテム 256、生産 128 |
| 樹木 | 破壊可能オブジェクト最大 4096、2 秒ごとに更新 |
| イベントリング | 8192 件。読み取りが遅すぎると取りこぼす（SDK が検出可能） |
| マップのマス | 1 マス 128 ゲーム単位、最大 256 × 256 |

## 実測で校正した例

- 生産時間：ピーザント 14.9、ファーム 34.9、Iron Forged Swords 59.9 ゲーム秒。ランタイムがプッシュした値と一致（誤差 0.2 秒未満）。
- 戦闘ステータスをゲーム内のパネルと照合：パラディン HP 650、マナ 255、アーマー 3.9、攻撃力 24 〜 34。攻撃アップグレード 1 段階のフットマン 13 〜 15。
- エンジンのダメージイベントにあるアーマー適用前のダメージ（14 / 15 / 15）は、`stats()` が計算した範囲に収まっている。
- 経路探索：Echo Isles 116 × 88 マス、相手のタウンホールまでの地上距離 10642（直線 9856）、グリッド構築 18 ms、A* 1 回約 1 ms。
