Server Kommunikation $Revision: 1.16 $

 

Syntax:

            <...> Variable

            [...] Optionale Felder

            {a|b|c|...} Entweder a oder b oder c oder ...

            Alles andere sind Terminalzeichen

 

Das was jetzt dasteht wird gesendet bzw. empfangen. Mit Ausnahme der Fehler

Anmeldung:

Spielerzeugung:

Zu Senden:

            NEU <Spieler Anzahl>

            NAME <Spielname>

            PASSWD <Passwort>

            TIMEOUT <Timeout in Millisekunden>

Bestätigung:

            SPIEL_ANGEMELDET(Disconnect)

Fehler:

            FEHLER_NAME_VERGEBEN(Disconnect)

 

Spielauflistung:

Zu Senden:

            LIST

Bestätigung:

            LISTE <anzahlSpiele>

<Name> <Angemeldete Spieler> <Spieleranzahl> {WARTET|GESTARTET|BEENDET}

<Name> <Angemeldete Spieler> <Spieleranzahl> {WARTET|GESTARTET|BEENDET}

...

ENDE

(Disconnect)

Fehler:

            Keine(Disconnect)

 

Spielteilnahme:

Zu Senden:

            JOIN <Spielname>

            PASSWD <Passwort>

            NAME <Spielername>

            ALTER <Alter>

Bestätigung (an Alle):

SPIELER_ANGEMELDET <Spielername> <Alter>

Fehler:

FEHLER_NAME_VERGEBEN(Disconnect)


Spielzuschauen:

Zu Senden:

            WATCH <Spielname>

            NAME <Zuschauername>

Bestätigung (an Alle):

ZUSCHAUER_ANGEMELDET <Zuschauername>

Fehler:

Keine (Disconnect)

Zuschauer meldet sich ab (oder ist einfach weg):

Wenn ein Zuschauer sich abmeldet oder dessen Netzwerkverbindung weg ist, bekommen alle Spieler und Zuschauer diese Nachricht.

Gesendet:

ZUSCHAUER_ABGEMELDET <Zuschauername>

Netzgeschwindigkeit testen:

Zu Senden:

            PING

Bestätigung:

PONG

Fehler:

Keine (Disconnect)

Spielstatus erfragen:

Zu Senden:

            STATUS <Spielname>

Bestätigung:

Ein Statusbericht für das Spiel, siehe unten.

Fehler:

ERROR 1029: Es gibt kein Spiel mit diesem Namen. (Disconnect)

 

Vom Server kommende Nachrichten

Ersten Ritter setzen:

Beschreibung: Wird ganz am Anfang gesendet damit jeder Spieler seinen Ritter platziert

Gesendet:

RITTER_SETZEN

Reaktion:

            AKTION SETZE_RITTER_ERSTESMAL

            X <x>

            Y <y>

Bestätigung : Standard Aktionsbestätigung

Fehler: s.u.

König setzen:

Beschreibung: Wird vor jeder Phase einem Spieler gesendet

Gesendet:

KOENIG_SETZEN

Reaktion:

            AKTION SETZE_KOENIG

            FARBE <f>

            X <x>

            Y <y>

Bestätigung : Standard Aktionsbestätigung

Fehler: s.u.

Spieler <Spielerfarbe> erhält die Zugaufforderung:

Alle Spieler haben in dieser Runde ihre Züge abgegeben.

Gesendet:

ZUG_BEGINNT <Spielerfarbe>

Spieler <Spielerfarbe> beendet seinen Zug:

Alle Spieler haben in dieser Runde ihre Züge abgegeben.

Gesendet:

ZUG_BEENDET <Spielerfarbe>

Runde beendet:

Alle Spieler haben in dieser Runde ihre Züge abgegeben.

Gesendet:

RUNDE_BEENDET

Spiel beendet:

Das Spiel ist zu Ende.

Gesendet:

SPIEL_BEENDET

Zugabgabe:

Beschreibung: Sobald ein Spieler einen Zug abgeben soll bekommt er diese Nachricht. Für die Reaktion gilt: X ist horizontal, Y vertikal. Wie es eben üblich ist ...

 

