Semesterprojekt Implementierung eines Brettspiels inklusive computergesteuerter Spieler
Patrick Schäfer, Prof. Leser
Mittels agiler Softwareentwicklung wird das Brettspiel "Zug um Zug" inklusive computergesteuerter Spieler in Gruppenarbeit implementiert. Zunächst werden die Anforderungen und Schnittstellen spezifiziert. Anschließend werden in Gruppenarbeit die Spiellogik und eine grafische Oberfläche implementiert. Danach werden in konkurrierenden Teams Computerspieler entwickelt. Zum Ende des Semester treten diese gegeneinander an. Die Gruppen organisieren sich in regelmäßigen Treffen und nehmen an moderierten, gruppenübergreifenden Treffen zur Absprache des Designs und der Schnittstellen teil. Projektbegleitend müssen die Ergebnisse in Vorträgen präsentiert werden.
Die Bewerbung für den Kurs erfolgt über Agnes. Agnes vergibt die begrenzten Plätze für das Semesterprojekt automatisch.
Am ersten Montag der Vorlesungszeit finden wegen des dies academicus keine Lehrveranstaltungen statt. Der Einführungstermin ist somit am Montag, den 22. Oktober 2018 von 13:00 bis 17:00 Uhr in RUD 25, 4.113. Hier werden das Semesterprojekt und der Product Backlog vorgestellt. Anschließend werden Scum Teams gebildet und der erste Sprint wird vorbereitet. Für die Teilnahme am Kurs ist die vollständige Anwesenheit an diesem ersten Termin erforderlich.
Voraussetzungen
Voraussetzung für den Besuch sind gute Kenntnisse in der Softwareentwicklung in einer Hochsprache (Java, C#, C++). Begeisterung für Brettspiele.
Struktur des Projekts
Das Semesterprojekt wird in zwei Meilensteine untergliedert.
- Meilenstein (Observer + Single-Player)
- Observer Modus: Grafische Prototypen (Unity), Spiellogik, Interfaces und Dummy-KI,
- Single-Player-Modus
- Optionale Features: Sound, Android-Client, etc.
- Meilenstein (KI-Wettbewerb)
- Wettbewerb mit KI-Spielern.
Zur Bearbeitung der Sprints werden drei Scrum-Teams aus je 5 Studierenden gebildet.
Die Betreuer übernehmen im Projekt die Rolle eines fiktiven Kunden (Product Owner), der eine Software in Auftrag gibt und vorgibt, wie das Endprodukt aussehen soll, aber nicht, wie man das am besten erreicht – das sollen die Studierenden im Projekt gemeinsam erarbeiten und umsetzen. Natürlich geben die Betreuer auch Hilfestellungen zu technischen Fragen und Schwierigkeiten durch.
Daily Scrums
Jedes Team trifft sich wöchentlich zu (mindestens) zwei Daily Scums:
- Alle: Montags zwischen 13-15 Uhr zum ersten Daily Scrum in RUD25, Raum 4.113
- Grün: Mittwochs ab 17 Uhr zum zweiten Daily Scrum in RUD25, Raum 4.113,
Trello Team Green - Rot: Donnerstags ab 13 Uhr zum zweiten Daily Scrum in RUD25, Raum 4.410
Trello Team Red - Schwarz: Donnerstags ab 17 Uhr zum zweiten Daily Scrum in RUD25, Raum 4.113
Trello Team Black - Blau: Freitags ab 11 Uhr zum zweiten Daily Scrum in RUD25, Raum 4.410
Trello Team Blue
Vorträge / Folien
- 22. Oktober 2018: Einführung Semesterprojekt
- 22. Oktober 2018: Links zu Game Development / Engines
- 22. Oktober 2018: Einführung Scrum
- 29. Oktober 2018: Versionierung und Bugtracking mit GitHub
- 29. Oktober 2018: Server Protokoll v0.9, 2-Spieler Log-Datei und 5-Spieler Log-Datei (updated: 10.12.)
- 05. November 2018: Unit Tests und Continuous Integration
- 12. November 2018: Ticket to Ride: Concepts in Graph Theory
- 12. November 2018: Introduction to Coding Conventions
- 19. November 2018: Server Protokoll: Receive and Send
- 19. November 2018: Beschreibung des Client-Server-Protokolls
- 26. November 2018: Sprint Demo & Retrospective
- 03. Dezember 2018: Einführung Spiele-KI
- 10. Dezember 2018: 3nd Review
- 17. Dezember 2018: First Milestone Review
- 07. Januar 2019: Second Milestone Kickoff
- 07. Januar 2019: Gastvortrag: Reinforcement Learning
- 14. Januar 2019: Steiner Tree 2-Approximation Algorithms
- 21. Januar 2019: 2nd AI-Challenge
- 28. Januar 2019: 3rd AI-Challenge
- 04. Februar 2019: 4th AI-Challenge
- 11. Februar 2019: Finale
TTR-Server
Implementierung des Ticket-To-Ride Servers.- Server: TTR-Server v1.0
(start mit: java -jar ttr-server-1.0.jar {players}) (updated: 12.02.19 Better Debugging (always write last log file, log requests) - 2-Spieler Log-Datei (updated: 11.12. Stronger KI-Players)
- 3-Spieler Log-Datei (updated: 11.12. Stronger KI-Players)
- 4-Spieler Log-Datei (updated: 11.12. Stronger KI-Players)
- 5-Spieler Log-Datei (updated: 11.12. Stronger KI-Players)
- Command-Line-Client: TTR-Client v0.9
(start mit: java -jar ttr-client-0.9.jar) - Beschreibung des Client-Server-Protokolls v0.9
TTR-Client (C# / Unity)
Eine einfache Bibliothek die zur Kommunikation mit dem TTR-Server genutzt werden kann. Client-Server Kommunikation und JSON Parsen werden automatisch gehandhabt.Alle KIs des Semesterprojekts, die Benchmark-KI und Skript zum Starten
- Alle KIs (Red, Green, Black, Green, HU-KI) und die Implementierung der Benchmark KI: Benchmark
TTR-GUI
Support erfolgt direkt durch Team Black.- Windows: Link.
- Mac OS X: Link.
Nach dem Download muss noch chmod +x TicketToRide.app/Contents/MacOS/TicketToRide ausgeführt werden, um die App ausführbar zu machen. - Übersicht der wichtigsten Tastenkombinationen: Anleitung
Termine im ersten Meilenstein:
43 KW: 22.10. | Vorbereitend | Backlog Grooming, pro Scrum Team: Wahl einer Spiele-Engine und Technical Refinement |
44 KW: 29.10. | Erster Sprint | Sprint Planning |
45 KW: 05.11. | Vorbereitend | Backlog Grooming und Technical Refinement |
46 KW: 12.11. | Zweiter Sprint | Demo und Sprint Planning |
47 KW: 19.11. | Vorbereitend | Backlog Grooming und Technical Refinement |
48 KW: 26.11. | Dritter Sprint | Demo und Sprint Planning |
49 KW: 03.12. | Vorbereitend | Backlog Grooming und Technical Refinement |
51 KW: 17.12. | Ende 1. Meilenstein | Präsentation & Wahl der Sieger-Engine |
Begleitprogramm
Das Projekt wird durch begleitende Vorträge ergänzt. Geplant sind Kurzvorlesungen unter Anderem zu den folgenden Themen:- Versionierung und Bugtracking mit GitHub
- Agile Softwareentwicklung mit Scrum
- Kurzer Überblick zu Spieleentwicklung & Game Engines
- Einführung zu künstlicher Intelligenz in Spielen
- Coding Guidelines / Best Practices
- Software-Tests
Weiterführende Links
- Planning Poker App (Android)
- Git Einstieg
- Trello und GitHub
- Scrum Einführung: What is Scrum?
- Scrum Handout Einstieg
- Scrum Primer (englisch) (deutsch)
- Spielregeln (englisch) (deutsch)
- Coding Guidelines: C# | Java Google | Java Twitter Language Guide (proto3)