Kampfsys

Aus DSWiki

Wechseln zu: Navigation, Suche

Als kampfsys bezeichnet man die Berechnung der gefallenen bzw. überlebenden Truppen nach einem Gefecht. Der Simulator dient dazu, das Ergebnis vorherzusagen, um sinnlose Angriffe zu vermeiden. Allerdings ist nicht offensichtlich, welche Rechenverfahren dabei zu Grunde liegen. Im Forum wurden von Listard am 24.7.2005 einige Angaben gemacht, die als Quelle für diesen Artikel dienen. Die Angaben beziehen sich auf Welt 11, sind aber analog auch auf 10 übertragbar.
Die klassische Aufgabenstellung lautet: Nachdem ich die deff ausspioniert habe, möchte ich wissen, wieviel Truppen ich einsetzen muss, damit mindestens 50% (oder mehr) überleben. Im weiteren Artikel wird als davon ausgegangen, dass off>deff, d.h. alle Defensivtruppen werden vernichtet.

Inhaltsverzeichnis

Berechnung bei einer einfachen Infanterieschlacht

Als Infanterie bezeichnet man Speerträger, Schwertkämpfer und Axtkämpfer sowie den Paladin, deren Offensiv- und Defensivpunkte in der Hilfe ersichtlich sind. Nicht in diese Rechnung einbeziehen wollen wir Glück, Moral, Nachtbonus bzw. Wallbonus.
o bezeichen die Punkte der Offensivkräfte,
d die Punkte der Defensivkräfte,
Δo die Änderung der Offensivkräfte d.h. die Punkte der Gefallenen

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta o = \frac d { \sqrt{ \frac o d } } = \frac { d \sqrt{d}} { \sqrt{o}}

Die relative Mortalitätsrate beträgt dann

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \frac { d \sqrt{d}} {o \sqrt{o}} \ also \ falls \ o \to \infty \ gilt \ \frac { \Delta o } o \to 0



Die relative Mortalitätsrate bestimmt dann auch die Anzahl der gefallenen Einheiten.
Sind die Offensivkräfte schwächer als die Defensivkräfte, so fallen alle Angreifer und die gefallenen Verteidiger berechnen sich entsprechend.

Kampfsys 01.jpg
Diagramm 1: Absolute Anzahl gefallener Einheitenpunkte in Abhängigkeit von der
Offensivkraft bei einer angenommenen Verteidigungsstärke von 1900

Kampfsys 02.jpg
Diagramm 2: Relative Verluste

Berechnung bei einem Späherangriff

Angreifende Späher werden durch keinen Wall aufgehalten, nur defensive Späher lichten die Reihen der Weißen. Interessanterweise erleiden die Verteidiger dabei keine Veluste.
Kommen also weniger Angreifer als Verteidiger, so werden alle Angreifer vernichtet.
Kommen mehr Angreifer als Verteidiger, so berechnen sich die Verluste der Angreifer nach der obigen Formel, vermehrt um 1.
Für bestimmte Informationen müssen verschiedene "Rückkehrraten" von Spähern erreicht werden. Die wievielfache Übermacht muss also losziehen?

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \left ( \frac d o \right ) ^ { \frac 3 2}

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \left ( \frac { \Delta o } o \right ) ^ { \frac 2 3} = \frac d o

für die Information müssen überleben dürfen sterben die Übermacht muss betragen
Rohstoffe 50% 50% 1,6
Gebäude 70% 30% 2,3
Einheiten
außerhalb
90% 10% 4,7


Das bedeutet, um einen vollen Spionagebericht zu erhalten, müssen 4,7 mal soviel Spione losgeschickt werden, wie im Dorf stehen.

Berechnung bei einem Angriff mit gemischten Truppen

Wird mit Infanterie und Kavallerie angegriffen, so kann der Speerkämpfer nicht mit 45 Punkten gegen die Kavallerie und nochmal mit 15 Punkten gegen die Infanterie kämpfen. Seine Kampfkraft (und die der anderen Defensivkräfte) setzt er im Verhältnis der angreifenden Waffengattungen ein. Wenn also doppelt so viele Kavalleriepunkte wie Infanteriepunkte angreifen, so benutzt er 2/3 von 45 (=30) und 1/3 von 15 (=5; also insgesamt 35 Punkte). Diese Zahl kennzeichnet die Defensivkraft, die in der Formel oben benötigt wird.

Rechenbeispiel:

Waffengattung Punkte    Anteil
Infanterie 100 100/600=1/6
Bogenschützen   200 200/600=2/6=1/3
Kavallerie 300 300/600=3/6=1/2
Punktsumme 600