Gesendet:

ZUG_ABGEBEN

Reaktion:

            ZUG

            AKTION <Aktion>

            [KARTE <Kartennummer>]                   -- Die komplette zweistellige Nummer

            [X <x1>                                       -- Wenn eine Positon benötigt wird

             Y <y1>   

            [X <x2>                                       -- Wenn eine zweite Position benötigt wird

             Y <y2>]]

            AKTION <Aktion>

            ....                                                        -- Weitere Aktionen

            ZUGENDE

 

Bestätigung :

            Standardaktionsbestätigung für jede einzelne Aktion, zusätzlich Bestätigung

            des Zugendes (siehe einzelne Aktionen für Details).

Fehler:

            Zugfehler (Siehe einzelne Aktionen)

FEHLER_NICHT_VORHANDEN              -- Die Aktion gibt es nicht

FEHLER_NICHT_AM_ZUG                     

            FEHLER_TIMEOUT_UEBERSCHRITTEN  -- kommt sobald  er abgelaufen ist

FEHLER_ZUG_UNMOEGLICH                   -- Wenn undefinierter Zugfehler auftritt

 

Aktionen die kommen und gehen

Syntax:

            Aktion(Aktionskarte,Spielerfarbe,x1,y1,x2,y2) entspricht:

            AKTION <aktuelle Aktion>

     KARTE <Aktionskarte>     -- komplette zweistellige Nummer

     FARBE <Spielerfarbe>

     X <x1>

     Y <y1>

     X <x2>

     Y <y2>

NEHME_PUNKT

Beschreibung: Verwende Aktionspunkt um den Punktestand zu erhöhen

Zu Senden: Aktion()

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe)

Fehler:

FEHLER_ZU_WENIG_AKTIONSPUNKTE

SETZE_RITTER

Beschreibung: Setze einen neuen Ritter ein

Zu Senden: Aktion(x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1);

Fehler:

FEHLER_ZU_WENIG_AKTIONSPUNKTE

FEHLER_ZU_HOCH

FEHLER_FIGUR_VORHANDEN

FEHLER_UNBENACHBART

SETZE_BAUSTEIN

Beschreibung: Setze einen Baustein ein

Zu Senden: Aktion(x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x,y);

Fehler:

FEHLER_ZU_WENIG_AKTIONSPUNKTE

FEHLER_HAT_ZUWENIG_BAUSTEINE

FEHLER_BURGEIGENSCHAFT_VERLETZT

FEHLER_BURG_NEUBAU

SETZE_KOENIG

Beschreibung: Versetze den König (nur nach Aufforderung)

Zu Senden: Aktion(x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x,y);

Fehler:

FEHLER_FIGUR_VORHANDEN

ZIEHE_RITTER

Beschreibung: Ziehe einen Ritter für einen Aktionspunkt

