YARCC für BF3 - Unsere Battlefield3 Serversteuerung

Moderatoren: JDZ, Moderatoren

Antworten
Benutzeravatar
JDZ
Geschäftsmodell
Beiträge: 810
Registriert: 05.01.2004, 02:10
Wohnort: Frankfurt am Main

Beitrag von JDZ » 08.04.2013, 21:46

Nachdem das Konzept von YARCC Relay 2 mal verworfen wurde läuft mein neuer Lösungsansatz sehr gut. Heute morgen nach dem Nachtdienst habe ich die letzten Zeilen geschrieben und die Kommunikation untereinander sowie das selbstgeschriebene Packet routing klappt hervorragend. Die Implementierung der Ingame Admin Geschichte ist wirklich nur noch eine Formsache. In 1-2 Wochen können wir den ersten Beta Test über den Bibo fahren. Das gesammte Konzept läuft sowas von ressourcenschonend bezogen auf den Funktionsumfang, des dafür benötigten Arbeitsspeichers sowie der Netzlast.

Mir fehlt allerdings noch eine zündende Idee wie man den Auto Team Balancer umsetzen kann. Hat jemand von euch eine Idee?

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 05:36

JDZ hat geschrieben:...Mir fehlt allerdings noch eine zündende Idee wie man den Auto Team Balancer umsetzen kann. Hat jemand von euch eine Idee?
Idee welcher Art? Technischer Art? Dann bin ich an dieser Stelle raus. :D

Funktional? Ok... mal sehen...

Wann soll "gebalanced" werden?

Zum Rundenstart vielleicht? Ansonsten alle ~25 Sekunden schauen und ausgleichen.

Wer soll "gebalanced" werden?
  1. Der letzte der beitrat.
  2. Derjenige der nicht in einem Squad ist.
Wer soll nicht "gebalanced" werden?

VIPs
Squadmitglieder

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 05:44

Noch ein Verbesserung für den YARCC - in Bezug auf die Mapliste.

Wenn ich eine Karte dem Cycle hinzugefügt habe. So muss ich ja, bevor ich im Kontextmenü der hinzugefügten Karte auf "run map" klicken kann, die Karte zuerst mit "apply maplist on server" dem Server bekanntmachen.

Hier würde ich es besser finden. Wenn der Befehl "run map" direkt ein "apply maplist on server" auslöst, wenn nötig.

Benutzeravatar
JDZ
Geschäftsmodell
Beiträge: 810
Registriert: 05.01.2004, 02:10
Wohnort: Frankfurt am Main

Beitrag von JDZ » 09.04.2013, 08:05

BlackSoul hat geschrieben:Noch ein Verbesserung für den YARCC - in Bezug auf die Mapliste.
Wenn ich eine Karte dem Cycle hinzugefügt habe. So muss ich ja, bevor ich im Kontextmenü der hinzugefügten Karte auf "run map" klicken kann, die Karte zuerst mit "apply maplist on server" dem Server bekanntmachen.
Hier würde ich es besser finden. Wenn der Befehl "run map" direkt ein "apply maplist on server" auslöst, wenn nötig.
Sehr gute Idee! Werd ich einbauen...
Genau, ich meinte die Vorgehensweise für das Teambalancing nicht technisch sondern rein logisch. Die Vorgehensweiße wie du sie geschildert hast müssten wir mal Besprechen. Wichtig bei dem Konzept ist, das nicht nur der Idealfall berücksichtigt werden muss oder gar alles darauf ausgelegt wird, sondern auch was getan wird wenn der Idealfall nicht vorliegt.

Momentan kämpfe ich mit einem sehr sehr bösen technischem Problem:
Um den Battlefield Server zu entlasten puffert der Serverlayer die Pakete für die ServerInfo (Box links neben dem Chat) und die sehr große Playerlisten Pakete damit nicht jeder Client den Server damit belastet. Pollt YARCC eine Playerliste so erhält er die Version aus dem zuletzt gepufferten Serverlayer Speicher. Wechselt zwischen der erneuten Pufferung ein Spieler das Team und YARCC holt sich kurz drauf die alte Liste vom Layer - schwupps landet der JogDive in beiden Teams. Das Problem tritt bei Teamchange, Squadchange und LeaveServer ein. Jetzt ist die Frage wie man die Puffer jederzeit konsistent hält. Das Polling Intervall der Playerliste beträgt 10sec und alle Teamevents und Leaves werden direkt verarbeitet. Mehr gibt Rcon leider nicht her in der jetzigen Version.
Ich werde noch wahnsinnig :D

