Achtung: Hierbei handelt es sich um einen Prototyp, der meist zu späten Uhrzeiten und einer Menge Spezi entwickelt wurde!
Es kann und wird zu Fehlern kommen! Meldet diese aber gerne. 🙂
Wenn man versucht einen guten Bot zu entwickeln, der den Programmierwettbewerb auch gewinnt, stößt man relativ schnell an das Problem, dass wir als Ersteller keine starken Gegner bereitstellen. Logisch, wir wollen ja keine guten Implementierungen liefern, von denen alle am Ende nur kopieren können. 😉
Dann stellt sich aber die Frage: Wie gut ist mein Bot denn? Ist er tatsächlich gut oder habe ich es nur geschafft, die Schwächen der simplen Beispielbots auszunutzen?
Die beste Methode, um dies herauszufinden, ist es, euren Bot gegen den eurer Kommilitonen antreten zu lassen. Das würde aber bedeuten, dass ihr denen eure .java
oder .class
Datei bereitstellen müsst, mit welchen sie euren Sourcecode sehen und euch eure Taktiken klauen könnten.
Was nützt es euch, herauszufinden, dass euer Bot gegen Max Mustermann haushoch gewinnt, nur damit dieser eure besseren Taktiken in seinen Bot übernimmt und damit wieder besser abschneidet?
Dazu gibt es nun die Networking aka. Online-Multiplayer-Funktion!
Ihr habt nun die Möglichkeit eure Bots gegeneinander antreten zu lassen, wenn ihr euch im gleichen Netzwerk!!!!! befindet.
Der Sourcecode eurer Bots verlässt dabei zu keiner Zeit euren Rechner, sondern bleibt stehts bei euch lokal!
Eine Person muss zunächst das Spiel starten:
java -jar gaTDsen-[Version].jar -g [Spielmodus] -m [Map] -p "[Spieler] RemotePlayer" -n
bspw. im Spielmodus "Normal" auf der GenericSnake-Map:
java -jar gaTDsen-2.1.0.jar -g normal -m GenericSnake -p "MyBot RemotePlayer" -n
Daraufhin wird euch eine Meldung mit folgender Form in der Konsole angezeigt:
Now listening for remote player connections on 127.0.0.1:1099
Die Zahlen können variieren!
Diese Nachricht gibt euch die IPv4-Adresse und den Port an, über die sich euer Kommilitone mit eurem Spiel verbinden kann.
Achtung: Ihr müsst euch beide im gleichen Netzwerk befinden!
Wollt ihr euch nun mit dem Spiel eures Kommilitonen verbinden;
java -jar gaTDsen-[Version].jar -p [Spieler] -host [IPv4-Adresse vom Host] -port [Port vom Host] -n
bspw. mit den Daten aus dem oberen Beispiel:
java -jar gaTDsen-2.1.0.jar -p MyBot -host 127.0.0.1 -port 1099 -n
Sonstige Informationen:
- Ihr könnt auswählen, ob ihr das Spiel mit grafischer Oberfläche oder ohne laufen lassen wollt. In den oberen Beispielen ist der
-n
Parameter immer gesetzt, welcher die grafische Oberfläche deaktiviert. Ihr könnt den Parameter allerdings auch einfach weglassen, um diese zu aktivieren - Damit ein Spiel als Multiplayer-Spiel gestartet wird und auf die Verbindung des Gegners gewartet wird, muss – wie im ersten Beispiel zu sehen – ein Spieler als
"RemotePlayer"
angegeben werden. Tut ihr das nicht, startet das Spiel als ganz normales lokales Spiel.