Category Archives: SS13

Software Engineering I, SS13

Liebe SE 1 Teilnehmer,

es ist geschafft. Seit letzter Woche ist nun die Veranstaltung offiziell beendet, doch wie jedes Jahr wollen wir alle natürlich sehen, was nach 16 Wochen Entwicklungszeit bei unserem Projekt herausgekommen ist. Der Termin für unser Abschlussturnier steht fest:

SE 1 Abschlussturnier am Freitag den 13.09.2013, 13 Uhr, Labor des Fachgebiets Software Engineering

Sofern wir wie jedes Jahr einen Sponsor finden, wird es ein paar Getränke sowie einen kleinen Hauptpreis für die Sieger geben.

Bis dann,
Andreas

Software Engineering I, SS13

Da das erfolgreiche Ausspielen einer Fortschrittskarte nicht ganz trivial ist, wird in diesem Beitrag exemplarisch das Ausspielen der Fortschrittskarte “Handelshafen” vorgestellt. Das erste Szenario veranschaulicht den erfolgreichen Austausch zweier Rohstoffkarten durch 2 Handelswaren. Das zweite Szenario beschreibt einen möglichen Fehlerfall.

Hinweis: Natürlich gibt es noch eine ganze Reihe anderer Fehlerfälle, die sich jedoch analog zu dem unten dargestellten verhalten.

Szenario: Zenobios spielt die Fortschrittskarte “Handelshafen” aus und tauscht 2 Getreide gegen 2 Handelswaren.

Startsituation:

Zenobios, Bob und Charly spielen Siedler von Catan. Die momentanen Karten der jeweiligen Spieler sind:

  • Zenobios: Fortschrittskarte “Handelshafen” (Commercial Harbor), 2 Getreide
  • Bob: 1 Münze, 1 Tuch
  • Charly: 2 Holz, 1 Papier

Aktion:

Zenobios spielt seine Fortschrittskarte “Handelshafen” aus. Dazu schickt er folgenden Befehl an den Server:

{"@action":"PLAY","properties":{"entry":{"key":"id","value":"ProgressCard@473d86b3"}}}

Der Server antwortet (sofern keine Fehler auftreten) mit:

{"@ts":"1374831612034","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - offer(card,user)"}

In der Nachricht fordert der Server den Spieler nun auf, einen OFFER Befehl zu schicken, der einem anderen Spieler eine Rohstoffkarte anbietet. Zenobios schickt folgenden Befehl an den Server, um Charly ein Getreide anzubieten und bekommt vom Server (sofern keine Fehler auftreten) eine OK Meldung:

  1. {"@action":"OFFER","properties":{"entry":[{"key":"user","value":"UserAssets@551a1599"},{"key":"id","value":"Card@4051eda3"}]}}
  2. {"@ts":"1374831958351","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - offer(card,user)"}

Charly bekommt vom Server nun die Nachrichten, dass ihm Zenobios eine Rohstoffkarte vom Typ Getreide (GRAIN) angeboten hat sowie die Aufforderung, eine Handelsware auszuwählen:

  1. {"@ts":"1374831799175","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - User zenobios offered you a card of type GRAIN. Choose one of your commodity cards for exchange."}
  2. {“@ts”:”1374831799176″,”@src”:”SERVER”,”@prop”:”USER_MESSAGE”,”@nv”:”OK – choose(commodityCard)”}

Charly wählt als Handelsware Papier aus und schickt daher folgende Nachricht an den Server, die mit einem OK bestätigt wird (sofern keine Fehler auftreten):

  1. {"@action":"CHOOSE","properties":{"entry":{"key":"id","value":"Card@71f20640"}}}
  2. {"@ts":"1374833919934","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - CHOOSE"}

Analog verhält sich der Kartenaustausch mit Bob. Nachdem der Kartentausch mit Bob abgeschlossen ist, schickt der Server dem Spieler Zenobios die folgende Nachricht:

{"@ts":"1374832550656","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - yourTurn"}