Das tolle ist aber das ich dem Paket Routing vorhin einem Härtetest unterzogen habe und es funktioniert einfach herrlich :happy: Für das bestehende Problem fällt mir auch noch was ein und wenn ich den Playerlist-Puffer nach einem Teamswitch Event oder Leave durchparse und die bytes aktualisiere....
Habe ich schon erwähnt das ich langsam wahnsinnig werde :D

Benutzeravatar
tequilio
Geschäftsmodell
Beiträge: 2131
Registriert: 24.06.2005, 19:06

Beitrag von tequilio » 09.04.2013, 08:06

BlackSoul hat geschrieben:
JDZ hat geschrieben:...Mir fehlt allerdings noch eine zündende Idee wie man den Auto Team Balancer umsetzen kann. Hat jemand von euch eine Idee?
Idee welcher Art? Technischer Art? Dann bin ich an dieser Stelle raus. :D

Funktional? Ok... mal sehen...

Wann soll "gebalanced" werden?

Zum Rundenstart vielleicht? Ansonsten alle ~25 Sekunden schauen und ausgleichen.

Wer soll "gebalanced" werden?
  1. Der letzte der beitrat.
  2. Derjenige der nicht in einem Squad ist.
Wer soll nicht "gebalanced" werden?

VIPs
Squadmitglieder
Deiner Meinung. Wobei ich den Timer auf 1 min stellen würde. Da der balancer sonst, wenns mal blöd steht in den teams, wie wild umher schiebt. Das scheint mir zu agressiv für einen Balancer.
Bei den GFF war das gut gelöst mit beiläufigen Texten im Messagefeld zur Info an die Spieler. Balance teams!... teams get balanced in 15 secs... etc..
Bild

Benutzeravatar
JDZ
Geschäftsmodell
Beiträge: 810
Registriert: 05.01.2004, 02:10
Wohnort: Frankfurt am Main

Beitrag von JDZ » 09.04.2013, 08:55

tequilio hat geschrieben:
BlackSoul hat geschrieben:
JDZ hat geschrieben:...Mir fehlt allerdings noch eine zündende Idee wie man den Auto Team Balancer umsetzen kann. Hat jemand von euch eine Idee?
Idee welcher Art? Technischer Art? Dann bin ich an dieser Stelle raus. :D

Funktional? Ok... mal sehen...

Wann soll "gebalanced" werden?

Zum Rundenstart vielleicht? Ansonsten alle ~25 Sekunden schauen und ausgleichen.

Wer soll "gebalanced" werden?
  1. Der letzte der beitrat.
  2. Derjenige der nicht in einem Squad ist.
Wer soll nicht "gebalanced" werden?

VIPs
Squadmitglieder
Deiner Meinung. Wobei ich den Timer auf 1 min stellen würde. Da der balancer sonst, wenns mal blöd steht in den teams, wie wild umher schiebt. Das scheint mir zu agressiv für einen Balancer.
Bei den GFF war das gut gelöst mit beiläufigen Texten im Messagefeld zur Info an die Spieler. Balance teams!... teams get balanced in 15 secs... etc..

Klar, die Info an alle Spieler ist ein Bestandteil

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 09:09

tequilio hat geschrieben:Deiner Meinung. Wobei ich den Timer auf 1 min stellen würde. Da der balancer sonst, wenns mal blöd steht in den teams, wie wild umher schiebt. Das scheint mir zu agressiv für einen Balancer.
Bei den GFF war das gut gelöst mit beiläufigen Texten im Messagefeld zur Info an die Spieler. Balance teams!... teams get balanced in 15 secs... etc..
das war nur eine erste, ganz grundsätzliche, übersicht. das da noch eine menge mehr rein gehört mit entsprechenden hinweistexten ist klar. und ich schreibe nachher mal einen kompletten ablauf. auch was mögliche ablaufprobleme angeht.

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 12:37

Ablauf des Balancings

