This commit is contained in:
team3
2026-07-24 11:24:24 +02:00
parent f41ac76b57
commit 848c8ea1aa
41 changed files with 1776 additions and 15 deletions

View File

@@ -0,0 +1,45 @@
# 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