= FreeDoko Netzwerkprotokoll
Diether Knof <dknof@posteo.de>


== Struktur

Ein FreeDoko-Programm agiert als Server, er ist der Elter. Andere FreeDoko-Programme können sich als Client mit dem Server verbinden, dies sind die Kinder.

=== Server
Das Server verwaltet das Spiel (zum Beispiel die Regeln) und alle Spieler, bis auf den einem Client zugewiesenen.

=== Client
Ein Client erhält alle Informationen über das Spiel (zum Beispiel die Regeln) vom Server. Es erhält vom Server einen Spieler zugewiesen zum selber steuern, alle anderen Spieler werden vom Server gesteuert.

== Syntax
* Schlüsselwort: Wert
Beispiel: name: Mara

=== Allgemein
* ping
Soll von pong beantwortet werden
* pong
Antwort auf ping
* ping: Nummer
Soll von pong: Nummer beantwortet werden
* pong: Nummer
Antwort von ping: Nummer
* chat: text
Text wird übermittelt
* name: Text
Der Name für die Verbindung (Name des Spielers aus den Einstellungen)

=== Nur Server
* local player: Nummer
Der Client verwaltet den angegeben Spieler.
* player: name = Name
Der Name des Spielers
* players switched: Nummer1 Nummer2
Die beiden Spieler haben ihren Platz getauscht

==== Turnier
* rules
Die Regeln (als Block dahinter)
* rule: Regel = Wert
Eine einzelne Regel
* party: seed: Nummer
Startwert des Turniers
* party: startplayer: Nummer
Startspieler für das Turnier
* party: start
Das Turnier startet
* party: start round
Eine neue Runde beginnt im Turnier
* party: finish
Das Turnier wird beendet

==== Spiel
* gameplay action: Aktion
Spielaktion
* game: open
Das Spiel öffnet
* game: startplayer: Nummer
Startspieler des Spiels
* game: seed: Nummer
Startwert des Spiels
* game: hand Spielernummer: Karte, Karte, …
Das Blatt für den Spieler. 
* game: start
Das Spiel startet
* game: finish
Das Spiel endet
* sync: gameplay actions
Alle Spielaktionen werden erneut versendet, zum synchronisieren des Spiels.


== Protokoll

=== Verbindungsaufbau

* Server: FreeDoko server
* alle: Namen
* Server: player local: [Nummer]



// vim: filetype=asciidoc