Endsituation:

Die momentanen Karten der jeweiligen Spieler sind:

  • Zenobios: 1 Münze, 1 Papier
  • Bob: 1 Getreide, 1 Tuch
  • Charly: 2 Holz, 1 Getreide

Zenobios kann seinen Zug nun normal fortsetzen.

Szenario: Zenobios spielt die Fortschrittskarte “Handelshafen” aus. Kein anderer Spieler besitzt Handelswaren.

Startsituation:

Zenobios, Bob und Charly spielen Siedler von Catan. Die momentanen Karten der jeweiligen Spieler sind:

  • Zenobios: Fortschrittskarte “Handelshafen” (Commercial Harbor), 3 Getreide
  • Bob: 3 Getreide
  • Charly: Keine Karten

Aktion:

Zenobios spielt seine Fortschrittskarte “Handelshafen” aus. Dazu schickt er folgenden Befehl an den Server:

{"@action":"PLAY","properties":{"entry":{"key":"id","value":"ProgressCard@435a0940"}}}

Da kein anderer Spieler eine Handelsware besitzt, antwortet der Server mit:

  1. {"@ts":"1374832550637","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"ERROR: PLAY - Sorry, but there is no player who has a commodity card."}
  2. {"@ts":"1374832550656","@src":"SERVER","@prop":"USER_MESSAGE","@nv":"OK - yourTurn"}

Endsituation:

Die momentanen Karten der jeweiligen Spieler sind:

  • Zenobios: 3 Getreide
  • Bob: 3 Getreide
  • Charly: Keine Karten
Software Engineering I, SS13

Liebe SE 1 Teilnehmer,

seit kurzem ist Version 1.2.1 des SE 1 Servers online. Alle zum Spiel gehörenden Features wurden nun freigeschaltet und können von euch getestet werden. Dies betrifft im Besonderen die Fortschrittskarten. Damit ihr besser testen könnt, wird dem Spieler der einem testgame Spiel beitritt, jeweils eine Karte von jedem Typ  ausgeteilt.

Viel Spaß,
Andreas

Software Engineering I, SS13

Da es offenbar einige Missverständnisse gab, was den Ablauf der Release Präsentation angeht, hier nochmal klar die wichtigsten Eckdaten.

  • Die Präsentation ist gemeinsam von PO und SM zu halten. Gemeinsam bedeutet: Beide erscheinen zum mit dem Kunden ausgemachten Termin und befinden sich die komplette Vortragsphase im Vortragsraum.
  • PO und SM bereiten jeweils einen 10 minütigen Talk vor. Natürlich darf ein gemeinsamer Foliensatz verwendet werden, es kommt lediglich darauf an, dass sowohl PO als auch SM in Summe die 10 Minutenmarke möglichst genau treffen. Es ist dabei unerheblich, ob zuerst der SM/PO komplett vorträgt und dann der jeweils andere oder ob es häufigere Wechsel des Vortragenden gibt.

Bitte fragt die jeweiligen PO/SMs aus den vorangegangenen Releases, wie deren Präsentation lief. So können viele Missverständnisse schon im Vorfeld aus dem Weg geräumt werden.Beitragsbild festlegen

Software Engineering I, SS13

Zur Zeit werden auf dem Server folgende Validierungen für Maps durchgeführt:

  • Mindestens 18 Land-Felder
  • Felder müssen jeweils über die korrekten Himmelsrichtungen miteinander verbunden sein.
    • Bsp: Wenn Feld 1 über S mit Feld 2 verbunden ist, muss Feld 2 über N mit Feld 1 verbunden sein
  • Die Felder BARBARIAN_START und BARBARIAN_END müssen vorhanden und korrekt über eine N->S-Verbindung miteinander verbunden sein
  • Es muss mindestens eine Wüste geben
  • Eine Wüste darf nicht direkt neben Wasser oder einem Hafen liegen
  • Die Resourcenfelder müssen gleichmäßig verteilt sein, d.h. zwischen der am seltensten vorkommenden Resource und der am häufigsten vorkommenden Resource darf maximal ein Unterschied von 1 herrschen
  • Häfen dürfen nicht direkt nebeneinander liegen
  • Jedes Wasser-Feld (dazu gehören auch Häfen) muss mit mindestens einem Land-Feld verbunden sein
  • Es darf kein Land-Feld am Rand des Spielfeldes sein, d.h. das Spielfeld muss komplett von Wasser umschlossen sein
  • Es darf keine Inseln geben, d.h. alle Land-Felder müssen miteinander verbunden sein

Diese Liste ist nicht zwangsläufig vollständig. Es können im Laufe der Zeit noch zusätzliche Validierungen ergänzt werden.

Software Engineering I, SS13

Da es doch nun mehrfach zu Rückfragen bzgl. des “Stehlens” von Quelltext (durch Formatierung) gekommen ist, hier eine Möglichkeit dieses Problem zumindest teilweise in den Griff zu bekommen.

How-To: Code-Formatierungstemplate setzen und beim Speichern automatisch anwenden

  1. Stellt sicher, dass alle Teammitglieder das gleiche Formatter Template benutzen.

    Eclipse Formatter Preference

  2. Aktiviert das automatische Formatieren des Quellcodes beim Speichern:

    Eclipse Save Action Preference

Software Engineering I, SS13

Eine dem vorgegebenen Format entsprechende Karte, ist unter Balanced zu finden. Die dazu passende Karte findet ihr auch hier auf Seite 2.

HINWEIS: Um sicherzustellen, dass eure selbst erstellten Karten auch mit unserem Server kompatibel sind, solltet ihr euch genau an das vorgegebene Format halten.

Die einzelnen Fragmente haben folgende Bedeutung:

### 
### BALANCED
###

Hier wird der Name der Karte spezifiziert.

# VERSION
VERSION: 1

Hier wird die Version der Karte bestimmt.

# OWNER
OWNER: SE

Hier ist der Besitzer der Karte zu finden (Team).

 

Um die einzelnen Felder des Spielfeldes zu spezifizieren, müssen sie zeilenweise nach folgendem Muster aufgeführt werden:

# {id};{type};{rotation};({direction},{id};)+

Mit folgendem Beispiel werden die einzelnen Bestandteile erklärt:

1;WATER;0;SE,3;S,5;SW,2;
  • 1 ist die {id} des Feldes. Jedes Feld muss eine eigene ID besitzen. Ob diese aus einer oder mehrerer Zahlen oder Buchstaben besteht ist hierbei freigestellt. Sonderzeichen sind nicht erlaubt. Im Anschluss an die {id} muss ein ; folgen.
  • WATER ist der Typ des Feldes. Im Anschluss an den {type} muss ein ; folgen. Folgende Typen sind zulässig:
    • PASTURE
    • HILL
    • MOUNTAIN
    • FIELD
    • FOREST
    • DESERT
    • WATER
    • PORT_3TO1
    • PORT_LUMBER
    • PORT_ORE
    • PORT_BRICK
    • PORT_WOOL
    • PORT_GRAIN
    • BARBARIAN_START
    • BARBARIAN_END
  •  0 ist die Drehung des Feldes. Dieser Wert ist ausschließlich bei den verschiedenen Häfen und bei den Feldern des Barbaren relevant. Bei allen übrigen sollte dieser Wert auf 0 gesetzt werden.
  • S,5;SW,2; beschreibt die Nachbarn dieses Feldes. Dazu werden komma-separierte Paare von Himmelsrichtung und {id} des dort anliegenden Feldes mittels ; voneinander getrennt.
    • Erlaubte Himmelsrichtungen: N, NW, SW, S, SE, NR
    • Felder müssen immer gegenseitig aufeinander Verweisen um eine valide Karte zu ergeben, d.h. in der Definition für das Feld mit der {id} 5, muss bei den Nachbarn N,1 aufgeführt werden.