Soeben wurde der Google Kalender zu SE 1 eingerichtet. Dort werden u.a. alle Betreuertreffen vermerkt.
Category Archives: Software Engineering I
Hallo SE 1 Teilnehmer,
die Gruppeneinteilung ist abgeschlossen. Jeder Teilnehmer sollte eine E-Mail bekommen haben, in der Informationen zu seiner Gruppe und zum 1. Betreuertreffen stehen.
WICHTIG: Habt ihr diese Mail nicht bekommen, meldet euch umgehend bei mir!
Gruß,
Andreas
Ich habe mal ein Beispiel für ein Team cheat sheet erstellt auf dem Kontaktinformationen und Themenschwerpunkte zu finden sind. Im PDF sind alle E-Mail Adressen und Links klickbar. Das gezippte TexLipse Project könnt ihr als Ausgangspunkt für ein eigenes Team cheat sheet verwenden.
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.
Die erste Veranstaltung findet am Mittwoch den 27.10.2010 von 12.00 – 12.45 in Raum -1606 statt. Kurz nach der Veranstaltung werden die Gruppen bekannt gegeben.
Willkommen zu Software Engineering I im Wintersemester 2010/2011. Um einen schnellen Start zu ermöglichen, nutzt bitte das obige Registrierungsformular, um euch an der Veranstaltung anzumelden.
ACHTUNG: Eine Anmeldung in der OKA ist zusätzlich erforderlich!
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.
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.
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 |
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.
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) |