Das Balancing wird alle 30 Sekunden (einstellbar) automatisch, oder vielleicht auch durch eine Funktion im YARCC manuell ausgelöst. Nun schaut YARCC über die Spielerliste und erkennt eventuell ein Ungleichgewicht.
Es erfolgt eine Textmeldung. Diese Textmeldung sollte wahlweise unten in der Mitte oder im Chat erfolgen und sollte für den gesamten Vorgang gelten. Die Meldung selbst sollte mind. 2 Sekunden lang sichtbar sein (einstellbar) und eine Verzögerung von 10 Sekunden (einstellbar) bis zum automatischen Balancing mitteilen.

Meldung:
~ Teams are unbalanced! 10 sec. to go...

Nach Ablauf der 10 sekündigen Verzögerung erfolgt dann also die Meldung das YARCC nun loslegt mit dem Balancing.
Diese Meldung ist ebenfalls wieder mind. 2 Sekunden (einstellbar) lang sichtbar.

Meldung:
~ engaging Teambalance

YARCC schaut nun wie viele Spieler "überzählig" sind und verschiebt nun die Hälfte ins andere Team.

Dabei geht es nach folgenden Kriterien zu:
1. der zuletzt beigetretene Spieler
2. squadlose Mitspieler

Was aber wenn nicht genügend Mitspieler zum Ausgleichen zur Verfügung stehen.

3. ...

Hier müssen wir eventuell noch einmal miteinander quatschen, David, da ich einfach nicht genau weiß, nach was man alles Spieler unterscheiden kann.

3. Der Spieler mit dem besten, zweitbesten, drittbesten etc. K/V Verhältnis. ((Ausnahme VIPs)einstellbar)) <- Edith mein gerade, dass das nur ein Gedankengang ist und (noch) nichts endgültiges.

Die Teams sind nun ausgeglichen und es erfolgt nun die Abschluss-Meldung seitens YARCC.
Auch diese Meldung wird wieder mind. 2 Sekunden (einstellbar) lang sichtbar sein.

Meldung:
~ Teams now balanced
Zuletzt geändert von BlackSoul am 09.04.2013, 18:11, insgesamt 1-mal geändert.

Benutzeravatar
ftn|hotty
Geschäftsmodell
Beiträge: 444
Registriert: 26.09.2004, 14:14

Beitrag von ftn|hotty » 09.04.2013, 13:30

Wenn es möglich wäre, würde ich den Spieler direkt warnen, a la "You will be switched in 10 sec. This will not affect your K/D". Wäre ein netter Service.

Die Auswahlkriterien würde ich aber ein bisschen ändern. Zuerst sollten squadlose Spieler geswitched werden, danach erst nach Beitritt des Servers. Es gibt nichts nervigeres, als wenn man mit FTN auf einen Server geht, im selben Squad ist, nur um nach 30 Sekunden ins andere Team geswitched werden. :RoM:
BlackSoul hat geschrieben:Was aber wenn nicht genügend Mitspieler zum Ausgleichen zur Verfügung stehen.

3. ...

Hier müssen wir eventuell noch einmal miteinander quatschen, David, da ich einfach nicht genau weiß, nach was man alles Spieler unterscheiden kann.
Nur noch mal zum Klarstellen: Der Teambalance wird aktiv, wenn das eine Team deutlich mehr Mitspielern hat, als das anderen; nicht jedoch wenn das eine Team deutlich das andere Team dominiert.
Falls ich mich in meiner Definition irre: Dann ist das Vorgehen, nach squadlose Spielern oder nach Beitritt Spielern zu switchen absolut hirnfrei, weil ich dadurch nicht die Stärke-Balance zwischen den Team herstellen werden, sondern nur den Frustfaktor einiger Spieler erhöht wird. Das Balancen von Teamstärke ist keine triviale Aufgabe.

Wenn die Stärke beider Teams ausgegelichen werden soll, ist ein anderes Vorgehen in meinen Augen besser: Bei jeder Runde wird wird überprüft, ob das eine Team mit einem deutlichen Ticketunterschied gegenüber dem anderen Team gewonnen hat. (Alternative: Es wird geprüft, ob das eine Team zwei Runden hintereinander deutlich gewonnen hat.)
Dann werden beide Teams beim nächsten Rundenstart gut durchgerührt. Über die Details, wie das passieren soll, lässt sich streiten, aber ich habe einige Server gesehen, die das umsetzen und danach waren die Teams halbwegs ausgeglichen. Unser Ziel ist nicht perfektes Balancing, aber die Spieler sollen nicht frustriert den Server verlassen.