Die Defensivkräfte nutzen also 1/6 ihrer Abwehrpunkte gegen Infanterie, 1/3 gegen Bogenschützen und 1/2 gegen Kavallerie.

Komplexes Rechenbeispiel

Die folgenden Truppen greifen an:

Waffengattung Anzahl Punkte    Anteil
Axtkämpfer 100 4000 4000/18500=8/37
Bogenschützen   100 1500 1500/18500=3/37
leichte Kavallerie 100 13000 13000/18500=26/37
Punktsumme 18500

Denen stehen die tapferen Verteidiger gegenüber:

Waffengattung Anzahl Punkte gegen
Infanterie
Punkte gegen
Bogenschützen
Punkte gegen
Kavallerie
Gesamtkraft
einer Einheit
Summe
Speerträger 100 15*8/37 20*3/37 45*26/37 1350/37=36,5 135000/37=3649
Schwertkämpfer   100 50*8/37 40*3/37 15*26/37 910/37=24,6 91000/37=2459
Bogenschützen 100 50*8/37 5*3/37 40*26/37 1455/37=39,3 145500/37=3932
Punktsumme 92000/37=2486 19500/37=527 260000/37=7027 10040

Da wir den Wall außer acht lassen, gewinnen die Angreifer und alle Verteidiger werden vernichtet!
Wir setzen die Punkte in die Formel oben ein und berechen die relativen Verluste der Angreifer:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \frac { 10040 \sqrt{10040}} {18500 \sqrt{18500}} = 0,399 \ \ \Delta o = 18500 * 0,399 = 7381


Also verlieren die Angreifer 7381 Punkte.
Würden die Angreifer verlieren, so wären alle ihre Truppen vernichtet und die Verteidiger würden in jeder Einheit den berechneten Anteil verlieren. Da aber die Angreifer gewinnen, ist es etwas komplizierter, wie sich die oben berechnete Punktzahl auf die einzelnen Einheiten verteilt. Wir müssen für jede Einheit berechnen, wieviel Verteidigungspunkte ihr entgegenstehen.

Für die Axtkämpfer gilt:
Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \frac { 2486 \sqrt{2486}} {4000 \sqrt{4000}} = 0,4899 \ \ \Delta o = 100 * 0,4899 = 48,99
Für die Bogenschützen gilt:
Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \frac { 527 \sqrt{527}} {1500 \sqrt{1500}} = 0,208 \ \ \Delta o = 100 * 0,208 = 20,8
Für die Kavallerie gilt:
Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac { \Delta o } o = \frac { 7027 \sqrt{7027}} {13000 \sqrt{13000}} = 0,397 \ \ \Delta o = 100 * 0,397 = 39,7

Kampfsys 03.jpg

Angriff mit Rammen

HINWEIS: Aufgrund der immernoch anhaltenden Probleme mit den Formeln im Wiki habe ich mich entschlossen, alle hier gezeigten Informationen unter der folgenden URL zu veröffentlichen und zu pflegen: http://www.dsworkbench.de/index.php/kampfsystem


Folgende Informationen sind wichtig:

  1. Ist die Offensive stärker als die Defensive, werden die Rammen im gleichen Verhältnis dezimiert wie die übrigen Truppen
  2. Die Wirkung der Rammmen ist auch von der Defensive abhängig. Eine starke Defensive mindert oder verhindert die Wirkung der Rammen
  3. Rammen richten auch Schaden an, wenn sie am Ende alle kaputt sind
  4. Einige Hinweise finden sich im unten angegebenen Link zum Forum

Der Kampf mit Rammen ist in mehrere Phasen unterteilt.

In der ersten Phase, die vor dem eigentlichen Kampf stattfindet, greifen die Rammen allein den Wall an und setzen ihn auf einen provisorischen Wert herab.
Dies geschieht nach der folgenden Formel:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Kampf} = Wall - RUNDEN(\frac{Rammen \times Faktor_{Glaube} \times Faktor_{Pala}}{4 \times 1.09^{Wall}})


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Kampf}

ist die resultierende Wallstufe, mit der der eigentliche Kampf durchgeführt wird

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall

ist die Stufe des Walls im angegriffenen Dorf

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Rammen

ist die Anzahl der mitgeführten Rammen

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Faktor_{Glaube}

ist entweder 1.0 (Einheiten sind gläubig) oder 0.5 (Einheiten sind nicht gläubig)

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Faktor_{Pala}

nimmt den Wert 2.0 an, wenn Carols Morgenstern mitgeführt wird. Sonst ist der Wert 1.0

Wenn die Berechnung für einen Server mit alten Paladingegenständen durchgeführt wird, so ist Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Kampf}

