# Datenquellen

> Herkunft und Genauigkeit jeder Datenart. Wenn etwas „komisch aussieht“, schau zuerst hier nach.

Quelle: https://war3ai.com/de/docs/data-sources/

| Daten | Quelle | Genauigkeit |
|---|---|---|
| Einheiten, Ressourcen, Orders, Fähigkeiten, Buffs, Inventar | Weltblock, den die Runtime alle 50 ms pusht | Veröffentlichungsintervall (bis 16 ms einstellbar) |
| Schadens- und Kill-Events | Von der Runtime sofort im Spiel-Thread aufgezeichnet, jeder einzelne Treffer | Sofort |
| Andere Events (erscheinen, sterben, Order-Wechsel, Level-up …) | Vergleich zweier aufeinanderfolgender Veröffentlichungen | Veröffentlichungsintervall |
| Produktionstabelle (ausbilden / erforschen / bauen / aufwerten) | Timer-Felder der Produktionsfähigkeiten der Engine + von der Runtime aufsummierte verstrichene Zeit | ca. ±0.2 Spielsekunden |
| Kampfwerte, Konter-Tabelle | Datentabellen des Spiels (aus deinem lokalen Spiel extrahiert) | Ohne Modifikatoren durch Gegenstände, Auren, Buffs |
| Wegfindung | Begehbarkeit des Engine-Geländes (128 pro Zelle) + Bäume + Gebäudeflächen, A* im SDK | Eine Zelle; Lücken schmaler als eine Zelle gelten als unpassierbar |
| Tageszeit im Spiel | JASS `GetFloatGameState(GAME_STATE_TIME_OF_DAY)` | Veröffentlichungsintervall |
| Sichtbarkeit | Von der Runtime pro Einheit und Spieler berechnete Sichtbarkeitsmaske | Veröffentlichungsintervall |
| Technologiezähler, Machbarkeit, Restgold | Abfrage über die Schnellspur, direkt an die Engine | Sofort |

## Spieldaten werden nicht mit dem Code verteilt

Einheitentabellen, Fähigkeiten, Gegenstände, Helden, Buffs, Schadens-/Konter-Tabellen usw. stammen aus Blizzards Spieldateien und **liegen nicht im Repo**. Sobald du im „Kontrollzentrum“ von Farsight das Spielverzeichnis festgelegt hast, werden sie automatisch aus deinem eigenen Spiel extrahiert; du kannst das auch manuell ausführen:

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

Die Ergebnisse landen in `data/game/` (nicht im Git): die rohen `.slk`-/`.txt`-Dateien sowie die aufbereiteten `units.json`, `names.json`, `skills.json`, `items.json`, `heroes.json` und `buffs.json`.

## Ein paar konkrete Zahlen

| Größe | Wert |
|---|---|
| Ein Tag | 480 Spielsekunden (je 240 s Tag und Nacht), eine Stunde = 20 Spielsekunden; das Spiel beginnt um 8 Uhr morgens |
| Tag | 6:00–18:00 |
| Rüstungsfaktor | 0.06 (aus den Datentabellen des Spiels) |
| Kapazität des Weltblocks | 16 Spieler, 1024 Einheiten, 256 Einheitendetails, 256 Gegenstände am Boden, 128 Produktionseinträge |
| Bäume | Max. 4096 zerstörbare Objekte, alle 2 s aktualisiert |
| Event-Ring | 8192 Einträge; wer zu langsam liest, verliert Events (das SDK erkennt das) |
| Kartenraster | 128 Spieleinheiten pro Zelle, max. 256 × 256 |

## Im Live-Spiel kalibrierte Beispiele

- Produktionszeiten: Bauer 14.9, Farm 34.9, Iron Forged Swords 59.9 Spielsekunden – deckungsgleich mit den Werten, die die Runtime pusht (Abweichung unter 0.2 s);
- Kampfwerte gegen die Anzeige im Spiel geprüft: Paladin 650 HP, 255 Mana, 3.9 Rüstung, Angriff 24–34; Fußsoldat mit Angriffs-Upgrade Stufe 1: 13–15;
- der Schaden vor Rüstung aus den Schadens-Events der Engine (14 / 15 / 15) liegt im von `stats()` berechneten Bereich;
- Wegfindung: Echo Isles 116 × 88 Zellen, Bodenweg zum gegnerischen Hauptgebäude 10642 (Luftlinie 9856), Aufbau des Rasters 18 ms, ein A*-Lauf ca. 1 ms.
