Ergebnis 1 bis 15 von 15

Thema: [Beta] Civ4 Kampfberechnung - auf Basis von Java

  1. #1
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461

    [Beta] Civ4 Kampfberechnung - auf Basis von Java

    <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(5100.1.000); // Axti mit Stärke I
         
    Defender d = new Defender(4100.0.512a); // Plänkler auf Wald
         
    BattleSimulator sim = new BattleSimulator(ad);
         
    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.
    Angehängte Dateien Angehängte Dateien
    Geändert von Ζοκακλες (06. März 2007 um 00:03 Uhr)
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  2. #2
    FFH2 Übersetzungsteam Avatar von Kontrollator
    Registriert seit
    10.08.06
    Ort
    Bremen
    Beiträge
    7.744
    hmm kann ich das als nicht programmierer jetzt schon nutzen?

    und was ist der sinn dieses programms? soll ich es kampfberechnung von civ 4 ersetzen

  3. #3
    Brewed in Bremen, Germany Avatar von jack-itb
    Registriert seit
    18.04.04
    Ort
    Bremen
    Beiträge
    3.973
    Zitat Zitat von zocka Beitrag anzeigen
    Ferner wäre es bspw. möglich, ein kleines Offlinetool auf Basis von JFrame zu basteln.
    Java Webstart ist übrigens eine gute Sache. Damit lässt sich das (JFrame-)Tool zwar offline nutzen, bei Online-Verbindung wird aber überprüft, ob es eine neue Version gibt, die dann ggfs. automatisch vor dem Start gezogen wird.

    edit: Wieso übergibst du dem Defender den Attacker?
    Um Rekursion zu verstehen muss man erstmal Rekursion verstehen

  4. #4
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461
    Zitat Zitat von Kontrollator Beitrag anzeigen
    hmm kann ich das als nicht programmierer jetzt schon nutzen?
    Im Augenblick leider noch nicht. Theoretisch wäre das über die Kommandozeile zwar bereits möglich, aber wegen der Fülle der Parameter wäre das ziemlich grausam.

    Zitat Zitat von Kontrollator
    und was ist der sinn dieses programms? soll ich es kampfberechnung von civ 4 ersetzen
    Sinn des ganzen ist es - neben der Bekämpfung meiner Langeweile - Routinen bereitzustellen, mit denen man ein Tool schaffen kann, das im Vergleich zum bereits vorhandenen Excel-Sheet unabhängig von Excel, leichter bedienbar und besser erweiterbar ist. Ich habe ja schon erwähnt, dass dies bis hierher nur die "Kernroutine" darstellt.

    Zitat Zitat von jack-itb Beitrag anzeigen
    Java Webstart ist übrigens eine gute Sache. Damit lässt sich das (JFrame-)Tool zwar offline nutzen, bei Online-Verbindung wird aber überprüft, ob es eine neue Version gibt, die dann ggfs. automatisch vor dem Start gezogen wird.
    Wow, klingt interessant. Habe ich aber null Ahnung von. Interesse mitzumachen, Jack?

    Zitat Zitat von Jack
    Wieso übergibst du dem Defender den Attacker?
    Eine simple Referenzierung, die die Berechnung erfordert.
    Geändert von Ζοκακλες (05. März 2007 um 21:34 Uhr)
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  5. #5
    Brewed in Bremen, Germany Avatar von jack-itb
    Registriert seit
    18.04.04
    Ort
    Bremen
    Beiträge
    3.973
    Zitat Zitat von zocka Beitrag anzeigen
    Wow, klingt interessant. Habe ich aber null Ahnung von. Interesse mitzumachen, Jack?
    Ich empfinde das GUI basteln auch immer als lästige Arbeit nebenbei Und dazu würde dann wohl noch das stumpfe Abtippen von Einheitenwerten kommen Nicht gerade etwas was ich mir im Moment herbeigesehnt habe

    Wenn erstmal ein JFrame fertig ist, ist das Webstart-Ding aber ne Kleinigkeit. Eigentlich muss man nur die jar und ein XML-Dokument (.jnlp) auf einen Webserver legen und die jnlp-Datei verlinken. Das können wir dann natürlich gerne auf diesem Server machen.

    Kannst mir aber trotzdem gerne mal den Code schicken.
    Um Rekursion zu verstehen muss man erstmal Rekursion verstehen

  6. #6
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461
    Brrr, ich grusel mich ganz generell vor GUIs. Hab Dich mal bei ICQ geadded, Jack. Muss Dich mal zu ein paar Einzelheiten interviewen...
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  7. #7
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461
    Okay, ich hab da mal was hochgeladen.

    Wer Lust hat, kann mal testen, ob die Berechnungen auch korrekt sind. Wer Lust hat, eine wie auch immer geartete Oberfläche zu erstellen, der möge sich bei mir melden. Wer Anregungen hat, ebenso.
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  8. #8
    zack und weg
    Registriert seit
    24.02.06
    Beiträge
    1.086
    ich verstehe trotzdem nich (was kontrollator auch sagt), wozu muss ich überhaupt außerhalb des spiels kampfberechnungen anstellen?

  9. #9
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Könnte man mittels Java nicht die Einheitenwerte aus den XMLs direkt auslesen?
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  10. #10
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461
    Zitat Zitat von DragonGreen Beitrag anzeigen
    ich verstehe trotzdem nich (was kontrollator auch sagt), wozu muss ich überhaupt außerhalb des spiels kampfberechnungen anstellen?
    Du kannst ja immer nur ablesen, mit welcher Wahrscheinlichkeit Du Angriffe gewinnst. Wirst Du angegriffen, kannst Du es ohne Berechnung nur überschlagen...

    Der Aufwand lohnt natürlich nur in ganz brenzligen Situationen oder in Spielen wie DGs, wo ohnehin jeder Zug akribisch geplant wird.

    Zitat Zitat von Pippin
    Könnte man mittels Java nicht die Einheitenwerte aus den XMLs direkt auslesen?
    Grundsätzlich wäre das möglich.
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  11. #11
    the cosmos rocks Avatar von Caesium
    Registriert seit
    08.12.03
    Ort
    Faerûn
    Beiträge
    9.104
    Wär ja glatt mal Zeit für ein Update

  12. #12
    sehr stylisch Avatar von Polly
    Registriert seit
    11.08.02
    Ort
    Kall
    Beiträge
    14.715
    Dieser Thread muss wohl in meine Inaktivität gefallen sein.

  13. #13
    w00t4n
    Registriert seit
    03.06.03
    Beiträge
    9.461
    Zitat Zitat von Caesium Beitrag anzeigen
    Wär ja glatt mal Zeit für ein Update
    Was gibt's denn für Wünsche?

    Jack hat mal sowas wie eine Beta-GUI drumherum geknetet. Ich verfolge das aber (gegenwärtig) nicht weiter, weil da das Excel-Tool von Haus aus einfach geeigneter ist, denn da brauch man nichts mehr coden. Oberflächen in Java sind für mich der blanke Hass.

    Die Idee des Java-Tools besteht v.a. darin, ein Tool zu schaffen, was erweiterbarer und mächtiger ist als so ein Excel-Sheet. Als eventuell nächsten Schritt habe ich vorgesehen, den Simulator auf eine Abfolge von Kämpfen einzustellen. Bsp.: Mit welcher Wahrscheinlichkeit kloppt mein Bogi den Barbwarrior weg und überlebt anschließend den Gegenschlag des zweiten Barbwarriors. Das sind ja leider keine unabhängigen Ereignisse wegen der Hitpoints.

    Zitat Zitat von Polly Beitrag anzeigen
    Dieser Thread muss wohl in meine Inaktivität gefallen sein.
    Was heißt das?
    Er ist wieder daaa, er war lange weheeeg. Jetzt isser wieder daaa, wie gefaellt Euch seine neue Frisuuur!

  14. #14
    zack und weg
    Registriert seit
    24.02.06
    Beiträge
    1.086
    Zitat Zitat von Ζοκακλες Beitrag anzeigen
    Mit welcher Wahrscheinlichkeit kloppt mein Bogi den Barbwarrior weg und überlebt anschließend den Gegenschlag des zweiten Barbwarriors. Das sind ja leider keine unabhängigen Ereignisse wegen der Hitpoints.
    Das sollte ja mit Java gar kein Problem sein. Wär sogar möglich, das Tool gibt dir die beste Angriffsreihenfolge aus, womit man am wenigsten verliert...wäre mal echt interessant...schließlich kann man dann schauen, ob Kattas wirklich was bringen (bzw. beweisen, dass es das Tool rausfindet )

  15. #15
    Brewed in Bremen, Germany Avatar von jack-itb
    Registriert seit
    18.04.04
    Ort
    Bremen
    Beiträge
    3.973
    Achja, da war noch was

    Ich bin auch kein begeisterter GUI-Bastler, daher hab ich mir das auch nicht mehr weiter angeguckt. Glaube auch nicht, dass mich in nächster Zeit der Ehrgeiz packt.
    Um Rekursion zu verstehen muss man erstmal Rekursion verstehen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •