46 lines
2.1 KiB
Markdown
46 lines
2.1 KiB
Markdown
# Einheiten: backend/tft/sim/autoplay.py
|
|
stand: f41ac76b5789
|
|
|
|
## backend/tft/sim/autoplay.py::play_afk
|
|
beschreibung: Spielt ein vollständiges Game headless zu Ende, ohne steuernd einzugreifen.
|
|
input: ein laufendes `Game`-Objekt.
|
|
output: die finale Platzierung (`game.placement`) als int.
|
|
entscheidungen:
|
|
- Kein eigener Steuerungscode — jede Runde wird nur durch `game.step()` fortgeschaltet.
|
|
beleg: "game.step()"
|
|
- Abbruchbedingung ist ausschließlich das Ende des Spiels über `game.over`.
|
|
beleg: "while not game.over:"
|
|
kanten:
|
|
- nutzt: backend/tft/sim/game.py::Game
|
|
- wird-genutzt-von: backend/tft/sim/autoplay.py::run
|
|
|
|
## backend/tft/sim/autoplay.py::play_econ
|
|
beschreibung: Spielt ein Game mit der Econ-Policy (`fast8`) zu Ende und liefert die Platzierung.
|
|
input: ein laufendes `Game`-Objekt.
|
|
output: die finale Platzierung (`game.placement`) als int.
|
|
entscheidungen:
|
|
- Verwendet fest das Archetyp-Profil `fast8` aus der Policy-Bibliothek.
|
|
beleg: "params = policy.ARCHETYPES[\"fast8\"]"
|
|
- Greift pro Runde sowohl über die Policy als auch über `game.step()` in den Spielablauf ein.
|
|
beleg: "policy.act(game.player, game.pool, game.artifact, game.cfg, game.rng,"
|
|
kanten:
|
|
- nutzt: backend/tft/sim/policy.py::act
|
|
- nutzt: backend/tft/sim/game.py::Game
|
|
- wird-genutzt-von: backend/tft/sim/autoplay.py::run
|
|
|
|
## backend/tft/sim/autoplay.py::run
|
|
beschreibung: Führt n headless Spiele mit der gewählten Policy aus und aggregiert Platzierungen.
|
|
input: `artifact`, `cfg`, ein `policy_name` und die Anzahl `n` (optional `seed`).
|
|
output: ein Dict mit `games`, `avg_placement` und `top4_rate`.
|
|
entscheidungen:
|
|
- Die Auswahl der konkreten Strategie erfolgt über das Mapping `POLICIES` per Name.
|
|
beleg: "POLICIES[policy_name](game)"
|
|
- Pro Lauf wird ein neuer Seed aus `seed + i` abgeleitet, um Wiederholbarkeit pro Spiel zu garantieren.
|
|
beleg: "Game(artifact, cfg, seed=seed + i)"
|
|
- `top4_rate` zählt Platzierungen ≤ 4 als Erfolg.
|
|
beleg: "if p <= 4"
|
|
kanten:
|
|
- ruft-auf: backend/tft/sim/autoplay.py::play_afk
|
|
- ruft-auf: backend/tft/sim/autoplay.py::play_econ
|
|
- nutzt: backend/tft/sim/game.py::Game
|