<table align="center"><tr><td bgcolor="#dddddd"><font size="+2"><a href="http://www.civforum.de/attachment.php?attachmentid=86033&stc=1&d=1173135574">Download</a></font></td></tr></table>
Bisher haben wir - so weit ich weiß - sehr brauchbare Informationen über das Kampfsystem bei Civ4 i.F.v. einer Beschreibung im CivWiki und ein einfach zu bedienendes Exceltool. Nun habe ich aber zum Spaß ein eigenes Tool in Java geschrieben. Zum einen weil das bisher existierende Tool auf Basis von Excel lief, was mir nicht auf meinen Rechner kommt. Zum anderen, weil Java viel "mächtiger" ist als Excel, das heißt, man ist z.B. hinsichtlich der Oberflächen völlig disponibel und nicht so eingeschränkt. Ferner ist Java besser lesbar und damit der Code besser auf Korrektheit überprüfbar usw usf. Zunächst mal die Links:- Die verbale Beschreibung des Kampfsystems im CivWiki. Auf diesen Artikel stützen sich alle meine Code-Abschnitte.
- Das Excel-Tool benutzt Makros (für die Simulationsläufe), welche unter OpenOffice nicht funktionieren. Griechen können diesem Link folgen (internes Forum); einen öffentlichen Link habe ich leider gegenwärtig nicht parat. Werde ich nachtragen.
Mein Java-Tool ist nun im Prinzip fertig. Die bisher ausstehenden Berechnungen zu Erstschlägen sind implementiert und auf Plausibilität getestet. Tiefer schürfende Tests stehen noch aus.
Das Interface besteht bisher aus einer Main-Klasse, in der einfach Funktionsaufrufe manuell verändert werden müssen. Eine Erweiterung um eine wie auch immer geartete Oberfläche ist aber problemlos möglich. Hier ein Beispiel:
PHP-Code:
public static void main(String[] args) {
Attacker a = new Attacker(5, 100, .1, .0, 0, 0); // Axti mit Stärke I
Defender d = new Defender(4, 100, .0, .5, 1, 2, a); // Plänkler auf Wald
BattleSimulator sim = new BattleSimulator(a, d);
sim.simulateFights(100000); // 100k Durchläufe
}
Das heißt, hier greift ein Axtkämpfer mit voller Trefferpunktezahl und Stärke I einen malinesischen Plänkler an (1 bis 2 Erstschläge aber keinerlei Beförderungen), der auf Wald steht. Ausgabe in der Konsole:
PHP-Code:
Siege für Angreifer: 23925
Siege für Verteidiger: 76075
Die Siegwahrscheinlichkeit laut Tool beträgt also rund 23,9% für den Axtkämpfer. Ingame werden allerdings 24,1% für diese Konstellation angegeben. Ich hoffe, es ist nur eine kleine Ungenauigkeit und kein Hinweis auf einen Fehler im Algorithmus.
Der Kern einer Anwendung ist also vorhanden. Jetzt müsste sich noch ein Masochist finden, der eine annehmbare Oberfläche dazu codet. Denkbar wäre eine webbasierte Variante mit Servlets (dazu wäre ein Tomcat-Server notwendig). Ferner wäre es bspw. möglich, ein kleines Offlinetool auf Basis von JFrame zu basteln.
Hab dann mal die Klassen gezippt und hochgeladen. Eine kurze Anleitung befindet sich auch darunter. Man beachte, Kenntnisse in Java sind zur Benutzung notwendig.