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. Die wichtigste spezielle Nachricht ist die Empfangsbestätigung.

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.

Nummer

Jede normale Nachricht wird mit einer (fortlaufenden) Nummer versehen. Diese wird genutzt, um die Nachrichten in der richtigen Reihenfolge abzuarbeiten und um den Verlust von Nachrichten zu bemerken.

Statt einer Nummer kann auch - verwendet werden, dann wird die Nachricht sofort ausgewertet.

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 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. Darauf folgt die laufende Nummer, gefolgt von einem Doppelpunkt. Dahinter folgt der Nachrichteninhalt.

Beispiel: 12345.67: 12: Name: Diether

Zeit

Der Syntax der Zeit ist Sekunden.Milisekunden oder -.

Beispiel: 12345.67

Nummer

Die Nummer ist eine ganze positive Zahl oder -.

Beispiel: 12

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.

spezielle Nachrichten

received: $Nummer
Rückmeldung, daß die (normale) Nachricht mit der Nummer $Nummer empfangen wurde.
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

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.

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

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
Frage nach Vorbehalt
Vorbehalt
Spieltyp (+ Solospieler, ...)
gespielte Karten
Frage nach zu spielender Karte
zu spielende Karte
schließe Stich
Ansage
Ansage
Spielende
Turnierende
Verbindungsabbruch