Allgemeines
Im Folgenden handelt es sich um Informationen zum Mega Lo Mania Server in der Version v0.1. Hierbei handelt es sich um den aktuellen Stand der Serverimplementierung. Im Laufe des Semesters kann es zu (kleineren) Änderungen im Server kommen. Insbesondere das Game Balancing könnte hiervon betroffen sein.
Generell verhält sich die Spielsimulation ähnlich der bereits in der Vorlesung gezeigten Version von Mega Lo Mania.
Simulation
Die Simulation macht alle 1000ms einen Step. Ein Step beinhaltet nacheinander die folgenden Schritte:
- Bevölkerungswachstum
- Resourcen sammeln
- Inventions erforschen
- Tower bauen
- Kampf
Zu jedem dieser Schritte folgt die Erläuterung des genauen Ablaufs und etwaiger Berechnungsgrundlagen.
1. Bevölkerungswachstum
Generell:
- Bevölkerungswachstum erst ab 2 Menschen
Die maximale Bevölkerungsanzahl pro Tower beträgt 500Seit Server Version 1.0.5 wurde diese Beschränkung aufgehoben!- Je mehr Menschen sich Tower befinden, desto schneller vermehrt sich die Bevölkerung 😉
Befinden sich 2 Menschen im Tower, werden 30 Sekunden benötigt um einen weiteren Menschen zu zeugen. Bei 4 Menschen werden entsprechend 15 Sekunden benötigt.
2. Resourcen sammeln
Generell:
- Es gibt Resourcen, die automatisch aufgesammelt werden und Resourcen für die eine Mine/Tagebau benötigt wird. Die Geschwindigkeit in der Resourcen abgebaut werden, unterscheidet sich zwischen diesen beiden Typen
- Automatisch aufgesammelte Resourcen: Anzahl der Menschen im Tower.
- Resourcen die eine Mine/Tagebau erfordern: Anzahl der Menschen in der Mine/Tagebau.
Die folgende Tabelle gibt Informationen darüber, welche Resourcen automatisch aufgesammelt werden und für welche eine Mine/Tagebau benötigt wird. Zudem wird die Anzahl der gesammelten Resourcen pro Step (1000ms) angegeben:
Resource | Automatischer Abbau | Berechnung |
---|---|---|
Wood | Ja | Anzahl Menschen im Tower / 1000ms |
Rock | Ja | Anzahl Menschen im Tower / 1000ms |
Bone | Ja | Anzahl Menschen im Tower / 1000ms |
Slate | Ja | Anzahl Menschen im Tower / 1000ms |
Moonlite | Nein (Tagebau) | Anzahl Menschen im Tagebau / 1000ms |
Planetarium | Nein (Tagebau) | Anzahl Menschen im Tagebau / 1000ms |
Bethlium | Nein (Tagebau) | Anzahl Menschen im Tagebau / 1000ms |
Solarium | Nein (Tagebau) | Anzahl Menschen im Tagebau / 1000ms |
Aruldite | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Herbirite | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Yeridium | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Valium | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Parasite | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Aquarium | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Paladium | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Onion | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Tedium | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Moron | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Maamite | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
Alien | Nein (Mine) | Anzahl Menschen i.d. Mine / 1000ms |
3. Inventions erforschen
Generell:
- Es kann immer nur an einer Invention gleichzeitig geforscht werden. Soll an einer neuen Invention geforscht werden während bereits eine andere läuft, so wird die erste Forschung abgebrochen
- Welches Design für eine Invention verwendet wird, entscheidet der Server (siehe Erklärung “Bestes Design”)
- Die zum erforschen einer Invention benötigte Zeit hängt von folgenden Faktoren ab:
- Der momentanen Epoche des Sectors sowie der Epoche der Invention. Je größer die Differenz zwischen diesen beiden Epochen, desto mehr Zeit wird benötigt
- Ist das für die Invention gewählte Design “ergonomicallyTerrific”, halbiert sich der in Schritt 1 errechnete Faktor.
Bestes Design
Das beste Design wird wie folgt ermittelt:
- Aus allen für eine Invention möglichen Design die entfernen, für die gerade zu wenig Resourcen im Tower verfügbar sind
- Die übrigen Designs nach der Anzahl der benötigten Resourcen sortieren. Hierbei wird KEINE Rücksicht auf die Art der Resource genommen sondern nur die Menge berücksichtigt.
- Das erste Design in der sortierten Liste ist das beste Design.
Berechnung einer Invention
- Initialisierung:
- Berechnung der Epochen Differenz: Diff = EpochOfSector – EpochOfInvention
- Berechnung des Invention Faktors:
Diff Faktor 3 40 2 60 1 80 0 100 -1 120 -2 140 -3 160 Falls das Diff mehr als 3 Epochen beträgt, wird der Faktor auf 30 (>3) bzw. 170 (<-3) begrenzt.
- Das beste Design ermitteln
- Falls das Design “ergonomicallyTerrific” ist, wird der in Schritt 2 berechnete Faktor halbiert.
- Bei jedem Step:
- Workprogress berechnen: workProgress = AnzahlInventors / factor
- Progress der Invention um berechneten Progress erhöhen
- Falls der Progress =1 ist die Erforschung abgeschlossen
4. Tower bauen
Generell:
- Befindet sich eine Army auf auf einem leeren Sector, fängt diese automatisch an einen Tower zu bauen
- Je mehr Menschen sich auf einem Sector befinden, desto schneller wird der Tower gebaut
- Ist der Bau fertiggestellt, werden alle Armeen in den Tower verschoben und die Waffen im Waffenlager (Storage) deponiert
- Der Fertigstellungsgrad ist ein Wert 0 <= x <= 1
Berechnung: buildProgress = workpower / 1000
5. Kampf
Generell:
- Ein Kampf findet immer dann statt, wenn
- Sich (mindestens) zwei Armeen auf einem Sector befinden, deren Teams verschieden sind
- Sich (mindestens) eine Armee auf einem Sector befindet, der bereits mit Gebäuden eines anderen Teams bebaut ist
- Folgende Waffen gibt es grundsätzlich:
Waffe Typ Epoche Schaden Anzahl nötiger Soldaten Luftwaffe Rock Weapon 9500 BC 1 1 nein Stick Defense 9500 BC 3 1 nein Shield Shield 9500 BC – – – Catapult Weapon 3000 BC 2 1 nein Spear Defense 3000 BC 6 1 nein Shield Shield 3000 BC – – – Pike Weapon 100 AD 4 1 nein Bow and Arrow Defense 100 AD 12 1 nein Shield Shield 100 AD – – – Longbow Weapon 900 AD 8 1 nein Cauldron Defense 900 AD 24 1 nein Shield Shield 900 AD – – – Giant Catapult Weapon 1400 AD 16 2 nein Crossbow Defense 1400 AD 48 2 nein Shield Shield 1400 AD – – – Cannon Weapon 1850 AD 32 3 nein Musket Defense 1850 AD 96 3 nein Shield Shield 1850 AD – – – Biplane Weapon 1915 AD 64 2 ja Machine Gun Defense 1915 AD 192 2 nein Shield Shield 1915 AD – – – Jet Fighter Weapon 1945 AD 128 3 ja Bazooka Defense 1945 AD 384 2 nein Shield Shield 1945 AD – – – Nuke Weapon 1980 AD – – nein Nuclear deterrent Defense 1980 AD – – nein Shield Shield 1980 AD – – – Flying Saucer Weapon 2001 AD 512 10 ja SDI Laser Defense 2001 AD 1536 10 nein Shield Shield 2001 AD – – –
Die Berechnung der Kämpfe läuft wie folgt ab:
- Für alle Armeen eines Teams die Kampfstärke berechnen. Die stärke einer (oder mehrerer) Armeen hängt von der benutzten Waffe ab.
- singleArmyStrength = waffenSchaden * (anzahlSoldaten / nötigeAnzahlSoldatenFürWaffe)
- totalArmyStrength = SummeDerEinzelnenArmeenStärke
- Zunächst Kampf der Armeen untereinander berechnen:
- Sterberate einer Armee berechnen. Sei at1 eine Armee von Team 1, at2 eine Armee von Team 2, at1_deathrate die Sterberate von at1 und at2_deathrate die Sterberate von at2.at1_deathrate = at2_totalArmyStrength / at1_totalArmyStrength
- Anzahl der kills bei jeder Armee berechnen.
- Falls eine Armee keine Einheiten verlieren würde (deathrate zu gering), Zufall entscheiden lassen, ob doch 1 Einheit stirbt.
- Andernfalls entspricht die deathrate der Anzahl der kills. Falls mehrere Armeen eines Teams anwesend sind, werden die kills gleichmäßig über die Armeen verteilt.
- Gebäudeschaden berechnen
- Kampfstärke von Verteidigern auf Gebäuden berechnen (siehe hierzu Schritt 1).
- damageToBuilding = enemy_totalArmyStrenght – defender_totalArmyStrength
- Betragen die hitPoints eines Gebäudes 0, so wird dieses Gebäude zerstört