Überleben
Gegnerkontakt und feindlichen Projektilen ausweichen. Wände begrenzen die Arena.
Lokale REST-Schnittstelle · Version 1
Diese API lässt ein lokales Modell das Spiel wie einen normalen Spieler steuern. Die KI sieht strukturierte Spieldaten, bewegt den Helden und wählt Upgrades. Angriffe erfolgen automatisch.
Ollama startet und steuert die lokalen Modelle direkt. Hermes wird nicht benötigt. Das Control-Center liest installierte Modelle aus http://127.0.0.1:11434.
Server in PowerShell lokal und mit aktivierter Agenten-API starten:
$env:AGENT_API='1'
$env:HOST='127.0.0.1'
npm start
Danach das Control-Center öffnen, Modelle und Session-Anzahl wählen und starten:
http://127.0.0.1:3000/agent-dashboard/
Ein einzelner Bot kann weiterhin per Terminal gestartet werden:
npm run agent -- --model=qwen3:8b --hero=necro --log=agent-run.jsonl
Verfügbare Sessions findet ein eigener Agent über GET /api/agent/sessions.
Gegnerkontakt und feindlichen Projektilen ausweichen. Wände begrenzen die Arena.
XP-Kristalle, Heilungen, Truhen und zeitlich begrenzte Feld-Boosts einsammeln.
Bei einem Level-up aus vier Karten wählen. Waffen, Passive und Items bilden Synergien und Evolutionen.
Die Waffen feuern selbst. Der Agent kontrolliert Positionierung und Entscheidungen, nicht einzelne Schüsse.
GET /api/agent/state?session=SESSION_ID
| Feld | Bedeutung |
|---|---|
state, canAct | Phase und momentan erlaubte Aktionen. |
run | Zeit, Welle, Kills, Score, Level und XP. |
player, arena | Position, LP, Werte und Abstände zu allen vier Wänden. |
enemies | Die 32 nächsten Gegner mit relativer Position, Distanz, Verhalten, LP, Schaden und Telegrafie. |
enemyProjectiles | Die 40 gefährlichsten Kugeln/Pfeile mit Geschwindigkeit, Anflug, Zeit zum nächsten Punkt und vorhergesagtem Fehlabstand. |
collectables | Nahe XP, Heilungen, Truhen und Boosts. |
choices | Nullbasierte Upgrade-Karten mit Rarität, Empfehlung, Synergien und Evolutionen. |
inventory | Waffen, Items, Passive und aktive Synergien. |
Aktionen werden als JSON an POST /api/agent/action geschickt. Mehrere kompatible Aktionen dürfen in einem Objekt stehen.
POST /api/agent/action
Content-Type: application/json
{
"session": "SESSION_ID",
"action": {
"move": { "x": -0.7, "y": 1, "durationMs": 2500 },
"choose": 0
}
}
| Aktion | Beispiel |
|---|---|
| Run starten | {"start":{"name":"Ollama","hero":"necro"}} |
| Richtung | {"move":{"x":1,"y":-0.4,"durationMs":2500}} |
| Zielposition | {"move":{"target":{"x":1200,"y":800}}} |
| Anhalten | {"stop":true} |
| Karte wählen | {"choose":0} – Index beginnt bei 0 |
| Neu würfeln | {"reroll":true} |
| Pause | {"pause":true} / {"resume":true} |
| Neuer Run | {"restart":true,"hero":"witch"} |
Koordinaten: +x rechts, -x links, +y unten, -y oben. Bewegung läuft nach spätestens 10 Sekunden ab, damit ein abgestürzter Agent nicht endlos weiterläuft.
while (runnt) {
1. GET /api/agent/state?session=ID
2. Gefahren, Drops und choices auswerten
3. Modell muss genau ein JSON-Aktionsobjekt liefern
4. POST /api/agent/action
5. kurz warten und wiederholen
}
Lokale Modelle können mehrere Sekunden rechnen. Der mitgelieferte Ollama-Runner erneuert deshalb den letzten sinnvollen Bewegungskurs während der Inferenz regelmäßig.
Für einen gemeinsam genutzten Rechner kann zusätzlich AGENT_API_TOKEN gesetzt werden. Clients senden dann Authorization: Bearer TOKEN. Der Browser erhält das Token über:
http://127.0.0.1:3000/?agent=1&agentToken=TOKEN
Die API niemals öffentlich freigeben. Empfohlen ist immer HOST=127.0.0.1.
Das lokale Dashboard zeigt alle verbundenen Sessions gleichzeitig als Live-Kacheln. Eine Kachel öffnet sich per Klick im Vollbild:
http://127.0.0.1:3000/agent-dashboard/
Das Control-Center erzeugt alle benötigten Spiel-Sessions und direkten Ollama-Runner automatisch. Im Lernmodus speichert es Entscheidungen und Rundenergebnisse unter agent-runs/ und gibt vorige Resultate als Erfahrung in die nächste Runde.
Jede Session besitzt einen persistenten Prototyp mit zufälligen Genen für Risiko, Loot, Aggression, Build-Vielfalt, Exploration, Wand- und Boss-Abstand. Fitness, höchste Welle, Best- und Durchschnittsscore, Lern-Level, Items und Abstammung sind im Dashboard sichtbar.
Prototypen lassen sich klonen, sicher boosten, aus den Top 2 oder aus zwei manuell markierten Eltern kreuzen und nach dem Stoppen löschen. Ein bereits trainierter Prototyp kann jederzeit erneut gestartet werden. Erfolgreiche Runs teilen Ergebnis, Gene, Build- und Kampferkenntnisse über ein gemeinsames lokales Gedächtnis mit bis zu 240 starken Erinnerungen; jeder Bot erhält daraus die zu seinem Genprofil passendsten Erfahrungen. Eine harte Sicherheitsregel hält Bots unabhängig von der Modellantwort aus dem Boss-Kontaktradius.
Ein Klick auf eine Bot-Karte öffnet die echte laufende Spiel-Session ohne das FPS-Limit der komprimierten Vorschaubilder. Die Prototyp-Analyse zeigt Gen-Radar, Scoreverlauf, Wellen-DPS, Gegner-LP und erlittenen Schaden. GET /api/agent/control/balance exportiert vollständige lokale Balance-Runs mit LP, Schaden, DPS, Gegnerzahl, Gegner-LP, Gegnerkontakt-Schaden, FPS und Builds. POST /api/agent/control/genetics/start startet ein gespeichertes Genom erneut.
Im Dashboard können eigene Tipps, Build-Regeln und Verbesserungsvorschläge für alle Bots gespeichert werden. GET /api/agent/control/coach liest die aktive Version; POST /api/agent/control/coach speichert {"enabled":true,"text":"..."}. Neue und laufende Agenten laden Änderungen automatisch aus agent-runs/coach-tips.json. Die Hinweise fließen in Item-Entscheidungen ein; erkannte Sicherheits-, Loot-, Boss-, Wand- und Build-Hinweise beeinflussen außerdem die reaktive Strategie. Harte Aktions- und Boss-Sicherheitsregeln bleiben vorrangig.
Mit „Als Spieler trainieren“ öffnet das Dashboard eine lokale Session mit ?agent=1&mentor=1. Sie nimmt keine Bot-Befehle an und speichert keine Highscores, beobachtet aber Bewegungsrichtung, Gegner- und Boss-Abstände, Wandnähe, Gefahren bei niedrigen LP, Loot-Wege, Kartenwahlen, Rerolls und Run-Ergebnisse. GET /api/agent/control/mentor liefert das gelernte Profil. POST /api/agent/control/mentor/genome erzeugt daraus einen persistenten KI-Prototyp; menschliche Build-Präferenzen stehen danach auch als Demonstrationswissen für Modellentscheidungen zur Verfügung. Die Rohdaten liegen lokal in agent-runs/human-mentor.json.
Der standardmäßig ausgeschaltete Evolution Director kann die Zielpopulation selbstständig halten, Kandidaten über mehrere vollständige Runs bewerten, zuverlässige Eliten auswählen, klonen, boosten und kreuzen. Die Strategie, Testdauer, Exploration, Elitegröße und maximale Anzahl gespeicherter Prototypen bleiben vollständig einstellbar.
Automatisch gelöscht werden ausschließlich inaktive Kandidaten außerhalb der geschützten Elite. Ausschalten stoppt die Evolution, aber niemals eine bereits laufende Runde. Jede Entscheidung erscheint mit Zeitstempel im Autopilot-Protokoll.