auf die Hälfte der ursprünglichen Wallstufe beschränkt.

Wird auf einem Server mit neuen Paladingegenständen gerechnet, so kann Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Kampf}

minimal ein Viertel der ursprünglichen Wallstufe annehmen.


In der zweiten Phase wird der eigentliche Kampf, unter Zuhilfenahme der errechneten, provisorischen Wallstufe, durchgeführt.
Dabei spielen die Rammen eine eher untergeordnete Rolle und fließen lediglich mit ihrer Kampfkraft 2 als Infanterieeinheit in die Berechnung ein.

Für die dritte Phase ist es entscheidend, ob der Angreifer als Sieger oder Verlierer aus dem Kampf hervorgegangen ist.
Hat der Angreifer gewonnen, so wird die maximale Senkung des Walls mit der folgenden Formel berechnet:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max} = \frac{Rammen \times Kampfkraft_{Ramme} \times Faktor_{Glaube} \times Faktor_{Pala}}{4 \times 1.09^{Wall}}


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max}

ist die maximale Anzahl der Stufen, die der Wall durch die mitgeführten Rammen gesenkt werden kann

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Kampfkraft_{Ramme}

ist die Kampfkraft einer einzelnen Ramme (Normalerweise 2)

Inwieweit dieses theoretische Maximum erreicht wird hängt von der Verlustrate auf Seite des Angreifers ab.
Die Verlustrate wird wie folgt berechnet:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Verlustrate_{Off} = \frac{\sum{Verluste_{Off}}}{\sum{Anzahl_{Off}}}


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \sum{Verluste_{Off}}

ist die Summe der gestorbenen Angreifer

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \sum{Anzahl_{Off}}

ist die Summe der ursprünglich angreifenden Einheiten

Achtung: Die Verluste sowie die Anzahl beziehen sich hier auf die reine Menge der Einheiten, nicht auf die benötigten Bauernhofplätze!

z.B. 6000 Axtkämpfer, 2300 LKav und 300 Rammen ergeben in der Summe 8600. 8000 Axtkämpfer und 600 Rammen ergeben ebenfalls diesen Wert.

Nun wird abschließend die eigentliche Senkung des Walls berechnet, die im schlechtesten Fall (alle Angreifer und Verteidiger sterben) Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \frac{1}{2} \times \Delta{Max}

ist.

Hierfür wird diese Formel verwendet:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Neu} = Wall - RUNDEN(\Delta{Max} - \frac{1}{2} \times \Delta{Max} \times Verlustrate_{Off})


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Neu}

ist dabei die resultierende Wallstufe nach dem Kampf

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall

ist die Wallstufe vor dem Kampf (ohne die anfängliche, provisorische Senkung!)

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max}

ist die maximal mögliche Senkung (siehe oben)

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Verlustrate_{Off}

ist die errechnet Verlustrate des Angreifers (siehe oben)

Verliert der Angreifer schaut das Ganze etwas anders aus. Zuerst muss jedoch auch hier die Verlustrate berechnet werden, diesmal allerdings die des Verteidigers.
Die geschieht äquivalent zu der Verlustberechnung beim Angreifer:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Verlustrate_{Deff} = \frac{\sum{Verluste_{Deff}}}{\sum{Anzahl_{Deff}}}


Auch hier müssen selbstverständlich die reine Anzahl der Verluste und der Einheiten verwendet werden.
Letztendlich kann man nun die resultierende Wallstufe im Falle einer Niederlage des Angreifers berechnen:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Wall_{Neu} = Wall - RUNDEN(\frac{Rammen \times Kampfkraft_{Ramme} \times Verlustrate_{Deff} \times Faktor_{Glaube} \times Faktor_{Pala}}{8 \times 1.09^{Wall}})


Quellen:

http://forum.tribalwars.net/showthread.php?t=100537
http://forum.tribalwars.nl/showthread.php?t=18629
http://forum.tribalwars.net/showthread.php?t=136874

Ein spezieller Dank geht hiermit an capibarbaroja (tribalwars.net), der durch seine umfangreichen Vorarbeiten, Recherchen und aufschlussreiche Diskussionen geholfen hat, diese Formeln zu erarbeiten.

Angriff mit Katapulten

Im Unterschied zu den bisherigen Berechnungen gibt es bei den Katapulten einige Besonderheiten zu beachten, dazu aber später.
Die Berechnung des Gebäudebeschusses findet nach dem eigentlichen Kampf statt. Wie schon bei der Berechnung mit den Rammen entscheidet hier,
ob der Angreifer gewonnen oder verloren hat. Auch die Formeln schauen hier ähnlich derer bei der Wallberechnung aus.
Gewinnt der Angreifer, wird die maximale Gebäudezerstörung wie folgt berechnet:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max} = \frac{Katapulte \times Kampfkraft_{Katapult} \times Faktor_{Glaube} \times Faktor_{Pala}}{300 \times 1.09^{Gebaeudestufe}}


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max}

