Da ich zu dem Thema schon seit langer Zeit nix im Forum oder sonst wo im Internet gefunden habe, möchte ich gerne die Infos zu diesem Thema sammeln, um Kriege besser vorausplanen zu können.
Natürlich spielt der Zufallsgenerator bei der Schadensberechnung auch mit, aber es geht erst mal um den erwarteten Schadenswert.
Ansonsten wäre es auch interessant zu wissen, wie groß die zufällige Abweichung der tatsächlich verursachten Schadenspunkte von dem erwarteten Schaden höchstens sein kann.
Edit:
Für den Fall, dass die angreifende Einheit volle 100 HP Gesundheit hat, gibt es eine genaue Formel zur Berechnung der Schadenspunkte (siehe unten), aber selbst bei angeschlagenen Einheit lässt sich das sehr genau ausrechnen.
(Vorläufige) Antwort:
Nur für den Flugkampf (außer bei der Schadensberechnung durch Flugeinheiten) und Stadtbombardierungungen stehen im Folgenden bisher noch keine sicheren Aussagen:
Man sollte zunächst wissen, dass alle militärischen Einheiten, die bei ihrem Angriff nie irgendwelchen Schaden bei den Hitpoints erleiden, Fernkamfeinheiten sind und die anderen Einheiten Nahkampfeinheiten sind, die bei ihrem Angriff Schaden nehmen können.
Angenommen Einheit A und Einheit B kämpfen gegeneinander. Wir wollen jetzt den Schaden an Einheit A nach dem Kampf berechnen.
Dazu muss man zunächst die folgenden Größen der beiden kämpfenden Einheiten kennen:
- Modifizierte Kampfstärke (kurz: mod. KS): Die Grundkampfstärke einer Einheit kann durch Beförderungen, dem Terrain wo der Kampf statt findet und durch Flankierung verändert werden.
Das kann man in der Regel auch beim Kampfbildschirm neben dem kleinen -Symbol ablesen, wobei die Anzeige manchmal nicht richtig ist (wenn z.B. die Einheit von dem aktuellen Feld aus nicht angreifen würde oder wenn es Beförderungen gibt, die die Einheit als Fernkampfeinheit bekommen hatte und dann zur Nahkampfeinheit geupgradet wurde, sodass die alten Beförderungen aufgrund eines Bugs nicht mehr wirken, z.B. bei dem Upgrade Streitwagenbogenschütze -> Ritter):
Achtung Spoiler:
Bei Fernkampfeinheiten gilt die Fernkampfstärke als Grundkampfstärke, falls sie angreift oder von einer anderen Fernkampfeinheit angegriffen wird, wohingegen die normale Kampfstärke zählt, falls die Einheit von einer Nahkampfeinheit angegriffen wird.
Dabei gibt es eine kleine Ausnahme bei Marine-Fernkampfeinheiten wie z.B. bei Schlachtschiffen: Bei der Verteidigung zählt immer die normale Kampfstärke als Grundkampfstärke!
Bei gewasserten Einheiten gilt dagegen eine andere Regelung:
Achtung Spoiler:
Für Stadtbombardierungen gibt es noch eine Sonderregel, die dafür sorgt, dass die Bombardierung nicht so stark ist (siehe Post)- Hitpoints (bzw. Trefferpunkte): Das kann man im Mouseover ablesen, wenn man mit der Maus über die entsprechende Einheit scrollt und eine Weile wartet.
Formel zur genauen Berechnung
Achtung Spoiler:
Damit berechnet man dann einige Hilfsgrößen:
- R = (größte mod. KS) / (kleinste mod. KS)
- m = 0,5 + ( (3 + R )^4 ) /512
- p = 1 - (100 - (Hitpoints von Einheit B) ) / 300
- min_damage = 22,45 / m . . . . falls Einheit A die größte mod. KS der beiden kämpfenden Einheiten besitzt
min_damage = 22,45 * m . . . . falls Einheit A die kleinste mod. KS der beiden kämpfenden Einheiten besitzt
Jetzt lässt sich, je nach Fall, bestimmen wie groß der maximal und der minimal mögliche Hitpointschaden an der Einheit A ist. Alle Werte dazwischen sind gleich wahrscheinlich, d.h. der tatsächliche Schaden wird im Spiel mit einem Zufallsgenerator bestimmt.
- Falls Einheit A angegriffen wird, dann liegt der Hitpointschaden zwischen
min_damage * p und (5/3) * min_damage * p.- Falls Einheit A angreift, dann liegt der Hitpointschaden bei Nahkampfeinheiten zwischen
min_damage * p und (5/3) * min_damage * p.
Bei Fernkampfeinheiten entsteht kein Schaden.
Anmerkungen:
- Der Faktor p ist bei Einheiten mit voller Hitpointzahl gleich 1 und in diesem Fall ist die Formel zur Schadensberechnung laut den Testreihen von Asenfürst exakt (wobei Asenfürst die Zahl 22,45 bei der Berechnung des Wertes min_damage statistisch ermittelt hat).
Bei angeschlagenen Einheiten ist die Formel nicht ganz so exakt, denn der Wert p wurde von Asenfürst dadurch vermutet, dass Einheiten mit nur einem Hitpoint anscheinend eine um 33% reduzierte mod. KS haben und Einheiten mit Hitpoints zwischen 1 und 100 demnach pro 3 Hitpointschaden eine um etwa 1% reduzierte mod. KS haben müssten.
Im Spiel liegt die Ungenauigkeit dieser Formel bei wenigen Hitpoints (ich persönlich lag bisher damit nie um mehr als 1 Hitpoint daneben ).- Da im Spiel nur ganzzahlige Werte für die Hitpointschäden entstehen, wird das Spiel vermutlich zuerst den minimalen und maximalen Schaden abrunden und eigentlich nur alle ganzzahligen Schadenspunkte dazwischen mit gleich großer Wahrscheinlichkeit durch den Zufallsgenerator bestimmen.
- Vermutlich ist bei Stadtbombardierungen der minimale Schaden zwar auch gleich min_damage, aber der maximal mögliche Schaden geringer (etwa 1,5 * min_damage oder 1,7 * min_damage ).
- Der bei der Kampfanzeige vorausgesagte Schaden ist gleich dem Durchschnitt des minimalen und maximalen Schadens, d.h. er ist gleich (4/3) * min_damage.
Schadenskalkulator
Damit man die obige Formel nicht jedes mal per Hand ausrechnen muss, habe ich Tabellen mit dem kostenlosen Programm "Calc" von Open Office erstellt, in denen man die nötigen Werte eintragen und dann die Schadenswerte ablesen kann.
Hier die ZIP-komprimierte .ods-Datei, die mit Calc geöffnet werden kann: Schadenskalkulator.zip
Und hier eine kurze Anleitung dazu:
Achtung Spoiler:
Faustregel
Wenn man keine Zeit für Berechnungen hat, kann man sich auch die folgende grobe Regel merken:
Verhältnis der modifizierten
Kampfstärken
angerichteter
Hitpointschaden
1,0 : 1 30 vs. 30 1,5 : 1 39 vs. 23 2,0 : 1 51 vs. 17 2,5 : 1 68 vs. 13 3,0 : 1 90 vs. 9 3,2 : 1 101 vs. 8
AnwendungenZ.B. kann man jetzt mit diesen Formeln durch den maximal oder minimal möglichen Schaden prüfen, ob eine Einheit durch einen Kampf überhaupt vernichtet werden kann oder nicht.
Außerdem kann man die Wahrscheinlichkeit berechnen, ob eine Einheit überlebt, falls sie mehrere Kämpfe austragen muss, ohne dass sie sich zwischendurch heilt.
Man berechnet das, indem man die Tatsache verwendet, dass alle möglichen Schadenspunkte bei Kämpfen gleichwahrscheinlich sind. Daher ist die Überlebenswahrscheinlichkeit gleich der Anzahl aller möglichen Schadensverläufe, die zum Tod der Einheit führen, geteilt durch die Gesamtanzahl aller möglichen Schadensverläufe.
Da das Auszählen per Hand aber umständlich ist, sollte man das vom Computer ausrechnen lassen.
Z.B. mit einer Matlab-Funktion (wobei es zu Matlab auch die kostenlose Alternative Octave gibt).
Hier ein Funktionscode für Matlab, mit dem das gehen sollte:
Achtung Spoiler:
Anmerkung: Natürlich kann man mit der Schadensformel auch komplizierterer zu berechnende Wahrscheinlichkeiten ausrechnen und damit z.B. mehr als ein Zug im Voraus planen, aber dann besteht die Gefahr, dass die Rechnungen sehr kompliziert oder die Rechenzeiten mit dem Computer sehr lang werden.
Daher sollte man sich gegebenenfalls überlegen, ob man für Wahrscheinlichkeiten nur eine obere bzw. untere Abschätzung ausrechnen will.
Wenn z.B. eine Wahrscheinlichkeit monoton steigend oder fallend von einer Größe (wie etwa Hitpoints) abhängt, kann man dazu bei der Rechnung je nach Fall den größt- oder kleinstmöglichen Wert für diese Größe nehmen.
Denn wenn man eine Größe nicht als variabel, sondern als festen Wert annimmt, kann das die Rechnung erheblich vereinfachen.
Quellen:
Achtung Spoiler: