[Eigeninteresse] Spielerklassifizierungen für Masterarbeit

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Eigeninteresse] Spielerklassifizierungen für Masterarbeit

      Hallo zusammen!

      Nach freundlicher Erlaubnis von Midna darf ich euch mit meinem ersten Post hier im Forum gleich mit Werbung belästigen :).

      Ich bin Informatikstudent und schreibe derzeitig meine Masterarbeit über das Thema "Classifying Players in Action Real-Time Strategy Games Using Machine Learning". Konkret heißt das, dass ich untersuche, inwieweit sich Spielertypen automatisch mit Methoden des maschinellen Lernens erkennen lassen. Das ganze wird konkret mit Dota 2 Replays gemacht.

      Nun ist es so, dass für die Algorithmen vor allem eines benötigt wird: Möglichst viele korrekt klassifizierte Spieler. Ihr könnt euch wohl schon denken, worauf das hinausläuft: Hierfür würde ich gerne nach eurer Hilfe fragen.

      Hierfür habe ich ein Programm geschrieben, welches Replay-Dateien analysiert, entsprechende Mutmaßungen über den Spielstil jedes Spielers macht und den Benutzern die Möglichkeit gibt, ihre eigene Einschätzung zum jeweiligen Spielstil auszuwählen und auf einen Server hochzuladen.

      Ich würde mich daher sehr freuen, wenn der ein oder andere sich das Tool herunterlädt, mit den eigenen nächsten Spielen füttert und ein paar Spieler klassifiziert. Falls das Replay nicht mehr im Spielclient heruntergeladen werden kann, bitte irgendwo zum Download zur Verfügung stellen und im Programm unter "Comment" angeben.

      Details über die Spielerklassen und Informationen, wie genau vorzugehen ist, gibt es auf einer eigens dafür gemachten Webseite (Englisch):

      d2playerclassifier.de.vu

      Sollte es Leute geben, die es mit Englisch nicht so haben, kann ich die wichtigsten Dinge auch nochmal auf Deutsch zusammenfassen. Einfach bescheid sagen!


      Unter allen Einsendungen werden zudem Preise verlost.

      Für normale Einträge:
      2x Dota 2 Items bis zu einem Gesamtwert von 10€ (frei wählbar)

      Für Klassifizierungen des Spieles mit der Match ID 785643441 (TI4, also noch downloadbar im Client):
      1x Dota 2 Items bis zu einem Gesamtwert von 20€ (frei wählbar)

      Zweiteres soll zur Überprüfung dienen, inwieweit Spieler sich über die Spielstile eigentlich einig sind.
      Bei normalen Einträgen wird per Zufallszahl ein Spielereintrag ausgewählt und dann geschaut, wer diesen hochgeladen hat. Die Gewinnchance steigt also mit den hochgeladenen Klassifizierungen - Trolleinträge u.ä. werden aber durchaus entfernt ;).

      Ich würde mich sehr freuen, wenn mich einige Leute hierbei unterstützen würden.
    • "Keep in mind that these do not judge the player's performances!"

      "Feeder:
      Sometimes things just don't seem to work out. Players who died very often while having no impact on the game (no gold, no support items for the team...). "

      ???

      Verstehe die Typenbildung nicht bzw. bin ich der Meinung, dass da unsauber getrennt wird. Jemand kann doch sowohl auf Support spielen als auch feeden. Wie sollte ich dann bewerten? Außerdem sollte es mMn eine Kategorie für Leute geben die mit Build oder Playstyle trollen/absichtlich schlecht spielen.
    • Barabas schrieb:

      "Keep in mind that these do not judge the player's performances!"

      "Feeder:
      Sometimes things just don't seem to work out. Players who died very often while having no impact on the game (no gold, no support items for the team...). "

      ???

      Verstehe die Typenbildung nicht bzw. bin ich der Meinung, dass da unsauber getrennt wird. Jemand kann doch sowohl auf Support spielen als auch feeden. Wie sollte ich dann bewerten? Außerdem sollte es mMn eine Kategorie für Leute geben die mit Build oder Playstyle trollen/absichtlich schlecht spielen.


      Ein guter Carry kann beispielsweise durchaus auch in die Kategorie Feeder fallen, obwohl er eigentlich nicht viel falsch gemacht hat - schlichtweg dadurch, dass er nicht beschützt und gleichzeitig stark attackiert wurde, womit er effektiv handlungsunfähig war. Das sollte damit nochmals klargesellt werden. Die Kategorie wurde letztendlich für einige Extrembeispiele hinzugefügt, die nicht so wirklich in die anderen Rollen passen wollten, weil es spielerisch nie dazu kam. Ein Support kann beispielsweise viel gestorben sein, aber durchaus Wards gekauft und seinen Carry beschützt haben, damit hat er seine Rolle immer noch klar erfüllt. Hier müssen aber Grenzen abgewogen werden, ab wann man reiner Feeder ist und wann man noch als Support gilt, die wahrscheinlich jeder irgendwo anders sieht, das stimmt.

      Prinzipiell soll die Anmerkung nochmal betonen, dass es um Spielstile geht und das ganze kein Coaching o.ä. ist.

      Und ja, eins der Hauptprobleme, die auch von vornherein klar waren, ist dass die Grenzen zwischen Spielstilen sehr fließend sind und Spieler ihr Verhalten auch durchaus verändern können. Der Versuch ist hier, sie trotzdem auf eine dominante Klasse festzusetzen und zu sehen, wie gut das klappt.
      Aktuell ist die Erfolgsrate bei 75% bei etwas über 500 Beispielen, wobei die Fehlerkennung auch oft genau zwischen zwei "benachbarten Klassen" liegen. Beispielsweise werden Ganker oft mit aktiven Carries verwechselt und Pusher mit Farming Carries. Werden die Spielstile beispielsweise auf Carry - Support - Solo Lane reduziert, ist die Erkennung bei ca. 95% und damit schon wesentlich erfolgreicher.

      Trolle u.ä. fallen für die Arbeit aus dem Rahmen, sofern sie nicht ohnehin in die Feederkategorie fallen: Es geht erstmal darum, in organisierten Spielen zu schauen, wie erfolgreich das ganze funktioniert. Also für Rollen, die in Guides u.ä. wohldefiniert sind bzw. von vielen Spielern akzeptiert werden (die Klassen sind nicht einfach aus dem Popo gezogen, sondern wurden aus Tutorials und Spielermeinungen erstellt) und sich durch bestimmte Dinge auszeichnen.
    • Würde sagen dass sich deine Klassifizierung des "Carry-farming" (wo du afk-jungle farmer als Beispiel nennst) durchaus mit der des "Pusher" überschneidet. Beides kann für einen Natures Prophet sehr gut in Frage kommen. Soll man dann den Spielstyle nach der Spielzeit auswählen, also welchen Spielstyle der Spieler am längsten verfolgt hat?
      Analoges Beispiel: Leshrac ---> Ganker (z.B. mit SD) ---> Pusher
      "KuroKy: Shoutouts goes to all my fans who stayed with me throughout the years, I'm lucky to have you people cheering me up even in my worst times, thanks to you.
      NEW_WORLD_ORDER fighting~, bring it on rest of the world!"
    • Heinz007_tm schrieb:

      Würde sagen dass sich deine Klassifizierung des "Carry-farming" (wo du afk-jungle farmer als Beispiel nennst) durchaus mit der des "Pusher" überschneidet. Beides kann für einen Natures Prophet sehr gut in Frage kommen. Soll man dann den Spielstyle nach der Spielzeit auswählen, also welchen Spielstyle der Spieler am längsten verfolgt hat?
      Analoges Beispiel: Leshrac ---> Ganker (z.B. mit SD) ---> Pusher


      Ja, der dominante Spielstil ist entscheidend. Wenn der Nature's Prophet also klar das Ziel verfolgt hat, Tower zu pushen und beispielsweise auch in Teamkämpfen gerne mal darauf verzichtet hat, sich zu beteiligen und stattdessen die Gunst der Stunde für einen Push genutzt hat, ist der definitiv als Pusher zu bezeichnen, auch wenn Jungle Camps dazwischen waren.
      Bei der ersten Testrunde auf reddit hat sich da aber auch gezeigt, dass diese beiden Klassen wirklich enorm schwer voneinander zu trennen sind, obwohl die Spieler allgemein die beiden Stile klar unterscheiden und ja auch in der Picking Phase meist klar unterschiedliche Helden für diese Rollen wählen.

      Meine Grundannahme war hier, dass Pusher allgemein deutlich mehr Schaden an lane creeps machen, während dieser sich bei carries etwas mehr in Richtung Jungle verschiebt und in der lane auch nicht ganz so hoch ist. Aus dem einfachen Grund, dass sie nur die Last Hits wollen und einen Push in die gegnerische Richtung aus Sicherheitsgründen nicht möchten. Gerade im lategame verschwimmen die beiden Stile aber immer mehr und es ist oft kaum noch zu sagen, ob nun bewusst gepusht wurde oder die creeps sich nur angeboten haben.
      Fand ich vor allem ganz spannend, weil "Pusher" so ziemlich einer der ersten Begriffe ist, wenn man Leute nach konkreten Spielstilen fragt.

      Aber wie gesagt: Das dominante zählt. Wenn das bei bestimmten Spielern kaum auszusagen war, was dominant ist, am besten als Kommentar schreiben, dann kann ich das in die Auswertung einfließen lassen. Die wird ohnehin sehr kritisch gestaltet sein und allem voran auch die Grenzen aufzeigen, die ihr hier ja schon fleißig aufgezeigt habt ;).

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von CrusherDota2 ()

    • Barabas schrieb:

      Wäre nicht der Schaden, dem man den Towern austeilt ein besserer Wert um Pusher zu bestimmen?


      Der Schaden ist aufgrund dieser Überlegung auch für die Algorithmen enthalten (war anfangs auch meine Annahme, dass das DER Indikator ist) und es hat sich gezeigt, dass das leider so gut wie keinen Aussagewert hat. Meistens ist der Schaden von Carries hierfür am höchsten, weil die schlichtweg die höchsten DPS für Gebäude haben und in den meisten Spielen durch das ganze Team die Tower geholt werden. Pusher sind dagegen in vielen Spielen so gut wie gar nicht an die Tower gekommen, sondern haben quasi nur dafür gesorgt, dass die Creeps ordentlich drauf donnern. Und selbst wenn, war der Wert dann am Ende oft maximal so hoch wie bei jeweiligen Carries, wenn nicht geringer.

      Ist aber alles noch enthalten und die Algorithmen haben die Möglichkeit, das zu benutzen, wenn sich da entsprechende Muster zeigen.

      E: Konkretes Beispiel wäre übrigens Tinker, der häufig als Pusher gespielt wird mit March of the Machines gespamme, aber trotzdem keinerlei Schaden an Towern macht.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von CrusherDota2 ()

    • Ich würde sagen du machst den Fehler dass du die Spieler in EINE Rolle einteilen willst obwohl das einfach oft nicht der Fall ist. Gleichzeitig versuchst du dieses Problem zu umgehen indem du Mischrollen für einige Kombinationen anlegst. "Support - Roaming" ist für micht nichts anderes als ein Spieler der gleichzeitig Support und Ganker ist. Carry - Active ist ein Carry der Ganker ist. Für andere Mischrollen machst du aber keine eigenen Klassen. Ein Furion könnte z.B. ein Carry und Pusher sein.

      Ich glaube du würdest besser fahren, wenn du die Rollen klarer abgrenzt und dafür dann aber zulässt dass ein Held auch mehrere Rollen (idR 1-2) haben kann.

      Desweiteren fehlt mir die Rolle des "Teamfighters / Clash-Helden". Wüsste jetzt nicht wo ich einen Offlane - Tidehunter oder einen Jungle Enigma einsortieren sollte. Vermutlich Support - Farming, aber das triffts irgendwie nicht.

      Also ich denke du brauchst nur die Rollen:

      Carry
      Support
      Ganker
      Pusher
      Teamfight
      (Feeder / Inactive)

      wobei ein Held auch 2 Rollen annehmen kann, aber nicht muss. (3+ kannst du denke ich vernachlässigen.)

      Damit kannst du dann auch Spieler abbilden die zwar dieselben Rollen haben unterschiedliche Dominanz der Rollen. z.B. Tinker: Carry - Pusher, Krobe: Pusher - Carry

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Sweeper ()

    • Ihr macht's einem aber auch nicht leicht. Da will man etwas Daten sammeln und muss seine ganze Arbeit verteidigen :D.

      Ich will mal versuchen, etwas näher zu bringen, warum die Dinge so sind, wie sie sind. Dazu muss ich betonen, dass die Arbeit schon relativ lange am laufen ist und die grundlegende Planungsphase schon längst vorbei ist, in der ich noch groß Klassen oder generelle Verfahren definieren könnte. Das ist auch gar nicht böse oder ignorant gemeint, aber einfach der Status - gibt viel mehr für eine Arbeit zu tun, als nach außen hin sichtbar ist ;).

      Zunächst: Die Klassen sind nicht spontan ausgedacht, sondern haben sich während der Arbeit entwickelt, u.a. anhand der Daten und Kommentare, die ich so von anderen Spielern erhalten habe. Es wird immer Diskussionspotenzial geben, welche Klassen jetzt sinnvoll sind, und ich bin mir sicher wenn ich da immer Vorschläge integrieren würde, würde ich ewig damit beschäftigt sein, die Klassen zu definieren ;). Worauf ich dabei vorrangig geachtet habe, ist wirklich klares Spielverhalten. Wenn wir beispielsweise deinen Vorschlag "Teamfight" nehmen, stellt sich mir da die Frage, wodurch sich ein solcher Spieler auszeichnen soll. Hohe Teamfightteilnahme natürlich, aber die wären keine Teamfights, wenn nicht extrem viele Spieler daran beteiligt wären. Insofern ist das kein Attribut, das beispielsweise den typischen Tidehunter Offlaner auszeichnet, der sich möglichst schnell einen Blink Dagger und Refresher Orb holt. Im bisherigen Verlauf haben die Spieler solche Offlaner durch die Bank weg als aktiven Carry klassifiziert, weil die Tidehunter-Spieler durchaus gefarmt haben, aber ihr Augenmerk viel auf Kämpfe gelegt haben. Als Ganker wurden dagegen meist Spieler klassfiziert, die ständig durch die Gegend gelaufen sind, um ihre Angriffsmöglichkeiten zu suchen, die also relativ viel "Leerlauf" hatten, mit Ausnahme der Anfangsphase, um Levels/items zu bekommen - zudem sind die üblicherweise auch schon früher unterwegs und ganken bereits im Early Game recht viel.

      Für dich sind deine Vorschläge jetzt wahrscheinlich perfekt, vielleicht geben dir da auch einige Spieler recht, aber es wird dann wieder andere geben, die wieder eine andere Meinung haben. Da gibt es wirklich sehr starke Unterschiede. Ich habe mit den bisherigen Daten versucht, das meiste so abzudecken, dass auch klare Muster im Spielverhalten erkennbar sind und zumindest einigermaßen ein Konsens hergestellt ist. Ich bin da auch gerade etwas verblüfft, jetzt hier so oft zu lesen, dass gar keine Klassifizierung möglich sei, weil ich solche Beschwerden bisher nicht gehört habe bei den bisher ca. 400 gesammelten Einträgen.

      Die Arbeit als Ganzes soll auch schauen, wie erfolgreich diverse Machine Learning Verfahren sind, die schon in anderen Spielebereichen mehr oder minder erfolgreich eingesetzt werden. U.a. auch sogenannte Clusterer, die Spielerverhalten zu einzelnen Klassen zusammenfassen, ohne dass irgendjemand vorgibt, wie die Klassen auszusehen haben. Es geht also jetzt nicht nur darum, DAS Verfahren zu finden durch die Kombination von X Klassen oder ähnliches, sondern tatsächlich zu untersuchen, wie gut diese Verfahren sich mit einzelnen Klassen schlagen und welche Probleme es da gibt. Das ganze dann als Multiklassenproblem anzusetzen, kann dann gerne in einer darauf aufbauenden Arbeit gemacht werden ;). Inwiefern das besser geeignet wäre, lässt sich aus den Ergebnissen dann sicherlich auch sehen.

      Auch bei Multiklassen treten dann erneut Probleme auf, im Grunde verschiebt man die Problematik damit auch nur etwas. Beispiel: Wieviel Push muss denn drin sein, damit es in die Liste der Klassen reinkommt? Auch hier wird es sicher wieder verschiedene Meinungen geben und es ergeben sich ganz neue Probleme. Auf diese Weise habe ich aber die Möglichkeit, sehr genaue Angaben über die Genauigkeit machen zu können, gleichzeitig den Ausbau zu einem Multiklassenproblem zu bewerten und das Spiel auch im Vergleich zu z.B. Starcraft 2 zu bewerten, für das es auch bereits Forschungsarbeiten gibt.

      Ich hoffe, das hat jetzt ein wenig Klarheit darüber gegeben, warum alles so aufgebaut ist, wie es ist. Wie gesagt ist das mit einer Rolle kein Fehler, sondern schlichtweg eine Untersuchung, wie gut das in diesem Spielgenre funktioniert.

      Für Fälle, in denen eine Klassifizierung zumindest schwierig mit den vorhandenen Klassen gefallen ist, gibt es dann immer die Möglichkeit des Kommentars. Wenn sich da bestimmte Probleme abzeichnen, kann ich das noch mit in die Beurteilung einbringen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von CrusherDota2 ()

    • Benutzer online 1

      1 Besucher