ist die maximale Anzahl Stufen, die das Gebäude zerstört werden kann

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Katapulte

ist die Anzahl der mitgeführten Katapulte

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Kampfkraft_{Katapult}

ist die Angriffsstärke eines Katapults (Normalerweise 100)

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Faktor_{Glaube}

ist entweder 1.0 (Einheiten sind gläubig) oder 0.5 (Einheiten sind nicht gläubig)

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Faktor_{Pala}

nimmt den Wert 2.0 an, wenn Aletheias Leuchtfeuer mitgeführt wird. Sonst ist der Wert 1.0

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Gebaeudestufe

ist die Stufe des anvisierten Gebäudes vor dem Kampf

Die eigentliche Zerstörung des Gebäudes wird im Anschluss absolut identisch wie schon die Berechnung der Wallzerstörung durchgeführt.
Zuerst wird Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Verlustrate_{Off}

bestimmt, anschließend wird damit Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Gebaeude_{Neu}
berechnet.

Verliert der Angreifer, so wird auch bei den Katapulten eine weitere Formel benötigt, die hier zu sehen ist:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Gebaeudestufe_{Neu} = Gebaeudestufe - RUNDEN(\frac{Katapulte \times Kampfkraft_{Katapult} \times Faktor_{Glaube} \times Faktor_{Pala}}{600 \times 1.09^{Gebaeudestufe}} \times Verlustrate_{Deff})


Ebenso wie bei den bisherigen Formeln wird auch hier wieder die Verlustrate benötigt, welche die letztendliche Zerstörung des Gebäudes wesentlich beeinflusst.

Wie eingangs erwähnt gibt es bei der Berechnung der Gebäudezerstörung noch ein paar Besonderheiten.
Der erste Sonderfall betrifft den Angriff auf eine Kirche für Kirchenwelten. Gewinnt der Angreifer, so wird Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max}

für eine Kirche wie folgt berechnet:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max} = \frac{Katapulte \times Faktor_{Glaube} \times Faktor_{Pala}}{Konstante_{Kirchenstufe}}


Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Konstante_{Kirchenstufe}

ist ein konstanter Wert, der von der Kirchenstufe abhängt. (Stufe 1: 800, Stufe 2: 333, Stufe 3: 240)

Mit dem errechneten Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): \Delta{Max}

wird dann wie oben erwähnt weitergerechnet.

Verliert der Angreifer bei einem anschließenden Angriff auf die Kirche ändert sich ebenfalls die zugrundeliegende Formel.
Somit ergibt sich die folgende Formel:

Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Gebaeudestufe_{Neu} = Gebaeudestufe - RUNDEN(\frac{1}{2} \times \frac{Katapulte \times Faktor_{Glaube} \times Faktor_{Pala} \times Verlustrate_{Deff}}{Konstante_{Kirchenstufe}})


Wie man hier sieht fließt im Falle einer Niederlage die Verlustrate direkt in die Bestimmung der maximal möglichen Zerstörung der Kirche ein.
Die Faktoren für die verschiedenen Kirchenstufen sind in diesem Fall identisch.

Natürlich wirken die zuletzt gezeigten Berechnungen, vor allem im Bezug auf den Wert Fehler beim Parsen (Unbekannter Fehlernable to run external programs, passthru() is disabled.): Konstante_{Kirchenstufe} , extrem willkürlich.
Dennoch konnten diese Formeln und Werte in unzähligen Simulationen bestätigt werden, selbst wenn sie vielleicht nur einen alternativen Rechenweg zur eigentlichen Umsetzung im Spiel abbilden.


Einen weiteren Sonderfall bei der Bestimmung der Gebäudezerstörung findet sich auf Servern, auf denen die Bauernhofregel gilt.
Hier wirken Katapulte die auf den Bauernhof zielen anders als bei sonstigen Gebäuden. Leider konnte bisher kein System hinter der Zerstörung des Bauernhofes gefunden werden.
Fest scheint nur zu stehen, dass der Bauernhof auf solchen Servern, egal auf welche Stufe er ausgebaut ist und egal wieviele Katapulte der Angreifer schickt, um maximal 3 Level in einem Angriff gesenkt werden kann.
Aber vielleicht sollte diese "Berechnung", falls es denn eine ist, auch einfach ein Geheimnis bleiben. ;-)

Weblink

http://forum.die-staemme.de/showthread.php?t=27504&highlight=kampfsys