Docs Referenz
Datenquellen
Herkunft und Genauigkeit jeder Datenart. Wenn etwas „komisch aussieht“, schau zuerst hier nach.
| 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:
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.