FreeDoko Netzwerkprotokoll

Nachrichttypen

FreeDoko kennt drei Arten von Nachrichten:

einfache Nachrichten

Einfache Nachrichten werden nur für die Verbindung genutzt.

spezielle Nachrichten

Spezielle Nachrichten sind Nachrichten, die nichts mit dem Spiel an sich zu tun haben. Sie sind Hilfsmittel für die Kommunikation.

normale Nachrichten

Alle Nachrichten die den Spielverlauf betreffen sind normale Nachrichten. Auch die Nachrichten zum Chatten fallen unter die normalen Nachrichten.

Zeit

Die Zeit gibt an, zu welchem Zeitpunkt (bzgl. des absendenden Rechners) die Nachricht losgeschickt wurde. Sie kann z.B. verwendet werden, um die Rechner zu synchronisieren. Die Zeit wird bei jeder speziellen und normalen Nachricht mit übertragen.

Statt einer Zeit kann auch - verwendet werden, dann wird die Zeit ignoriert.

Syntax

Eine Nachricht von FreeDoko besteht immer aus eine Zeile, d.h. sie endet mit einem Zeilenendezeichen (\n).

einfache Nachrichten

Eine einfache Nachricht besteht nur aus Text. Das erste Zeichen darf weder eine Ziffer noch ein Minuszeichen sein.

Beispiel: FreeDoko server

spezielle Nachrichten

Eine spezielle Nachricht beginnt mit einem Stern, gefolgt von der Zeit, gefolgt von einem Doppelpunkt. Dahinter folgt der Nachrichteninhalt.

Beispiel: *12345.67: ping: 10

normale Nachrichten

Eine spezielle Nachricht beginnt mit der Zeit, gefolgt von einem Doppelpunkt. Dahinter folgt der Nachrichteninhalt.

Beispiel: 12345.67: Name: Diether

Zeit

Der Syntax der Zeit ist Sekunden.Milisekunden oder -.

Beispiel: 12345.67

Nachrichten

einfache Nachrichten

FreeDoko server
Diese Nachricht wird beim Aufbei einer Verbindung vom Server gesendet. Daran kann erkannt werden, daß es eine Verbindung zu einem FreeDoko-Server ist.
bye
Diese Verbindung wird geschlossen.
ping
Wie bei spezielle Nachrichten.

spezielle Nachrichten

ping
Mit pong antworten. Damit kann z.B. die Verbindung getestet werden
pong
Anwort auf ein ping
ping: $Nummer
Wie ping, hier wird zusätzlich eine Nummer mitgegeben um mehrere pings unterscheiden zu können.
pong: $Nummer
Antwort auf ping: $Nummer.

normale Nachrichten

Die normalen Nachrichten steuern den Spielverlauf. Daher werde diese nicht jederzeit akzeptiert. Außerdem gibt es noch die Unterscheidung zwischen Elter und Kind-Nachrichten.

jederzeit

name: $Name
Der Name der Verbindung (der Spielername)
chat: $Text
Chatten von $Text
ask: $Frage
Fragt nach $Frage (z.B. name)
Erlaubte Fragen:

Turniereinstellung

Nachrichten, die vor dem Start des Turniers gesendet werden:

player $Nummer: $Einstellung
Für den Spieler $Nummer wird eine der folgenden Einstellungen getätigt:
type = $Typ
Gibt an, wer für die Spieleraktionen zuständig ist. $Typ kann folgende Werte annehmen:
network
Der Elter kümmert sich um den Spieler.
local
Das Kind kümmert sich um den Spieler. Normalerweise hat jedes Kind nur einen Spieler, um den es sich kümmert.
name = $Name
Der Spieler hat den Namen $Name
players switch: $1 $2
Die beiden Spieler $1 und $2 werden vertauscht, dabei sind '$1' und '$2' Zahlen zwischen 0 und 3.
rules
Als nächstes werden die Regeln in einem Block ({ ... }) übertragen. Bis der Block beendet wird bestehen die Nachrichten nur aus $Typ = $Wert.
rule: $Typ = $Wert
Die Regel $Typ wird auf $Wert gesetzt
Beispiel: rule: with nines = false
party: seed: $Wert
Der Startwert ist $Wert.
Beispiel: party: seed: 3
party: startplayer: $Wert
Der Startspieler ist $Wert.
Beispiel: party: startplayer: 0

Turnier

Nachrichten, die während eines Turniers gesendet werden:

party start
Das Turnier startet.
party start round: $Runde
Die Runde $Runde des Turniers startet.
party finish
Das Turnier endet.

Spiel

Nachrichten, die während eines Spiels gesendet werden:

gameplay action
Eine Spielaktion (wie Vorbehalt und gespielte Karte).
game: start
Das Spiel startet.
game: finish
Das Spiel endet.
game: startplayer: $Startspieler
Der Startspieler vom Spiel ist $Startspieler.
game: seed: $Startwert
Der Startwert vom Spiel ist $Startwert.
game: hand $Spieler: $Blatt
Spieler $Spieler hat das Blatt $Blatt.

Wer darf was?

Elter Kind Nachricht
E K name
E K chat
E K ask
E player $Nummer: type
E K player $Nummer: name
E players switch
E rules
E rule
E party start
E party start round
E party finish
E K gameplay action
E game: start
E game: finish
E game: close
E game: startplayer
E game: seed
E game: hand $Player

Kommunikation

Nachfolgend ist eine beispielhafte Übersicht über die Kommunikation zwischen dem Elter und dem Kind.

Elter Kind
Servertypinformation
Name
Name
Regeln
Spielernummer
Regeländerung
starte Turnier
starte Spiel
verteile Karten
Vorbehalte
Vorbehalt
Spieltyp (+ Solospieler, ...)
gespielte Karten
gespielte Karte
schließe Stich
Ansage
Ansage
Spielende
Turnierende
Verbindungsabbruch Verbindungsabbruch

offizielle Internetseite