Ab Release 3 (ab 25.01.2010 00:01 uhr)wird ein neuer Server laufen auf dem einige Änderungen getroffen wurden.
1. Zerfall von unbesetzten Gebäuden. Jedes Gebäude (außer dorfzentrum,rathausplatz,friedhod und manatopf) in dem sich kein Arbeiter befindet zerfällt pro Produktionszyklus um 1. Sobald ein Gebäude 10 mal unbesetzt war wird bricht es in sich zusammen (es wird gelöscht).
2.Score und Achievements . Es gibt nun einen liveScore auf der Serverstatusseite dieser Errechnet sich aus Achievements und der Anzahl der eingenommen Städte. Achievements werden vom Server nun über das Protokoll heraus geschrieben.(Weitere Informationen zu Achievements folgen diese Woche)
3.Chat. Es wurde ein Chat ins Protokoll eingebaut der an alle Spielertypen gesendet wird
4.Neue Zauber/Wunder freischaltung von Effeckten und Änderungen am ZauberProtokoll wurden vorgenommen. Siehe Spielbeschreibung.
5.Änderungen am alten Protokoll.Änderungen am alten Protokoll sind nachzulesen im Protokollbeitrag.
Auf SE-Island leben die Programmierer ein friedliches Leben. Sie bestellen das Land und gehen fischen um sich mit dem Nötigsten zu versorgen. Und wenn es mal etwas zu bauen gibt wissen sie auch mit Holz und Steinen umzugehen. Aber die Götter sind gelangweilt von all der Harmonie und fassen den Entschluss einen Wettkampf unter den Programmierern zu veranstalten. Nachdem sie neue Programmiersprachen mit allerlei Firlefanz erschaffen hatten um unter den Programmierern einen Wettbewerb auzulösen stürzten sich die Programmierer mit Freuden auf die neuen Möglichkeiten. Allerdings schlugen Neugier und Freude schnell in blinden Glauben und Fanatismus um, der schließlich auch die Götter erfasste. Sie zersplitterten in kleine Gruppen die einer Programmiersprache huldigten als sei sie eine Religion und versuchen seither die Schar ihrer Gläubigen auf ganz SE-Island zu vergrößern.
Das Land
In der Welt von SE-Island gibt es zehn Hauptstädte und zehn Dörfer, von denen jeweils zwei in der Nähe einer Hauptstadt liegen. Die Küsten sind reich an Fisch und die Äcker warten nur darauf bestellt zu werden. Holz und Stein finden sich ebenso reichhaltig, allerdings ist der Tiefere Wald bisher verschlossen geblieben.
Jeder Programmierer kann in jedem der verfügbaren Gebäude mitarbeiten und so indirekt zur Blüte seiner Religion beitragen. Wenn er auf den Rathausplatz eines andersgläubigen Dorfes geschickt wird, wird er zum Missionar um direkt die Bewohner des Dorfes vom Glauben an seine – die wahre – Programmiersprache zu überzeugen. Jeder Programmierer beginnt sein Leben im Stadtzentrum oder Wohnhaus und kann nur durch eine Hungersnot verenden.
Die Religion / Programmiersprache
Jede Siedlung glaubt an genau eine Religion, die ihr Verhalten bestimmt und der auch das gewonnene Mana zugute kommet. Welchen Geboten die Gläubigen nacheifern geben die Götter (in Form von Javaquellcode für eine KI) durch die Religion vor.
Die Siedlungen
Zu jeder Siedlung gehören neben dem Stadtzentrum ein Rathausplatz, auf dem sich die Programmierer versammeln, ein Friedhof und alle sich in der Nähe befindenden Gebäude. Welche Gebäude die Bewohner errichten richtet sich nach ihrem Glauben (also der KI). Die Hauptstädte der Religionen sind Hochburgen fanatischen Glaubens und können nicht bekehrt werden. Dörfer hingegen können durch das Entsenden von Missionaren bekehrt werden. Sobald ein Dorf bekehrt wird, also eine kritische Masse an Glauben erzeugt wurde, verfallen alle Programmierer dem Hype: das Dorf und alle Arbeiter wechseln komplett zur neuen Programmiersprache.
Die Gebäude
Um Ressourcen abzubauen müssen Gebäude gebaut werden, die mit steigender Anzahl an Arbeitern auch entsprechend produktiver werden. Je weiter sie vom Dorfzentrum entfernt sind, desto langsamer ist die Produktion.
Die Ressourcen
Bevor Ressourcen abgebaut werden können muss erst ein Entsprechendes Produktionsgebäude errichtet werden. Die wenigsten Gebäude kommen ohne Versorgung mit anderen Ressourcen aus.
Die Götter
Die Götter können direkt auf die Spielwelt Einfluss nehmen, indem sie Wunder wirken und so ihren Gläubigen im richtigen Moment Vorteile verschaffen, oder Andersgläubigen benachteiligen. Jedes Wunder zeugt auch von der Wirkenskraft einer Religion und bewirkt einen kleinen Glaubenszuwachs in der betroffenen Region. Sie versuchen durch ihr aktives (Missionieren / Unterstützen durch Wunder) und passives (Steuerung der Gläubigen durch eine KI) Wirken ihren Glauben – die einzig wahre Programmiersprache – zu verbreiten und die Zahl ihrer Programmierer zu vermehren. Durch ihr Wirken können die Götter Trophäen erhalten (die zwar nicht mit in die Notengebung mit einfließen, aber zeigen wie gut sich die Götter schlagen).
Spielmechanik
Die 5 Anfangsarbeiter können nicht sterben
Siedlungen: 6 Hauptstädte, 14 Dörfer, 3 SE-Städte
Stadteinzugsgebiet: je Feld Entfernung zum Stadtzentrum 10% längere Produktionszeit
Hauptstädte können nicht übernommen werden
Arbeiter Sterben wenn zu wenig Nahrung in ihrer Heimatsiedlung vorhanden ist (1:1 Verhältnis)
In Wohnhäusern gebohrene Arbeiter gehen auf den Rathausplatz
Der Rathausplatz ist ein Feld neben dem Dorfzentrum
Die Götter teilen sich das Mana ihrer Religion / Programmiersprache
Arbeiter bewegen sich ein Feld pro Sekunde, kommen aber erst nach der Produktion an
Arbeiter die auf einem Rathausplatz stehen verbreiten dort den Glauben ihrer Heimatsiedlung.
Arbeiter gehören ihr leben Lang zu der Siedlung in der sie gebohren wurden.
Produktionsgebäude:
Gebäude
Kosten
Anzahl Zeiteinheiten für den Bau
Verbrauch : Produktion / je Arbeiter
Anzahl Arbeiter
Anzahl Zeiteinheiten pro Produktionszyklus
ID
Holzfäller
50 Nahrung
400
0 : 1 Holz
8
300
3
Fischerhütte
40 Holz
250
0 : 2 Nahrung
5
200
2
Farm
120 Holz + 30 Nahrung
800
1 Holz : 5 Nahrung
10
200
4
Steinbruch
100 Nahrung + 80 Holz
1500
4 Nahrung + 2 Holz : 1 Stein
15
1000
5
Tempel
200 Stein + 250 Holz
10000
10 Nahrung : 25 Glauben
50
2000
6
Wohnhaus (klein)
200 Holz
500
20 Nahrung : 1 Arbeiter
6
10000
8
Wohnhaus (mittel)
1000 Holz + 500 Stein
1000
20 Nahrung : 1 Arbeiter
6
5000
9
Wohnhaus (gross)
4000 Holz + 2500 Stein
2000
20 Nahrung : 1 Arbeiter
6
1000
10
Blauer Topf der blubbert
700 Stein + 1100 Holz + 2000 Nahrung
500
1 Arbeiter : 500 Mana
25
700
7
Stadtzentrum
not buildable
0 : 1 Nahrung + 10 Mana
5
500
1
Rathaus
not buildable
0 : 1 Glaube pro Owner das Arbeiters
unendlich
400
100
Friedhof
not buildable
-1 Nahrung x Arbeiter der Stadt ***
400
666
*** Wenn keine Nahrung für Arbeiter vorhanden ist, wird pro fehlende Nahrung ein ZUFÄLLIGER Arbeiter der Stadt getötet!!!
Anfangssituation
1 Hauptstadt mit Rathausplatz, Friedhof und 5 Arbeitern in der Hauptstadt
ES GIBT KEINE STARTRESOURCEN!!!
Die Wunder
Wunder
Effekt
Dauer
Kosten
Aufladbar
Zauber ID
Effekt ID
Nahrungswunder
+ 1 Nahrung
Instant
60 Mana
ja
1
Ausräuchern
1 Produktionsfeld wird geräumt. Arbeiter werden zum Rathaus geschickt. 3 Produktionszyklen keine Produktion möglich
3 Produktionszyklen
15000 Mana
nein
2
7
Meteorit
Zerstört alle Gebäude und Arbeiter im Umkreis von 2 Feldern. Ausnahme sind Dorfplatz, Rathaus, Friedhof!
Instant
3000000 Mana
nein
3
Arbeiter aus Übersee
+ 1 Arbeiter auf dem Rathausplatz
Instant
5000 Mana
ja
4
Eiszeit
Zeit für die Bewegung aller Arbeiter des Dorfes *100
6 std
1000000 Mana
nein
5
9
Wirbelsturm
Arbeiter können das Produktionsgebäude (+ Umkeis von 3 Felden) nicht verlassen/betreten.
6 std
5000000 Mana
nein
6
10
Schutzschild
Schützt vor allen Zaubern ab Anwendung (+ Umkreis von 5 Feldern)
Jede Gruppe wird einen Decoder für das Byteprotokoll des Servers entwickeln (und Apache MINA Version 2.0.0-RC1 benutzen). Dabei liegt dem Protokoll folgende Sendereihenfolge zu Grunde:
Client: Verbindung aufbauen (per TCP/IP und Apache MINA Version 2.0.0-RC1 )
Client: Benutzername und Passwort senden (Server führt auth gegen GForge durch)
Server: Fail und disconnect oder Success und …
Server: Aktueller Zustand der Spielwelt
Server: Event basierte Changes
Anmerkung: Wenn der Client ungültige Pakete sendet werden sie verworfen und es erfolgt keine Antwort vom Server (spart ressourcen). Wer also keine Antwort bekommt hat einen ungültigen Request geschickt und sollte die Struktur der Bytenachricht überprüfen.
FIELD 0
CITY 1
RELIGION 2
RESOURCE 3
WORKER 4
GOD 5
SPELLCAST 6
FFECT 0x0A
FIELDHEALTH 0x0E
ACHIEVEMENT 0x0D
Datentypen
BigInteger
Länge (Byte)
Wert (ByteStream)
Anmerkung: dem letzten Aufkommen eines BigInteger geht keine Längenangabe voraus. Sie kann aus der Länge des Pakets berechnet werden.
Int
Wert (4)
String
Länge (Int)
Wert (ByteStream)
Anmerkung: dem letzten Aufkommen eines Strings geht keine Längenangabe voraus. Sie kann aus der Länge des Pakets berechnet werden. (Ausnahme: Der Login erwartet für beide Strings eine Längenangabe)
Nachrichten vom Server zum Client
String
Länge (byte)
Wert (ByteStream)
Anmerkung: dem letzten Aufkommen eines Strings geht keine Längenangabe voraus. Sie kann aus der Länge des Pakets berechnet werden. Bei Nachrichten vom Server an den Client sind die Längenangaben zum String 1byte um Resourcen zu sparen.
Login: Success
LOGINSUCCESS (9)
RELIGIONID (BigInteger)
Login: Failed
LOGINFAILED (8)
CreateField
CREATE (0)
FIELD (0)
PosX (Int)
PosY (Int)
RECIPEID (Int)
Time (Int)
OWNERID (BigInteger)
ID (BigInteger)
CreateCity
CREATE (0)
CITY (1)
Capital(1 byte (1=true/0=false))
ID (BigInteger)
PosX (Int)
PosY (Int)
RECIPEID (Int)
Name (String)
OWNERID (BigInteger)
UpdateCity
UPDATE (1)
CITY (1)
OWNERID (BigInteger)
CITYID (BigInteger)
CreateReligion
CREATE (0)
RELIGION (2)
ID (BigInteger)
Name (String)
CreateResource
CREATE (0)
RESOURCE (3)
AMOUNT (BigInteger)
Type (String)
FieldID (BigInteger)
CreateWorker
CREATE (0)
WORKER (4)
ID (BigInteger)
FIELDID (BigInteger)
OWNERID (BigInteger)
CreateAchievment
CREATE (0)
ACHIEVMENT (0x0D)
Points (int)
ReligionID (ID)
Name (String)
UpdateWorker
UPDATE (1)
WORKER (4)
ID (BigInteger)
FIELDID (BigInteger)
Time (Int)
CreateGod
CREATE (0)
GOD (5)
Name (String)
RELIGIONID (BigInteger)
GODID (BigInteger)
CreateSpellcast
CREATE (0)
SPELLCAST (6)
TYPE (INT)
PosX (INT)
PosY (INT)
God (id)
DeleteObject
DELETE (2)
TYP (BYTE)
ID (BigInteger)
Chat
Chat (0x0C)
Chatmessage (String)
UpdateFieldHealth
UPDATE (1)
FIELDHEALTH (0x0E)
Health (Byte)
Fieldid (BigInteger)
CreateEffect
CREATE (0)
EFFECT (0x0A)
Type (Int)
Religion (BigInt)
FieldID (BigInt)
ID (BigInt)
Nachrichten vom Client zum Server
Login
LOGIN (7)
Username (String)
Passwort (String)
Anmerkung: Beim Login geht beiden Strings eine Längenangabe voraus. In allen anderen Paketen lässt sich die Länge des letzen Datums durch die Länge des Pakets berechnen.
Anmerkung: Die Logindaten für die GUI Clients entsprechen den GForge Benutzernamen. Es können also maximal so viele GUI Clients für eine Gruppe gestartet werden wie sie mitglieder hat. Der KI Account Login entspricht dem Gruppennamen, das Paßwort wird euch vom Betreuer mitgeteilt bzw, solltet ihr es erfragen wenn das noch nicht passiert ist.
CreateField
CREATE (0)
FIELD (0)
PosX (Int)
PosY (Int)
RecipeID (Int)
OWNERID (BigInteger)
CreateSpellcast
CREATE (0)
SPELLCAST (6)
Type (Int)
PosX (Int)
PosY (Int)
Charge (BigInt)
Anmerkung: bei nicht Aufladbaren Zaubern bitte einem BigInteger mit dem Wert 0 übergeben
Da das erste Release ansteht, eine kurze Info zu den Terminen:
In der letzten Woche des Releases trifft sich der Product Owner der ersten Releases mit den Kunden, aktualisiert das Product Backlog und erstellt mit dem Kunden das neue Release Backlog.
In der ersten Woche des neuen Releases präsentieren der alte Product Owner und der alte Scrum Master den Kunden das fertig gestellte Release.
Präsentation mit Installation auf einem Kundenrechner.
Alle Teammitglieder sollten anwesend sein.
Betreuer und Kunden werden anwesend sein und sich Notizen zur Bewertung des Vortrags machen.
Bitte nehmt Kontakt mit euren Kunden auf und vereinbart entsprechende Termine.
Des weiteren gilt die Releasepräsentation als Offizielle Übergabe der Product Owner und Scrum Master Rollen.
Die Vorlesung Softwaretechnik ist jetzt in der OKA freigeschaltet. Bitte meldet euch rechtzeitig an, da wir das Prüfungsdatum auf den 06.12.2009 gelegt haben um den Teams mehr Sicherheit bezüglich ihrer Mitglieder zu geben.