Deep Gray

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

DeepGray und DeepPink beruhen z.Zt. auf derselben Software. Der Bot ist in JAVA implementiert. Er lauscht an dem Karopapier Websocket Port und zieht sofort wenn er in einem Spiel dran ist. (Leider funktioniert das nicht immer, weil der Bot keine Benachrichtigung vom Server bekommt, wenn er dran ist, weil jemand ausgestiegen ist oder wenn jemand ein Spiel gestartet hat und der Bot der erste Spieler ist. Deshalb gibt es auch eine Logik, die regelmäßig nachsieht, ob in der Dran Liste noch weitere Spiele stehen, aber das sind Ausnahmefälle. Im Normalfall zieht der Bot also sofort (wenn er nicht gerade dabei ist, in einem anderen Spiel lange kompliziert herumzurechnen))

Der Bot beherrscht keine Crashregeln, er versucht mit allen Mitteln ohne Crash über die Runden zu kommen. Ja, man kann mit ZZZ=0 den Bot ziemlich alt aussehen lassen, naja, wer's für sein Ego braucht...

... das war einmal. Seit Anfang 2007 beherrschen die DeepBots auch die Crashregeln, so dass im Normalfall bei ZZZ=0 der Spieler ziemlich alt aussieht. Der Bot beachtet dabei auch das "Taktische-Crash-Flag". Wenn taktische Crashs nicht erwünscht sind, versucht der Bot (wie bisher) Crashs zu vermeiden.

Der Bot beherrscht auch Checkpoints. Sind Checkpoints angeschaltet, versucht der Bot auf kürzestem Weg alle Checkpoints abzufahren und dann ins Ziel zu fahren. Das führt neuerdings bei einigen Karten (z.B. Map Nr. 1) dazu, dass er die Map rückwärts fährt (weil das nunmal schneller als vorwärts ist). Möchte man das vermeiden, kann man die Checkpoints ausschalten. Eine spezielle KI versucht dann, kurze Start-Ziel Wege zu vermeiden und lotst dann den Bot brav um den ganzen Kurs herum.

Seit November 2009 beherrschen die DeepBots den Richtungsmodus, jedenfalls für Strecken, auf denen der Richtungsmodus sinnvoll ist. Das sind in erster Linie die Rundkurse. Bei Strecken, die keine Rundkurse sind und es eigentlich nur einen Weg vom Start zum Ziel gibt, wird der Richtungsmodus weitgehend ignoriert. Außerdem ergibt der Formel-1-Richtungsmodus auch nur mit eingeschalteten Checkpoints Sinn, deshalb wird der Formel-1-Modus bei ausgeschalteten Checkpoints auch ignoriert. Wenn der Bot aus welchen Gründen auch immer den Richtungsmodus ignoriert, schreibt er eine entsprechende Bemerkung in den Bordfunk. Das oben beschriebene unbeabsichtigte Rückwärtsfahren sollte damit der Vergangenheit angehören.

Außerdem ist der Bot in der Lage, eine Spielanalyse auszugeben. Es gibt ja immer mehr Strecken, wo jeder einen eigenen Weg fahren kann und man schnell keinen Überblick mehr hat, wer eigentlich vorne und wer hinten liegt. Um eine Spielanalyse zu bekommen, schreibt man @Botname: Analyse in den Bordfunk. Groß-Kleinschreibung ist dabei egal. Was dahinter kommt ist auch egal, so dass man bei entsprechender Gemütslage auch "@DeepPink: Analyse her aber dalli, du Blechkopp" schreiben kann. Wenn der Bot das nächste Mal zieht, rechnet er für jeden Spieler aus, wieviel Züge er ins Ziel braucht, vorausgesetzt er würde optimal fahren. Das Ergebnis schreibt er wieder in den Bordfunk.

Trivia

Da mich von Zeit zu Zeit Fragen zur Entstehung der Bots erreichen (die Bots sind Anfang 2004 entstanden, sind jetzt also schon über 10 Jahre alt), hier ein bisschen Geschichte:

Der 1. Bot heißt DeepGray, weil ein paar Jahre vorher Deep Blue der erste Schachcomputer war, der den damaligen Schachweltmeister geschlagen hatte. Das Gehäuse in dem der Karopapier Bot lief (siehe Wer ist DeepGray, das Bild ist tatsächlich ein Foto des Rechners auf dem der Bot lief, kein irgendwo her kopiertes Bild) war grau, also hieß er DeepGray.