Benutzeravatar
Roland von Gilead
verdammt coole sau
Beiträge: 13171
Registriert: 02.07.2003, 20:05
Wohnort: wo die Kühe wilder als die Frauen sind !
Kontaktdaten:

Beitrag von Roland von Gilead » 09.04.2013, 15:03

- geswitched werden sollte derjenige der zuletzt auf den Server kam, oder geringe Punkte K/D (irgendwelche Idler z.B.)
- nicht aus Squads/Team auseinandergerissen werden sollten Spieler mit selben Clan Tag
[fullalbumimg]804[/fullalbumimg]
Bild Bild Bild Bild

Benutzeravatar
ManiacAndy
Geschäftsmodell
Beiträge: 898
Registriert: 23.01.2010, 14:48
Wohnort: Eifel
Kontaktdaten:

Beitrag von ManiacAndy » 09.04.2013, 16:10

im zweifel sollte der Balancer ganze squads verschieben können,

zb: das bei einem unterschied von 2 spielern ein 4er squad verschoben wird und von dem anderen team meinetwegen ein 2er squad oder 2 squadlose spieler, wenn das realisierbar wäre gäb es keine probleme mehr mit seinen freunden zu spielen...

die k/d sollte NUR eine rolle spielen wenn wie hotty sagte, ein team dominiert. bzw wenn der unterschied so massiv wäre das 8 leute gegen 12 deutlich dominieren sollte der banlancer (noch) nicht greifen.
Bild Bild

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 17:58

ftn|hotty hat geschrieben:Wenn es möglich wäre, würde ich den Spieler direkt warnen, a la "You will be switched in 10 sec. This will not affect your K/D". Wäre ein netter Service.
Ja, eine solche oder ähnliche Meldung könnte nützlich sein.
ftn|hotty hat geschrieben:Die Auswahlkriterien würde ich aber ein bisschen ändern. Zuerst sollten squadlose Spieler geswitched werden, danach erst nach Beitritt des Servers. Es gibt nichts nervigeres, als wenn man mit FTN auf einen Server geht, im selben Squad ist, nur um nach 30 Sekunden ins andere Team geswitched werden. :RoM:
Das Verfahren ist eigentlich das von CS, falls du selbiges kennst. Aber zur Wiederholung. Zuerst wird der letzte beigetretene Spieler geswitcht. Danach dann die Squadlosen. Sollte der letzte Beigetretene inzwischen einem Squad beigetreten sein, wäre er allerdings nicht mehr Squadlos. *notier*daswirdnochinteressantwerden*
ftn|hotty hat geschrieben:
BlackSoul hat geschrieben:Was aber wenn nicht genügend Mitspieler zum Ausgleichen zur Verfügung stehen.

3. ...

Hier müssen wir eventuell noch einmal miteinander quatschen, David, da ich einfach nicht genau weiß, nach was man alles Spieler unterscheiden kann.
Nur noch mal zum Klarstellen: Der Teambalance wird aktiv, wenn das eine Team deutlich mehr Mitspielern hat, als das anderen; nicht jedoch wenn das eine Team deutlich das andere Team dominiert.
Falls ich mich in meiner Definition irre: Dann ist das Vorgehen, nach squadlose Spielern oder nach Beitritt Spielern zu switchen absolut hirnfrei, weil ich dadurch nicht die Stärke-Balance zwischen den Team herstellen werden, sondern nur den Frustfaktor einiger Spieler erhöht wird. Das Balancen von Teamstärke ist keine triviale Aufgabe.
Es geht hier tatsächlich um Auto-Teambalance! Nicht um das Ausgleichen der Teams von vermeintlichen Pros zu Noobs und umgekehrt. Und selbstverständlich ist das keine triviale Aufgabe!

