Roboturnist

Aus KaroWiki
(Weitergeleitet von Benutzer:Roboturnist)
Zur Navigation springen Zur Suche springen

ist ein in der Entwicklung befindlicher Bot von Karaser.


Idee

Der Roboturnist ist anders als die anderen Bots. Er hat keinen Wegfindealgorithmus im klassischen Sinne, er sucht stattdessen in den anderen Spielen nach ähnlichen Situationen und wertet dann aus wie andere entschieden haben.

Die Idee dazu gibt es bestimmt schon relativ lange, aber nachdem sich niemand dazu bereit erklärt hat, die Idee umzusetzen, musste Karaser selber Hand anlegen.

Status

Stand: 25.9.17 Der Bot ist noch längst nicht fertig. Er kann noch nicht ziehen, wer ihn einlädt, darf also 30 Tage auf die KaroMAMA warten. Derzeit kann er aber schon zu einer gegebenen Spielesituation auswerten, welcher Nachfolgezug wie häufig gezogen wurde.

Stand: 9.10.17 Heute hat der Roboturnist seine ersten Züge gemacht! Nachdem die Netzwerkkommunikation in großen Teilen von maks (KaBotte) bereitgestellt wurde, fährt er und ist sogar einladbar. Es ist noch eine frühe Version, die im Prinzip nicht viel mehr kann als das, was auch schon am 25.9. lief, aber das reicht aus, um schon ähnlich gut wie Slybotone zu fahren. Er ist aber nach wie vor aufgeschmissen, wenn er auf einen unbekannten Zug stößt. Derzeit läuft er nur testweise, das heißt nur wenn ich einen laufenden Rechner habe und ihn manuell starte.

Stand: 15.10.17 Der Roboturnist zieht gerade nicht und wird vermutlich auch noch ein paar Tage nicht ziehen. Grund dafür ist das Entfernen von Spaghettis, die sich in meinem Code verheddert haben...

Stand: 10.05.18 Mittlerweile steigt Robo automatisch aus wenn er zu einem TC-Rennen oder ein Rennen auf einer Karte die auf der Blacklist steht eingeladen wird. Robo wird selbstständig, sodass er hoffentlich bald auszieht, der Umzug auf einen richtigen Server rückt näher (eventuell kilis toter Papagei).

Stand: 11.12.18 Robo steigt jetzt auch automatisch bei Spielen auf neueren Karten aus, die er noch nicht fahren kann, da zu wenige beendete Spiele vorliegen. (Derzeit geht nix über MID=235)

Stand: 30.01.19 Nachdem kili einen Zugang auf seinem toten Papageien (dead-parrot.de) eingerichtet hat, hat Karaser es tatsächlich geschafft, sich dort anzumelden ohne alles kaputt zu machen. Der Auszug Robos rückt näher, auch wenn bis dahin noch ein bisschen was zu tun ist. Insbesondere muss noch eine Routine eingebaut werden die überprüft ob Robo nicht planlos umherirrt oder ewig Kreise zieht und ab >300 Züge auf einer Karte aufhört zu ziehen. Sonst passiert sowas wie in [1]. Zudem soll er noch einmal pro Woche die heruntergeladenen Json-Dateien der Spiele die er zum Auswerten benutzt aktualisieren.

Stand: 24.02.19 Karaser hat seine Nudelmaschine ausgepackt und den Spaghetticode noch nudeliger gemacht. Aber dafür zieht jetzt Robo bei Spielen in denen er schon mehr als 300 Züge gemacht hat nicht mehr, sodass er nicht mehr sinnlos durch die Gegend irrt wenn er den Weg nicht mehr findet. Der Bot läuft teilweise schon probeweiser über den toten Papageien, man muss nur noch ein paar Skripte basteln die den Bot bei einem der allseits bekannten Neustarts des Papageien wieder zum Leben erweckt, ebenso sollte er ca einmal pro Woche seinen Datensatz automatisch aktualisieren.

Stand: 26.02.19 kili hat ein Skript gebastelt das Robo bei einem Spontanreset bzw. Neustart automatisch wieder anwirft. Und dann noch ein paar Sachen dass Karaser es bedeutend leichter fällt, per Fernwartung zu schauen ob Robo läuft sowie ihn zu starten oder zu stoppen. Riesendank also an kili und seinen toten Papageien! Der Bot sollte ab jetzt wartungsarm laufen, der Testbetrieb ist somit nach fast 1,5 Jahren offiziell beendet. Wenn was doch nicht tut einfach Karaser anschreiben.