Der 2. Bot enstand und sollte zuerst nach einer meiner Lieblingsrockgruppen Deep Purple heißen, aber meine damalige Freundin meinte, das hätte Deep Purple nicht verdient, so zu heißen wie ein Programm, das Käsekästchen spielt, deshalb hieß der Bot dann DeepPink, weil Pink wie Purpur eine knallige rötliche Farbe ist.

Als DeepGray entstand, lief er zunächst im Testbetrieb, hauptsächlich mit mir selbst. Als er zufriedenstellend lief wollte ich ihn in einem normalen Spiel testen. Zur damaligen zeit gab es einen Bot der Asrael oder so ähnlich hieß. Dies war ein schlechter Bot der häufig noch nicht mal das Ziel fand, geschweige denn, dass er irgendwas gewonnen hätte. Dieser Bot war mehr ein Witz und wurde praktisch nie zu irgendeinem Spiel eingeladen. Ich hatte die Befürchtung, dass man DeepGray ebenso als nicht ernstzunehmenden Witz betrachten würde, wenn er im ersten Spiel schlecht abschneiden würde, und da Karopapier eine Menge mit Glück zu tun hat, hätte das durchaus passieren können, egal wie gut er ist. Um einfach die Wahrscheinlichkeit zu steigern, dass der Bot gut abschneidet, hab ich dann einfach den Bot für 2 Spieler gleichzeitig spielen lassen. Das ist der einzige Grund warum DeepPink entstanden ist. Das legendäre (zumindest für mich legendäre) Spiel "Bots vs. Humans" wurde mit den damals besten Karopapier Spielern gestartet und ich weiß zwar nicht mehr wie die Bots genau abgeschnitten haben, (das Spiel ist leider verloren gegangen und nicht mehr einsehbar) aber sie sind jedenfalls nicht Letzter geworden. Eigentlich sollte DeepPink danach wieder verschwinden, aber man kann sich als Spieler nicht einfach so auflösen und deshalb gibt es ihn bis heute.

Einschub von Didi: Das erste Auftauchen von DeepPink ist in Spiel 1015, das vermutlich dieses "Bots vs. Humans" darstellt. In dem Log kann man zwar nicht so viel herauslesen wie heute, aber man sieht die Zieleinläufe:

Einschub von quabla: das kann irnkwie nicht sein - als ich hier im Januar 2005 anfing, gab's die Deeps schon. Das erst Auftauchen von DeepGray ist in Spiel 509, DeepPink in Spiel 513.

Einschub von ulli: Doch das kann schon sein, 509 und 513 ist der erwähnte Testbetrieb. Das Spiel 1015 scheint mir tatsächlich das erwähnte Bots vs. Humans zu sein, mit dem ich die Bots quasi an die Öffentlichkeit gebracht habe.

 2005-09-26 21:40:56: DeepPink wird 1.
 2005-10-10 21:26:20: ulli wird 2.
 2005-10-23 21:02:29: Tobsen wird 3.
 2005-11-06 19:02:26: quabla wird 4.
 2005-11-20 14:25:13: e-fred wird 5.
 2005-11-20 15:08:16: chaos wird 6.
 2005-11-21 20:59:40: keit wird 7.
 2005-12-04 22:21:57: DeepGray wird 8.
 2005-12-12 19:21:56: kili wird 9.
 2005-12-12 21:45:35: Yashem wird 10.

Die Bots haben seit dem etwas dazugelernt, nämlich Checkpoints, Crashen, Richtungsmodus und das Blocken aber die zentrale Metrik zur Bewertung der Fahrlinie (die ich nach wie vor als Betriebsgeheimnis betrachte) hab ich seit den ersten Tagen nie geändert.

Zu Beginn lief der Bot unter Solaris auf einer Sun UltraSparc, die die wahnwitzige Anzahl von 4 Prozessoren hatte. Da lief aber nicht nur der Bot sondern eine Menge anderer Kram, weshalb es in der Firma hier und da Proteste gab, weil der Bot so viel Rechenzeit verbrauchte und er deshalb ab und zu einfach mal vom Systemverwalter gekillt wurde. Heute läuft der virtuelle Karopapierspieler auf einer über was-weiß-ich wieviel Ebenen virtualisierten Hardware unter was-weiß-ich für einem Linuxderivat auf Java Version was-weiß-ich, und es ist bei so viel Virtualität und Ungewissheit ein Wunder dass dabei noch was Greifbares herauskommt. Wer Interesse hat kann auch hier dem Bot beim Ziehen zusehen.