Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
ef_informatik:game-server_block [2021-08-31 07:31] – [3.2 Technische Vorgaben] hof | ef_informatik:game-server_block [2021-10-05 13:41] (aktuell) – [Rundenbasierter Gameserver mit REST-API] hof | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Rundenbasierter Gameserver mit REST-API ====== | ====== Rundenbasierter Gameserver mit REST-API ====== | ||
- | ===== - Organisation ===== | + | Die ganze Dokumentation findet sich mittlerweile auf https:// |
+ | ===== - Organisation | ||
- | Alle Talenta/EF Schüler: | + | Alle Talenta/EF Schüler: |
- | + | ||
- | ===== - Ablauf ===== | + | |
Die Umsetzung folgt der Entwicklung in einer Software-Firma: | Die Umsetzung folgt der Entwicklung in einer Software-Firma: | ||
Zeile 13: | Zeile 12: | ||
* Einreichung des Proposals inkl. Komponentenplanung und Zeitplan | * Einreichung des Proposals inkl. Komponentenplanung und Zeitplan | ||
- Implementierungsphase (5w) | - Implementierungsphase (5w) | ||
- | * Umsetzung | + | * Umsetzung |
- | * Alle Artefakte werden in Github abgelegt. | + | * Alle Artefakte werden in Github abgelegt: |
- | * Nach jeder Woche erwartet die Auftraggeberin einen kurzen Report mit folgendem Inhalt: | + | * Quellcode |
+ | * Dokumentation (als Markdown) | ||
+ | * Issues (Implementierungseinheiten) | ||
+ | * Milestones (jede Woche einer) | ||
+ | * Nach jeder Woche erwartet die Auftraggeberin einen kurzen | ||
* Projektfortschritt | * Projektfortschritt | ||
* Ist vs. Soll: Wo steht das Projekt im Vergleich zum Zeitplan? | * Ist vs. Soll: Wo steht das Projekt im Vergleich zum Zeitplan? | ||
Zeile 30: | Zeile 33: | ||
===== - Requirements ===== | ===== - Requirements ===== | ||
- | Es wird ein Game-Server | + | JungleState möchte einen Game-Server |
==== - Spielbeschrieb ==== | ==== - Spielbeschrieb ==== | ||
Zeile 46: | Zeile 49: | ||
Jeder Affe erhält zu Beginn der Runde seinen einsehbaren Teilbereich des Urwalds. Dieser beträgt typischerweise 5x5 Felder um die Position des Affen. Der Affe entscheidet sich für eine Aktion, entweder '' | Jeder Affe erhält zu Beginn der Runde seinen einsehbaren Teilbereich des Urwalds. Dieser beträgt typischerweise 5x5 Felder um die Position des Affen. Der Affe entscheidet sich für eine Aktion, entweder '' | ||
- | Wird ein Affe von einer Kokosnuss getroffen, wird seine Lebensenergie um eine bestimmte Menge verringert. Fällt die Lebensenergie eines Affen auf null, fällt er ohnmächtig vom Ast und scheidet aus((Selbstverständlich erwachen alle ohnmächtige Affen nach dem Spielende ohne bleibende Schäden zu erleiden. Bei der Entwicklung dieses Spiels | + | Wird ein Affe von einer Kokosnuss getroffen, wird seine Lebensenergie um eine bestimmte Menge verringert. Fällt die Lebensenergie eines Affen auf null, fällt er ohnmächtig vom Ast und scheidet aus((Selbstverständlich erwachen alle ohnmächtige Affen nach dem Spielende ohne bleibende Schäden zu erleiden. Bei der Entwicklung dieses Spiels |
Kollidieren zwei Affen oder ein Affe und der Dickicht, verringert sich die Lebensenergie ebenfalls, die Affen bleiben auf ihrem Feld stehen. | Kollidieren zwei Affen oder ein Affe und der Dickicht, verringert sich die Lebensenergie ebenfalls, die Affen bleiben auf ihrem Feld stehen. | ||
Zeile 67: | Zeile 70: | ||
=== - Server === | === - Server === | ||
- | Der Server wird als [[https:// | + | Der Server wird als [[https:// |
- | * Die Abfrage des Spielzustands soll mittels Long-Polling (ev. [[https:// | + | * Die Abfrage des Spielzustands soll mittels Long-Polling (ev. [[https:// |
* Der Server unterstützt zusätzlich zum Client-Zugang über einen privilegierten Zugang, um das gesamte Spielfeld zu visualisieren. | * Der Server unterstützt zusätzlich zum Client-Zugang über einen privilegierten Zugang, um das gesamte Spielfeld zu visualisieren. | ||
* Es werden verschiedene Spielfelder unterstützt (default, Testumgebung, | * Es werden verschiedene Spielfelder unterstützt (default, Testumgebung, | ||
* Ein Spiel soll von bis zu 50 Clients gleichzeitig gespielt werden können. | * Ein Spiel soll von bis zu 50 Clients gleichzeitig gespielt werden können. | ||
+ | * Clients, die zulange mit der Antwort zuwarten, werden aus dem Spiel ausgeschlossen. | ||
=== - Client === | === - Client === | ||
Clients greifen ausschliesslich über das REST-API auf ein Spiel zu. Zum Lieferumfang gehören: | Clients greifen ausschliesslich über das REST-API auf ein Spiel zu. Zum Lieferumfang gehören: | ||
* Ein Beispiel-Client auf C#-Basis, der einen einfachen Affen-Agenten implementiert (z.B. einer, der jede zweite Runde in einer zufälligen Richtung geht und auf alles in der Umgebung schiesst). | * Ein Beispiel-Client auf C#-Basis, der einen einfachen Affen-Agenten implementiert (z.B. einer, der jede zweite Runde in einer zufälligen Richtung geht und auf alles in der Umgebung schiesst). | ||
- | * Ein Konsolen- oder Web-Client-Programm, | + | * Ein Konsolen- oder Web-Client-Programm |
* Die Steuerung soll über Tastatureingabe erfolgen. | * Die Steuerung soll über Tastatureingabe erfolgen. | ||
* Eine Visualisierung als Web-App, die das gesamte Spielfeld abbildet, um Spiele live verfolgen zu können. | * Eine Visualisierung als Web-App, die das gesamte Spielfeld abbildet, um Spiele live verfolgen zu können. | ||
- | * Die App soll den Namen //Dschungelcamp// tragen. | + | * Die App soll den Namen //Jungle Camp// tragen. |
- | === - Proposal === | + | ===== - Proposal |
- | Die Gruppe erarbeitet ein Proposal um die obigen Requirements umzusetzen. Das Proposal beinhaltet die folgende Angaben: | + | Die Gruppe erarbeitet ein Proposal um die obigen Requirements umzusetzen. Das Proposal beinhaltet die folgenden zwei Teile: |
- | * Design: | + | === Design |
- | * Technologie-Stack auf Server | + | Das Design wird als Markdown-Dokument auf Github gestellt. Es beinhaltet: |
- | * Vorgeschlagene Technologie / Plattform | + | * Aufteilung des Systems in **Komponenten**: |
+ | * Server: Spiel-Management, | ||
+ | * Client: | ||
+ | * Visualisierung: | ||
* Diagramm der Hauptbestandteile | * Diagramm der Hauptbestandteile | ||
- | * ev. Abwägung von verschiedenen Möglichkeiten. | ||
* zu implementierende REST-Endpunkte mit folgenden Angaben: | * zu implementierende REST-Endpunkte mit folgenden Angaben: | ||
* Ressourcenname mit allen Parametern (z.B. ''/ | * Ressourcenname mit allen Parametern (z.B. ''/ | ||
Zeile 94: | Zeile 100: | ||
* Rückgabe-Wert und Format (meist JSON) | * Rückgabe-Wert und Format (meist JSON) | ||
* Schnittstellenbeschreibung zwischen Komponenten (z.B. JSON-Format). | * Schnittstellenbeschreibung zwischen Komponenten (z.B. JSON-Format). | ||
- | * Komponentenaufteilung: | + | |
- | * Wie lässt sich das System in Komponenten aufteilen? | + | * Vorgeschlagene Technologie / Plattform |
- | | + | * ev. Abwägung von verschiedenen Möglichkeiten. |
- | * Client: Beispiel-Client, | + | === Ausführungsplan === |
- | * Visualisierung: | + | Die Umsetzung |
- | * Wie lässt sich die Umsetzung | + | |
- | * Git Repo einrichten und Projekt-Layout definieren. | + | Gibt es Abhängigkeiten zwischen den Tasks? Wie gross sind die Tasks (1, 2, 3, 5 Stunden)? |
- | * JSON-Schnittstelle für ein Game definieren. | + | |
- | * Game-Logik in Python implementieren. | + | Beispiel-Tasks: |
- | * Einfache Game-Verwaltung mit Sessions implementieren. | + | * Git Repo einrichten und Projekt-Layout definieren. |
- | * ... | + | * JSON-Schnittstelle für ein Game definieren. |
- | * Gibt es Abhängigkeiten zwischen den Tasks? | + | * Game-Logik in Python implementieren. |
- | * Wie gross sind die Tasks (1, 2, 3, 5 Stunden)? | + | * Einfache Game-Verwaltung mit Sessions implementieren. |
+ | * ... | ||
Zeile 116: | Zeile 124: | ||
* ML-Schnittstelle: | * ML-Schnittstelle: | ||
* Randomisierung: | * Randomisierung: | ||
+ | * [[https:// |