Zu Senden: Aktion(x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_ZU_WENIG_AKTIONSPUNKTE

FEHLER_ZU_HOCH

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

FEHLER_ZUG_NICHT_GERADEAUS

FEHLER_ZUG_ZU_LANG

FEHLER_ZUG_DURCH_BURG_UNMOEGLICH

ZIEHE_KARTE

Beschreibung: Ziehe eine Aktionskarte

Zu Senden: Aktion();

Extra Bestätigung: KARTE <Kartennummer>

Bestätigung an Alle: Aktion(Spielerfarbe);

Fehler:

FEHLER_ZU_WENIG_AKTIONSPUNKTE

FEHLER_KEINE_KARTE_VORHANDEN

FEHLER_NUR_ZWEI_KARTEN

VERSETZE_BAUSTEIN

Beschreibung: Versetze einen Baustein (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_BURGEIGENSCHAFT_VERLETZT

FEHLER_BURG_WIRD_GETRENNT

FEHLER_BURGEN_VERBUNDEN

FEHLER_BURG_NEUBAU

FEHLER_ZU_WENIG_BURGEN

ZIEHE_DIAGONAL

Beschreibung: Ziehe einen Ritter Diagonal (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_ZU_HOCH

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

FEHLER_ZUG_ZU_LANG

ZIEHE_DURCHTOR

Beschreibung: Ziehe in einer Burg auch aufwärts (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

FEHLER_ZUG_NICHT_GERADEAUS

FEHLER_ZUG_ZU_LANG

FEHLER_ZUG_DURCH_BURG_UNMOEGLICH

UNTERSCHIEBE_BAUSTEIN

Beschreibung: Setze einen Baustein unter einen Ritter (AK)

Zu Senden: Aktion(Karte,x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x,y);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_HAT_ZUWENIG_BAUSTEINE

FEHLER_ZUG_UNMOEGLICH

FEHLER_BURGEIGENSCHAFT_VERLETZT

VERSETZE_RITTER

Beschreibung: Versetze einen eigenen Ritter an eine andere Position (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

ZIEHE_ZWEIEBENEN

Beschreibung: Ziehe mit einem Ritter zwei Stufen nach oben (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_ZU_HOCH

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

FEHLER_ZUG_NICHT_GERADEAUS

FEHLER_ZUG_ZU_LANG

ZIEHE_UEBER_RITTER

Beschreibung: Springe mit einem Ritter über ein Feld auf dem sich ein anderer befindet (AK)

Zu Senden: Aktion(Karte,x1,y1,x2,y2);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x1,y1,x2,y2);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_ZU_HOCH

FEHLER_FIGUR_VORHANDEN

FEHLER_KEINE_FIGUR

FEHLER_ZUG_NICHT_GERADEAUS

FEHLER_ZUG_ZU_LANG

SETZE_BAUSTEIN_ALLGEMEIN

Beschreibung: Setze Baustein aus allgemeinen Vorrat (AK)

Zu Senden: Aktion(Karte,x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x,y);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

FEHLER_FIGUR_VORHANDEN

FEHLER_BURGEIGENSCHAFT_VERLETZT

FEHLER_BURG_NEUBAU

SETZE_RITTER_ERSTESMAL

Beschreibung: Erstemal den Ritter setzen (Nur nach Aufforderung bei Spielbeginn)

Zu Senden: Aktion(x,y);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe,x,y);

Fehler:

FEHLER_FIGUR_VORHANDEN

SECHS_AKTIONSPUNKTE

Beschreibung: Spiele die Karte die dir diese Runde Sechs Aktionspunkte gibt (AK)

Zu Senden: Aktion(Karte);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

SIEBEN_AKTIONSPUNKTE

Beschreibung: Spiele die Karte die dir diese Runde Sieben Aktionspunkte gibt (AK)

Zu Senden: Aktion(Karte);

Extra Bestätigung: Keine

Bestätigung an Alle: Aktion(Spielerfarbe);

Fehler:

FEHLER_HAT_AKTIONSKARTE_NICHT

Konstanten für Aktionskarten : 

KARTE_VERSETZE_BAUSTEIN = 0      

KARTE_ZIEHE_DIAGONAL = 1          

KARTE_UNTERSCHIEBE_BAUSTEIN = 2

KARTE_VERSETZE_RITTER = 3 

KARTE_ZIEHE_ZWEIEBENEN = 4

KARTE_ZIEHE_UEBER_RITTER = 5

KARTE_SETZE_BAUSTEIN_ALLGEMEIN = 6

KARTE_ZIEHE_DURCHTOR = 7         

KARTE_SECHS_AKTIONSPUNKTE = 8   

KARTE_SIEBEN_AKTIONSPUNKTE = 9   

 

Die Kartennummer bekommt dann noch die Farbe, so dass sich Nummern zwischen 0 und 39 ergeben.

Weitere Nachrichten:

Nachrichten:

Diese beschreiben beliebige Textnachrichten zum Chatten, aber auch damit der Server gewisse Informationen verbreiten kann, wie zum Beispiel die Anmeldung eines neuen Spielers oder ähnliches.

Zu Senden:

            NACHRICHT <Text>

Bestätigung an Alle:

            NACHRICHT <Spielerfarbe> <Text>

Fehler: Keine

Netzgeschwindigkeit testen:

Zu Senden:

            PING

Bestätigung:

PONG

Fehler:

Keine (Disconnect)

Statusabfrage:

Dient dazu den aktuellen Spielstatus zu erfahren.

Zu senden:

STATUS

Bestätigung:

            STATUS <Spielname> {WARTET|GESTARTET|BEENDET}

            PHASE <aktuelle Phase>

            RUNDE <aktuelle Runde>

            ZUG <aktueller Zug>

            ACTIVE <Spielername der am Zug ist>

            TIMEOUT <Länge des Timeouts>

SPIELER <Anzahl Mitspieler>

<Spielernummer> <Spielername> <Spielerpunkte> <Spieleralter> <Burgen für Zug>

<Spielernummer> <Spielername> <Spielerpunkte> <Spieleralter> <Burgen für Zug>

...

ZUSCHAUER

            <ZuschauerName>

            ...

            STATUSENDE

Fehler: Keine  

Spielplanabfrage:

Dient dazu das aktuelle Spielfeld anzuzeigen.

Zu Senden:

            PLAN

Bestätigung:

Die inneren Zahlen stehen für die Höhe, steht daneben ein Buchstabe, dann sagt dieser aus, was für ein Ritter (Orange,Blau,...) oder König draufsteht.

PLAN <Breite der quadratischen Matrix>

   0   1   2   3   4   5   6   7  

0  0   0   0   0   1   0   0   0  

1  0   0   1K  0   0   0   0   0  

2  0   0   1B  0   0   1O  1   0  

3  1O  0   0   0   0   1   0   0  

4  0   0   0   0   0   0   0   1  

5  0   0   1   0   0   1   0   0  

6  0   0   0   0   0   0   0   0  

7  0   0   0   1   0   0   0   0   

PLANENDE

 

Fehler: FEHLER_SPIEL_LAEUFT_NICHT

Konstanten für Fehler: 

FEHLER_ZU_WENIG_AKTIONSPUNKTE

1000

FEHLER_HAT_AKTIONSKARTE_NICHT

1001

FEHLER_HAT_ZUWENIG_BAUSTEINE

1002

FEHLER_ZUG_UNMOEGLICH

1003

FEHLER_NICHT_IMPLEMENTIERT

1004

FEHLER_ZU_HOCH

1005

FEHLER_FIGUR_VORHANDEN

1006

FEHLER_UNBENACHBART

1007

FEHLER_KEINE_FIGUR

1008

FEHLER_BURGEIGENSCHAFT_VERLETZT

1009

FEHLER_ZUG_NICHT_GERADEAUS

1010

FEHLER_ZUG_ZU_LANG

1011

FEHLER_BURG_WIRD_GETRENNT

1012

FEHLER_BURG_NEUBAU

1013

FEHLER_ZU_WENIG_BURGEN

1014

FEHLER_KEINE_KARTE_VORHANDEN

1015

FEHLER_NICHT_AM_ZUG

1016

FEHLER_NUR_ZWEI_KARTEN

1017

FEHLER_ZUG_DURCH_BURG_UNMOEGLICH

1018

FEHLER_NICHT_VORHANDEN

1019

FEHLER_NAME_VERGEBEN

1020

FEHLER_TIMEOUT_UEBERSCHRITTEN

1021

FEHLER_UNGUELTIGE_NACHRICHT

1022

FEHLER_ANZAHL_SPIELER

1023

FEHLER_IN_ANMELDUNG

1024

FEHLER_HAT_KEINE_RITTER_MEHR

1025

FEHLER_SPIEL_LAEUFT_NICHT

1026

FEHLER_KARTE_SCHON_GESPIELT

1027

FEHLER_MAX_SPIELANZAHL_ERREICHT

1028

FEHLER_SPIEL_NICHT_VORHANDEN

1029

FEHLER_FALSCHES_PASSWORT

1030

FEHLER_KARTE_PASST_NICHT

1031

FEHLER_BURGEN_VERBUNDEN

1032