Stand: 15.01.2021 Der gute und seit nun mehreren Jahren tüchtig fahrende Roboturnist wurde endlich auf die neue Api umgestellt (apiv2). Dabei wurden auch die Dateien auf kilis Papageien zentral gespeichert, sodass aristarch seine IQ-Auswertung auch mit diesen Daten durchführen kann. Darüber hinaus gibt es jetzt eine Spielerblackliste, deren Züge er ignoriert. In dieser sind derzeit alle Bots (inklusive er selbst). Insbesondere dass er seine eigenen Züge mit einbezogen hat führte zu einigen komischen Effekten wie z.B. bei Karte 131 (Siehe [2]). Theoretisch kann ich ihn jetzt auch gezielt nur bestimmte Leute auswerten lassen. Wenn ich das für alle mache die schon genügend selbst gezogen haben bräuchte man gar nicht mehr selber ziehen. Praktisch, nicht? (Die Roboter übernehmen wohl doch noch das Karouniversum...)

ToDos

  • Gewichtung der einzelnen Spielsituationen
    • Einbeziehung der geblockten Felder
    • Einbeziehung von anderen Mitspielern
    • Einbeziehung von Sieg/Niederlage des Spielers
    • Einbeziehung der überfahrenen CPs (wichtig für CP-Rennen!)
  • Bei unbekannten Zügen:
    • nach ähnlichen Zügen (z.B. parallale Züge) suchen und diese auswerten
    • versuchen, auf eine bekannte Linie in der Nähe zu fahren
  • Bot auf Server auslagern und dauerhaft laufen lassen Erledigt!
  • Bei TWM4 mitfahren lassen Erledigt!
  • Weltherrschaft bzw. Karoherrschaft mit meinem Roboturnisten übernehmen (optional)

Probleme

  • Bei größeren Karten wie z.B. der CS-Kurve kann es schnell passieren, dass man in einer Spielsituation ist, die es so noch nie zuvor gab. Dann steht der natürlich doof da. Ideen das zu umgehen gibt es, die werden auch irgendwann umgesetzt. Bei vielbefahrenen kleineren Karten (1, 89, ...), sind solche Situationen aber ausgesprochen selten.
  • Bei manchen Karten mit CPs gibt es das Problem, dass man einen ähnlichen/gleichen Weg fahren kann obwohl man in seiner bisherigen Zuglinie unterschiedliche CPs überfahren hat. Dafür muss man bei der Gewichtung die einzelnen überfahrenen CPs mit den überfahrenen CPs des Roboturnisten abgleichen und (sehr) stark gewichten! Denn sonst kann es auf manchen Karten dazu kommen dass er beliebig lange Runden dreht (Siehe [3] oder [4]) oder er einfach schon ins Ziel fährt obwohl er noch nicht alle CPs eingesammelt hat. (z.B. [5] und [6])
  • Robo kann neue Karten nicht sofort fahren. Klar, es müssen erst mal genügend Rennen auf der Karte beendet sein, damit er irgendeine Datengrundlage hat. Aus diesem Grund bitte nicht zu ganz neuen Karten einladen, erst vllt. nach 1-2 Monaten. Je mehr Spiele auf der Karte auch beendet werden, desto besser und sicherer fährt er.

Karten-Blacklist

Karten die Robo nicht sicher/sinnvoll fahren kann und daher sofort aussteigt:

  • mit CPs an: 83,92,94,96,102,108,121,125,127,128,138,145,155,164,166,167,171,173,174,182,187,190,205,207,208,222,227,228,233,234
  • mit CPs aus: 92,94,127,145,167,171,173,205,227,233,234

Trivia

  • Gefühlt 90% des Codes sind in der Zeit zwischen 23 Uhr und 2 Uhr entstanden.
  • Der Name stammt von niemand anderem als nobody. Am 7.6.2017 habe ich mein Vorhaben im Chat erklärt und nach Namensvorschlägen gefragt. Neben Namen wie Imitando, Statisto, KaroBorg, Epigon, Der Sog der Masse, Mitläufer kam von kili ein Vorschlag namens Opportunistbot, worauf nobody antwortete "Na dann aber Opbotturnist" bzw. kurz später "oder Roboturnist". Letzteres hat Karaser dann am meisten überzeugt und der ist es geworden. (nachzulesen ab Chatzeile 395119)
  • In der gleichen Unterhaltung schlägt Sly den Namen "Crashbot" vor, mit der Begründung dass der Bot nichts anderes werden würde.
  • Robert schlägt dann auch gleich vor, dass er nur bestimmte Fahrer auswerten könnte, so als "Ghostbot" von jemandem.
  • Dass Robo so gut fährt wie er fährt, und das ohne die Ganze ursprünglich geplante Gewichtung von Spielsituationen, hat nicht nur seinen Erbauer überrascht. Im IQ ist er derzeit meist in den vorderen 20-30 Plätzen, sein maximaler IQ lag mal bei 147,09 (Stand: 15.1.21). Damit ist er IQ-technisch ungefähr auf dem Niveau von Botrix.