140 lines
8.5 KiB
Markdown
140 lines
8.5 KiB
Markdown
# AdventureBot-Gruppen, Browser und PvP
|
|
|
|
Stand: Implementierung gebaut (-j10), alle120Clientless-Tests erfolgreich; noch nicht installiert/live abgenommen.
|
|
Dungeon-, Raid- und PvP-Intents verwenden die bestehenden Tagespläne. `pvp` ist
|
|
neu und wird bei der Profilerzeugung als gewichtete Aktivitätspräferenz angeboten.
|
|
Bestehende Profile können `activity_affinity.pvp` ausdrücklich setzen; sonst gilt
|
|
im Planer ein kleiner, durch Aggression gewichteter Standardwert.
|
|
|
|
## Abreise und Rollen
|
|
|
|
Dungeon-/Raidbesuche starten selbstständig erst mit vollständiger geeigneter
|
|
Gruppe. Dungeonrollen:1Tank,1Heiler,3DD. Raidrollen richten sich nach der
|
|
bestehenden Zielkapazität: bis10Mitglieder2/2/6,20Mitglieder2/4/14,
|
|
25Mitglieder2/6/17. Die bereits vorhandenen Kapazitätsgrenzen der Locations
|
|
bleiben maßgeblich. Profile legen Botrollen fest, Spielerrollen werden aus
|
|
vorhandenen Gruppenrollen beziehungsweise ihrer Spezialisierung ermittelt.
|
|
|
|
Die erste tatsächliche Abreise gibt die gesamte Botgruppe für den laufenden
|
|
Intent frei. Spätere Austritte und Rollenlücken stoppen diese Reise nicht und
|
|
lösen keinen Browserwechsel aus. Gespeicherte laufende Instanzbesuche werden
|
|
weiterhin wiederaufgenommen. Spielergeführte Gruppen folgen ihrem Spieler;
|
|
Bots melden diese Gruppen nicht eigenmächtig an.
|
|
|
|
Unvollständige Botgruppen und einzelne Bots warten am aktuellen Ort und melden
|
|
sich bei zulässigem Browser an. Native Prüfungen für Level, Erweiterung,
|
|
Gegenstandsstufe, Zugänge, Sperren, Rollen und Accountrechte bleiben erhalten.
|
|
Die lokalen Cataclysm-DBC-Daten enthalten die Drachenseele-Flügel416/417 als
|
|
Stufe85-Angebote mit2Tanks,6Heilern und17DDs. Ihr TypeID ist1 (Dungeon), die Karte
|
|
ist jedoch ein Raid. Die Botregeln unterscheiden deshalb anhand der tatsächlichen
|
|
Karte; sie behandeln diese Angebote nicht versehentlich als Fünfer-Dungeons.
|
|
Die native Anmeldung dieser Type1-Flügel nutzt die vorhandene Dungeonfinder-
|
|
Berechtigung, nicht den separaten Legacy-Raidbrowser-Schalter. Der Bot-Schalter
|
|
für Raidbeitritt bleibt trotzdem anhand der tatsächlichen Raidkarte wirksam.
|
|
`DungeonFinder.OptionsMask` wurde nicht verändert.
|
|
Die Browserwahl verwendet zugängliche Angebote, nicht zwangsläufig das vorher
|
|
im Tagesplan ausgewählte Reiseziel. Rolle und Angebot werden nativ bestätigt;
|
|
Vermittlung und Teleport bleiben Aufgaben des vorhandenen Cores.
|
|
|
|
## Schalter
|
|
|
|
| Konfiguration | Standard |
|
|
|---|---:|
|
|
|Clientless.Browser.Dungeon.QueueEnabled|1|
|
|
|Clientless.Browser.Dungeon.JoinEnabled|1|
|
|
|Clientless.Browser.Raid.QueueEnabled|1|
|
|
|Clientless.Browser.Raid.JoinEnabled|0|
|
|
|Clientless.Browser.Battleground.QueueEnabled|1|
|
|
|Clientless.Browser.Battleground.JoinEnabled|0|
|
|
|Clientless.Browser.AllowBotOnlyTests|0|
|
|
|
|
`QueueEnabled` erlaubt das Anmelden. `JoinEnabled` erlaubt es, Bots tatsächlich
|
|
in eine vermittelte Besetzung aufzunehmen. Bei abgeschaltetem Beitritt bleiben
|
|
sie in der Suche, werden aber nicht in Angebote für Spieler eingerechnet und
|
|
reservieren keine Plätze in startenden Partien.
|
|
|
|
Im Normalbetrieb braucht jede vermittelte Besetzung mindestens einen echten,
|
|
verbundenen Spieler. Ein nach Verbindungsabbruch noch vorhandener Registereintrag
|
|
reicht nicht: Die Realm-Verbindung muss offen sein. Die zweite Verbindung darf
|
|
beim regulären Instanztransfer wechseln. Eine beliebige Person in einer anderen Warteschlange zählt
|
|
nicht. Prüfung erfolgt vor dem Angebot und vor dem Beitritt erneut. LFG-Gruppen
|
|
mit Bots erhalten einen echten Spieler als Anführer. Reine Botbesetzungen sind
|
|
nur mit `AllowBotOnlyTests=1` möglich; zusätzlich müssen Queue und Join für den
|
|
jeweiligen Browser aktiviert sein. Diese Testausnahme ersetzt weder Mindestgrößen
|
|
noch native Zugangsvoraussetzungen. Vorhandene Low-Population-Regeln des Servers
|
|
bleiben davon getrennt. Gruppen ohne Clientless-Teilnehmer behalten ihren Ablauf.
|
|
|
|
Die Regeln sind generische CPC-Admission-Regeln. DungeonFinding und Battlegrounds
|
|
hängen dafür nicht vom AdventureBot-System ab. Die Adventure-KI wählt lediglich
|
|
Anmeldungen und Rollen. Keine zusätzlichen externen Dienste oder Netzwerkschnittstellen.
|
|
|
|
## PvP
|
|
|
|
Ein PvP-Block mit Hauptstadtslocation bedeutet direkte Schlachtfeldsuche.
|
|
Welt-PvP-Ziele kommen aus zulässigen Gebietslocations von TolBarad/TolBarad-Halbinsel,
|
|
Höllenfeuerhalbinsel, Zangarmarschen, Nagrand und den Wäldern von Terokkar.
|
|
Gebietskatalog, Fraktion, tatsächliches Mindestlevel und Fluganforderungen gelten
|
|
auch hier. Für Welt-PvP genügt eine geeignete Gruppe ab zwei Mitgliedern; fehlen
|
|
Mitglieder, geht der Bot stattdessen in die Schlachtfeldsuche. Diese läuft über
|
|
die nativen normalen Schlachtfelder, nicht über Arena oder gewertetes PvP.
|
|
UnterStufe45 wird Kriegshymnenschlucht angefragt, danach ein zufälliges Schlachtfeld;
|
|
unterStufe10 erfolgt keine Anmeldung und kein neu generierter PvP-Block.
|
|
Bei Schlachtfeld-Gruppensuche werden die nativen Levelbereiche der gewünschten
|
|
Schlachtfeldvorlage verglichen, einschließlich der Mindeststufe für Zufallssuche. Die nativen Prüfungen entscheiden endgültig.
|
|
|
|
Derzeit geht es um Anmeldung und Beitritt. Spezifische Quest-, Flaggenträger-,
|
|
Basen- und Bossmechaniken sind damit nicht implementiert. Welt-PvP benutzt zunächst
|
|
vorhandene Erkundungsaktionen und die bisherigen persönlichkeitsabhängigen
|
|
PvP-Angriffsregeln. Schlachtfeld-/Raidbeitritt ist daher standardmäßig gesperrt.
|
|
|
|
## Gruppen zusammenführen
|
|
|
|
Während der Gruppenbildung steigt die Wechselbereitschaft mit der verstrichenen
|
|
Zeit. Größere passende Botgruppen werden bevorzugt. Auch Mitglieder kleinerer
|
|
unvollständiger Botgruppen können wechseln, insbesondere um einen offenen
|
|
Rollenplatz zu besetzen. Offene Einladungen reservieren bereits Rollenplätze;
|
|
die eigene Reservierung verhindert nicht die Annahme. Überzählige Rollen aus
|
|
falsch besetzten Gruppen dürfen auch in kleinere passende Gruppen wechseln,
|
|
und das Vervollständigen einer zulässigen Gruppe hat Vorrang. Bereits abgereiste
|
|
Anführer schützen auch Mitglieder, deren persönlicher Plan noch Gruppenbildung
|
|
anzeigt. Ziel und Voraussetzungen der aufnehmenden Gruppe gelten.
|
|
Die native Einladung/Annahme erfolgt im Worldthread; bei Ablehnung wird die
|
|
ursprüngliche Gruppe soweit möglich wiederhergestellt.120Sekunden Wechselpause
|
|
und eine eindeutige Rangfolge gleich großer Gruppen verhindern Pendeln.
|
|
Spielergeführte Gruppen, volle passende Gruppen, laufende Reisen und bereits
|
|
laufende Browsergruppen werden nicht automatisch umverteilt. Die feste
|
|
Sammelfrist am Stundenende wird nicht verlängert.
|
|
|
|
## Validierung und Betrieb
|
|
|
|
Vor jedem Build Loader/Testannahme pausieren und sicheren Logout abwarten.
|
|
Während der laufenden Schiffsaufzeichnung darf bei verbleibenden Bots auch nach
|
|
fünfMinuten kein Shutdown erzwungen werden: Build dann zurückstellen. Installation
|
|
und Neustart erst nach Freigabe für die Aufzeichnung. Zugehörige Tests:
|
|
`test_browser_admission.py`, `test_group_role_composition.py`,
|
|
`test_adventure_instance_begin.py`, `test_adventure_groups.py`,
|
|
`test_browser_participants.py`, `test_browser_match_order.py`,
|
|
`test_browser_bg_brackets.py`. Rollenabfragen werden außerhalb der Versorgungs-
|
|
und Kampfaktionen beantwortet, nur solange die native Abfrage noch offen ist.
|
|
Alle120Clientless-Testskripte wurden ausgeführt und bestanden. Sechs ältere
|
|
Adapter benötigten die neuen Zustandsfelder/Schnittstellen; zusätzliche Assertions
|
|
prüfen PvP-Persistenz, Browser-Wartephasen, Wiederaufnahme begonnener Reisen und
|
|
AFK-Schutz während der Suche. Der vollständige CMake-Build und der abschließende
|
|
inkrementelle Build liefen mit-j10 erfolgreich durch. Beide Config-Dateien wurden
|
|
auf die vereinbarten Browserwerte geprüft. Details und Logs:
|
|
`doc/clientless/checkpoints/2026-10-31-browser/validation-status.json` und
|
|
`regression/final-summary.json`. Der vorherige114/120-Lauf samt Fehlerlogs ist
|
|
als Diagnose erhalten; die behobenen Fälle wurden gezielt erneut ausgeführt.
|
|
|
|
Der Testserver war nach dem externen Umgebungsneustart bereits offline. Es wurden
|
|
keine Bots für den Build zwangsausgeloggt, keine laufenden Transporte unterbrochen
|
|
und kein Server durch diesen Arbeitslauf gestoppt. Loader und TestBot-Ausführung
|
|
bleiben pausiert (Config0/0); ursprünglicher TestBot-Wert1 ist in
|
|
`resumed-build-state.json` gespeichert. Installation/Start erst nach Freigabe.
|
|
Vor dem nächsten zulässigen Start die sieben zuletzt verbliebenen Bots anhand
|
|
`restart-recovery-needed.json` für Zustandsprüfungen vorsehen.
|
|
|
|
Diese Tests prüfen Regeln und echte extrahierte Produktionsfunktionen mit
|
|
Adaptern. Ein tatsächlicher Browser-Beitritt mit echten Spielern und die visuelle
|
|
Abnahme stehen aus. Es wurde weder installiert noch ein Worldserver gestartet.
|