Roboturnist

Aus KaroWiki
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.

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 (zu 73% erreicht!)
  • 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 [2] oder [3]) oder er einfach schon ins Ziel fährt obwohl er noch nicht alle CPs eingesammelt hat. (z.B. [4] und [5])
  • 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, 127, 128, 138, 145, 155, 164, 166, 167, 173, 174, 182, 190, 205, 207, 208, 222, 227, 228, 233, 234
  • mit CPs aus: 92, 94, 127, 145, 167, 173, 205, 227, 233, 234