Category Archives: Software Engineering I

Software Engineering I, WS1011

Um einen ersten Eindruck von Mega Lo Mania zu bekommen, solltet ihr euch das Spiel hier herunterladen und bis nächste Woche Mittwoch den 03.11.2010 ein bisschen spielen:

Das Spiel muss in einem Emulator (DosBox) gestartet werden, den ihr hier herunterladen könnt:

Ein Tutorial wie man nun ein Spiel mit der DosBox startet lässt sich hier finden: DoxBox Tutorial. Wer die Konsolenanwendung nicht verwenden will, dem empfehle ich einen der vielen grafischen Frontends unter DosBox Frontends. Zu gebrauchen ist z.B. der DosBoxGameLauncher.

Software Engineering I, WS0910

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.

Software Engineering I, WS0910

Light and Shadow

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.

Light and Shadow
Light and Shadow

Rot = Hauptstädte, Schwarz = Dörfer, Weiß = SE-Hauptstädte

Die Programmierer

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) 0,5 std 300000 Mana nein 7 11
Die Trophäen
Bedingung Titel
Die meisten Arbeiter Brüter
Am meisten Holz produziert
Am meisten Nahrung produziert
Am meisten Stein produziert
Am meisten Mana produziert
Am meisten Arbeiter produziert
Am meisten Glauben produziert
Am meisten Zauer gesprochen
Am meisten Städte bekehrt
100000 Holz produziert Holzwurm I
200000 Holz produziert Holzwurm II
300000 Holz produziert Holzwurm III
500000 Holz produziert Holzwurm IV
800000 Holz produziert Holzwurm V
1300000 Holz produziert Holzwurm VI
2100000 Holz produziert Holzwurm VII
3400000 Holz produziert Holzwurm VIII
5500000 Holz produziert Holzwurm IX
8900000 Holz produziert Holzwurm X
1000000 Nahrung produziert Hamster I
2000000 Nahrung produziert Hamster II
3000000 Nahrung produziert Hamster III
5000000 Nahrung produziert Hamster IV
8000000 Nahrung produziert Hamster V
13000000 Nahrung produziert Hamster VI
21000000 Nahrung produziert Hamster VII
34000000 Nahrung produziert Hamster VIII
55000000 Nahrung produziert Hamster IX
89000000 Nahrung produziert Hamster X
1000 Stein produziert Bomberman I
2000 Stein produziert Bomberman II
3000 Stein produziert Bomberman III
5000 Stein produziert Bomberman IV
8000 Stein produziert Bomberman V
13000 Stein produziert Bomberman VI
21000 Stein produziert Bomberman VII
34000 Stein produziert Bomberman VIII
55000 Stein produziert Bomberman IX
89000 Stein produziert Bomberman X
1000000 Mana produziert Kanalisierer I
2000000 Mana produziert Kanalisierer II
3000000 Mana produziert Kanalisierer III
5000000 Mana produziert Kanalisierer IV
8000000 Mana produziert Kanalisierer V
13000000 Mana produziert Kanalisierer VI
21000000 Mana produziert Kanalisierer VII
34000000 Mana produziert Kanalisierer VIII
55000000 Mana produziert Kanalisierer IX
89000000 Mana produziert Kanalisierer X
1000 Glauben produziert Die reine Lehre I
2000 Glauben produziert Die reine Lehre II
3000 Glauben produziert Die reine Lehre III
5000 Glauben produziert Die reine Lehre IV
8000 Glauben produziert Die reine Lehre V
13000 Glauben produziert Die reine Lehre VI
21000 Glauben produziert Die reine Lehre VII
34000 Glauben produziert Die reine Lehre VIII
55000 Glauben produziert Die reine Lehre IX
89000 Glauben produziert Die reine Lehre X
1 Siedlung übernommen Bekehrer I
2 Siedlungen übernommen Bekehrer II
3 Siedlungen übernommen Bekehrer III
5 Siedlungen übernommen Bekehrer IV
8 Siedlungen übernommen Bekehrer V
13 Siedlungen übernommen Bekehrer VI
21 Siedlungen übernommen Bekehrer VII
34 Siedlungen übernommen Bekehrer VIII
55 Siedlungen übernommen Bekehrer IX
89 Siedlungen übernommen Bekehrer X
10 Zauber gesprochen Gandalf I
20 Zauber gesprochen Gandalf II
30 Zauber gesprochen Gandalf III
50 Zauber gesprochen Gandalf IV
80 Zauber gesprochen Gandalf V
130 Zauber gesprochen Gandalf VI
210 Zauber gesprochen Gandalf VII
340 Zauber gesprochen Gandalf VIII
550 Zauber gesprochen Gandalf IX
890 Zauber gesprochen Gandalf X
Software Engineering I, WS0910

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:

  1. Client: Verbindung aufbauen (per TCP/IP und Apache MINA Version 2.0.0-RC1 )
  2. Client: Benutzername und Passwort senden (Server führt auth gegen GForge durch)
  3. Server: Fail und disconnect oder Success und …
  4. Server: Aktueller Zustand der Spielwelt
  5. 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.

Das Byteprotokoll selbst hat folgenden Aufbau:

Nachrichtenformat

Länge der Nachricht (short) Nachricht

Nachricht

Typ (Untertyp) (weitere Daten)
Typ (Byte)

CREATE 0
UPDATE 1
DELETE 2
LOGIN 7
LOGINFAILED 8
LOGINSUCCESS 9
CHAT = 0x0C

Untertyp (Byte)

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

Chat
Chat (0x0C) Chatmessage (String)
UpdateWorker
UPDATE (1) WORKER (4) ID (BigInteger) FIELDID (BigInteger)