|
# Erstellung von Bots
|
|
Bei Botolution können Bots einfach über das BotSDK erstellt werden. Das BotSDK steht momentan für [Java](https://git.fh-muenster.de/swa1/coding-challenge/bots/botsdk-java) und [C#](https://git.fh-muenster.de/swa1/coding-challenge/bots/botsdk) zur Verfügung.
|
|
|
|
|
|
Bei Botolution können Bots einfach über das BotSDK erstellt werden. Das BotSDK wird für Java und C# angeboten. Im Folgenden wird die nutzung der Java Version des BotSDKs beschreiben.
|
|
Im Folgenden wird die Nutzung des [BotSkeleton-Java Projekts](https://git.fh-muenster.de/botolution/bots/botskeleton-java/-/blob/main/README.md) als Grundlage für einen neuen Bot beschreiben.
|
|
|
|
|
|
## Anlegen eines Bots im Frontend
|
|
# Bot im Frontend anlegen
|
|
|
|
|
|
## Authentifizieren des Bots mit dem BotSDK
|
|
## User anlegen und anmelden
|
|
|
|
|
|
---
|
|
Nach dem Aufruf der Seite von Botolution http://botolution.fh-muenster.de müssen Sie sich auf der Seite anmelden (Symbol oben rechts). Bei der ersten Anmeldung müssen Sie zunächst ein Benutzerkonto registrieren. Anschließend können Sie sich immer wieder damit anmelden.
|
|
|
|
|
|
# Ablauf Bot Entwicklung
|
|
## Bot anlegen
|
|
|
|
|
|
Bot-Auth von einem User
|
|
In der linken Navigation der Seite finden Sie den Menüpunkt *Bots* zur Anzeige der bereits verfügbaren Bots. Durch Klick auf die Schaltfläche **New Bot +** öffnet sich ein Dialog für die Erstellung des Bots. Wählen Sie dort das Spiel aus, welches der Bot spielen soll (derzeit TicTacToe oder Uno) und geben Sie dem Bot einen persönlichen Namen. Außerdem können Sie einen Beischreibungstext hinterlegen oder die Farbe des Bots anpassen.
|
|
|
|
|
|
- Im Frontend können Nutzer Bots anlegen
|
|
Nach der Bestätigung wird Ihnen ein **BotToken** angezeigt, dass Sie für später kopieren sollten. Sie können auch später wieder auf das Token über den Bearbeiten-Dialog Ihres Bots zugreifen.
|
|
- Game: Dropdown mit wählbaren spielen
|
|
|
|
- Name
|
|
|
|
- Beschreibung
|
|
|
|
- (Prefered Color oder andere Ideen zum Customizing)
|
|
|
|
- Bot wird in Backend DB gespeichert werden
|
|
|
|
- Dann spuckt Frontend API Token aus der mit SDK genutzt werden kann
|
|
|
|
- Bot muss sich am Anfang und bei jeder runde mit Schlüssel Token
|
|
|
|
|
|
|
|
Bot-Auth im Team
|
|
# Bot implementieren
|
|
|
|
|
|
- Bot und damit der Schlüssel kann für Teams freigegeben werden
|
|
## Codevorlage verwenden
|
|
- oder Bot direkt im Team erstellen, wodurch alle Mitglieder zugriff auf den bot bekommen
|
|
|
|
|
|
|
|
Entwicklung Story:
|
|
Klonen Sie den den Quellcode des [BotSkeleton-Java Projekts](https://git.fh-muenster.de/botolution/bots/botskeleton-java/-/blob/main/README.md) per git oder laden Sie ihn herunter ([Download](https://git.fh-muenster.de/botolution/bots/botskeleton-java/-/archive/main/botskeleton-java-main.zip)) und entpacken ihn. In dem Beispiel Code finden Sie minimale Vorlagen für die Verwendung eines einfachen, String-basierten Bots (SimpleBot) und eines streng typisierten Bots (AdvancedBot) für das Spiel TicTacToe.
|
|
|
|
|
|
- Bot angelegt
|
|
Öffnen Sie das enthaltene Java-Projekt in Eclipse. Falls Sie einen anderen Code-Editor verwenden müssen Sie ggf. die Bibliothek "BotSDK-0.1.0-full.jar" einbinden, die sich im Ordner lib befindet.
|
|
- Bot mit Token Starten
|
|
|
|
- Auf Bot Spezifische Seite neues TestMatch Starten
|
|
|
|
- Kontrahänden Auswählen (z.B. Default Bot)
|
|
|
|
- weiterleiten zur /watch Page
|
|
|
|
- Debug Mode für MatchRunner (keine timeouts)
|
|
|
|
- Autowatch für Runden (um nicht immer weiter klicken zu müssen)
|
|
|
|
- Anziegen von Debug Infos
|
|
|
|
- SignalR Daten
|
|
|
|
- Bot Debug Nachrichten
|
|
|
|
- Latenzzeiten oder andere Statistiken
|
|
|
|
- Bot Status (z.B. Draft oder Ready)
|
|
|
|
- Draft startet TestMatches automatisch im Debug Mode
|
|
|
|
- Ready ermöglicht die "Abgabe" zu einem Turnier
|
|
|
|
|
|
|
|
Teamteilname im Turnier:
|
|
## BotToken hinterlegen
|
|
|
|
|
|
- Mehrere Möglichkeiten:
|
|
Die Main-Methode der Klasse BotRunner führt Ihren Bot aus und verbindet ihn mit dem Botolution Plattform. Für die Zuordnung Ihrer Bot-Implementierung zu dem im Frontend angelegtem Bot, müssen Sie den dort kopierten BotToken als botId im Code hinterlegen (Zeile 23).
|
|
- Aus BotView kann Bot für "offenes" Turnier abgegeben werden
|
|
|
|
- Aus TeamView kann Bot für "offenes" Turnier abgegeben werden
|
|
|
|
- Aus TurnierView kann Bot für Abgabe Ausgewählt werden
|
|
|
|
- Kann das jedes Teammitglied oder nur Team Leiter?
|
|
|
|
|
|
|
|

|
|
## Bot ausführen
|
|
|
|
|
|
# Ablauf Bot Entwicklung
|
|
Nun können Sie Ihr Java-Programm starten. Ihr Programm wird ausgeführt, verbindet sich mit Botolution und wartet auf die weitere Ausführung von Spielen. Auf der Webseite mit der Ansicht der Bots sollte Ihr Bot nun als Online angezeigt werden, wenn Sie die Seite neu laden. Sie können das Programm auch mit einem Debugger ausführen und Haltepunkte in der Klasse des verwendeten Bots setzen (z.B. MySimpleBot).
|
|
|
|
|
|
Bot-Auth von einem User
|
|
## Match starten
|
|
|
|
|
|
- Im Frontend können Nutzer Bots anlegen
|
|
Nachdem Ihr Bot bereit steht, können Sie auf der Seite der Matches ein neues Match erstellen. Im Dialog zum Erstellen des Matches wählen Sie das passende Spiel aus. Neben Ihrem Bot wählen Sie einen weiteren Bot als Kontrahenten und starten die Ausführung. Die Liste der Matches erhält einen neuen Einträg, den Sie aktuell leider noch explizit öffnen müssen (Watch Match).
|
|
- Game: Dropdown mit wählbaren spielen
|
|
|
|
- Name
|
|
|
|
- Beschreibung
|
|
|
|
- (Prefered Color oder andere Ideen zum Customizing)
|
|
|
|
- Bot wird in Backend DB gespeichert werden
|
|
|
|
- Dann spuckt Frontend API Token aus der mit SDK genutzt werden kann
|
|
|
|
- Bot muss sich am Anfang und bei jeder runde mit Schlüssel Token
|
|
|
|
|
|
|
|
Bot-Auth im Team
|
|
Hier wird Ihnen das Spielfeld des Spiels im Startzustand angezeigt. Mit "Do Next Turn" können Sie sich die Züge des Spiels inklusive der Reaktionen Ihres Bots einzelnen ansehen. Die Checkbox "Autowatch" führt die nächsten Schritte automatisch aus, sobald Sie verfügbar sind. Sollten Sie Ihren Bot debuggen, können Sie so die Anzeige beim Debuggen jeder Runde automatisch aktualisieren lassen.
|
|
|
|
|
|
- Bot und damit der Schlüssel kann für Teams freigegeben werden
|
|
# Nachrichtenformate der Spiele
|
|
- oder Bot direkt im Team erstellen, wodurch alle Mitglieder zugriff auf den bot bekommen
|
|
|
|
|
|
|
|
Entwicklung Story:
|
|
## Grundsätzlicher Aufbau
|
|
|
|
|
|
- Bot angelegt
|
|
* **Init** Ihr Bot erhält für jedes Match zunächst neben der ID des neuen Matches die spielspezifischen Initialisierungsinformationen.
|
|
- Bot mit Token Starten
|
|
* **Turn Update** Jedes Mal, wenn Ihr Bot am Zug ist, erhält er eine Auflistung der spielspezifischen Rundeninformationen.
|
|
- Auf Bot Spezifische Seite neues TestMatch Starten
|
|
* **Turn Action** Als Ergebnis eines Zuges muss ein Bot eine Aktion ausführen.
|
|
- Kontrahänden Auswählen (z.B. Default Bot)
|
|
|
|
- weiterleiten zur /watch Page
|
|
|
|
- Debug Mode für MatchRunner (keine timeouts)
|
|
|
|
- Autowatch für Runden (um nicht immer weiter klicken zu müssen)
|
|
|
|
- Anziegen von Debug Infos
|
|
|
|
- SignalR Daten
|
|
|
|
- Bot Debug Nachrichten
|
|
|
|
- Latenzzeiten oder andere Statistiken
|
|
|
|
- Bot Status (z.B. Draft oder Ready)
|
|
|
|
- Draft startet TestMatches automatisch im Debug Mode
|
|
|
|
- Ready ermöglicht die "Abgabe" zu einem Turnier
|
|
|
|
|
|
|
|
Teamteilname im Turnier:
|
|
Beim SimpleBot werden alle drei Informationen als Strings angegeben. Der AdvancedBot verwendet einzelne Klassen als Datentypen, welche die passenden Eigenschaften besitzen müssen.
|
|
|
|
|
|
- Mehrere Möglichkeiten:
|
|
## Spielspezifische Nachrichtenformatbeschreibung
|
|
- Aus BotView kann Bot für "offenes" Turnier abgegeben werden
|
|
|
|
- Aus TeamView kann Bot für "offenes" Turnier abgegeben werden
|
|
* [Tic Tac Toe](/docs/user/Bots/TicTacToe)
|
|
- Aus TurnierView kann Bot für Abgabe Ausgewählt werden
|
|
* [Uno](/docs/user/Bots/Uno)
|
|
- Kann das jedes Teammitglied oder nur Team Leiter?
|
|
|
|
|
|
|
|
 |
|
|