ftn|hotty hat geschrieben:Wenn die Stärke beider Teams ausgegelichen werden soll, ist ein anderes Vorgehen in meinen Augen besser: Bei jeder Runde wird wird überprüft, ob das eine Team mit einem deutlichen Ticketunterschied gegenüber dem anderen Team gewonnen hat. (Alternative: Es wird geprüft, ob das eine Team zwei Runden hintereinander deutlich gewonnen hat.)
Dann werden beide Teams beim nächsten Rundenstart gut durchgerührt. Über die Details, wie das passieren soll, lässt sich streiten, aber ich habe einige Server gesehen, die das umsetzen und danach waren die Teams halbwegs ausgeglichen. Unser Ziel ist nicht perfektes Balancing, aber die Spieler sollen nicht frustriert den Server verlassen.
So etwas kann später mal erfolgen. Im Moment möchte ich einfach das Auto-Teambalance für David spruchreif bekommen.

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 18:03

Roland von Gilead hat geschrieben:- ... oder geringe Punkte K/D (irgendwelche Idler z.B.)
idler nutzen nichts und habe ich deswegen außen vorgelassen. Jemanden mit wenigen Kills und womöglich vielen Deaths (also mich bspw. :D ) ins gerade unterbesetzte Team zu schicken finde ich etwas unsinnig.
Roland von Gilead hat geschrieben:- nicht aus Squads/Team auseinandergerissen werden sollten Spieler mit selben Clan Tag
Interessant. Wenn dann sollte hier vielleicht sogar Gruppen/Squadweise verschoben werden. Falls der Spielerüberhang das hergibt.

Benutzeravatar
BlackSoul
Administrator
Administrator
Beiträge: 7900
Registriert: 13.01.2003, 20:13

Beitrag von BlackSoul » 09.04.2013, 18:08

ManiacAndy hat geschrieben:im zweifel sollte der Balancer ganze squads verschieben können,

zb: das bei einem unterschied von 2 spielern ein 4er squad verschoben wird und von dem anderen team meinetwegen ein 2er squad oder 2 squadlose spieler, wenn das realisierbar wäre gäb es keine probleme mehr mit seinen freunden zu spielen...
Schrieb ich gerade im Ansatz zu Rolands Kommentar.
ManiacAndy hat geschrieben:die k/d sollte NUR eine rolle spielen wenn wie hotty sagte, ein team dominiert. bzw wenn der unterschied so massiv wäre das 8 leute gegen 12 deutlich dominieren sollte der banlancer (noch) nicht greifen.
Problem ist, wenn wir einen deutlichen Spielerüberhang haben, so brauchen wir Kriterien hierfür. Die K/D eignet sich grundsätzlich hierzu ebenso, wie das Squadweise verschieben. Welches davon man stärker gewichtet, müssen wir noch sehen. Jedoch wäre eine Unterscheidung nach K/D schlichtweg einfacher, als nach Squads zu fahnden, denke ich. Aber diese Frage kann wohl nur David beantworten.

Benutzeravatar
ManiacAndy
Geschäftsmodell
Beiträge: 898
Registriert: 23.01.2010, 14:48
Wohnort: Eifel
Kontaktdaten:

Beitrag von ManiacAndy » 09.04.2013, 18:51

BlackSoul hat geschrieben:
ManiacAndy hat geschrieben:die k/d sollte NUR eine rolle spielen wenn wie hotty sagte, ein team dominiert. bzw wenn der unterschied so massiv wäre das 8 leute gegen 12 deutlich dominieren sollte der banlancer (noch) nicht greifen.
Problem ist, wenn wir einen deutlichen Spielerüberhang haben, so brauchen wir Kriterien hierfür. Die K/D eignet sich grundsätzlich hierzu ebenso, wie das Squadweise verschieben. Welches davon man stärker gewichtet, müssen wir noch sehen. Jedoch wäre eine Unterscheidung nach K/D schlichtweg einfacher, als nach Squads zu fahnden, denke ich. Aber diese Frage kann wohl nur David beantworten.
Mein gedanke dahinter war einfach das es keinen sinn macht einen menschen mit hoher k/d (guten spieler) im grösseren Team in das kleinere Team zu switchen obwohl das kleinere team sowieso schon dominiert und evtl sowieso noch bessere spieler bereits im team hat. klar ist selten aber ein durchaus realistisches szenario.

Daher wäre die verschiebung mit etweiliger mischung (wie ich sagte, zb 7 spieler in das kleinere team damit die zusammenbleiben können, und dann vom anderen team 2 leute wiederum ins andere um die balance zu bekommen. wie gesagt falls das möglich ist, kenne bis jetzt nur das sture "Last joining" spieler switch... was für den letzt gejointen eben immer scheisse ist.
Bild Bild

Antworten