Splittermond Forum

Regeln => Kampfregeln => Thema gestartet von: 4 Port USB Hub am 20 Jun 2014, 19:28:44

Titel: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 20 Jun 2014, 19:28:44
Hallo,

ich habe ein kleines python-Programm geschrieben welches beliebig viele Kämpfe zwischen zwei Kontrahenten auswürfelt.
Ich wollte sehen wie sich das Verändern bestimmter Stellschrauben auf den Erfolg auswirkt.

Ein paar (teilweise eigentlich selbstverständliche) Erkenntnisse:
Aktive Parade lohnt sich mehr für Kämpfer mit langsamer Waffe. Bei 10 Ticks Waffengeschwindigkeit sind die 3 Extra-Ticks nur 30% weniger Schaden pro Tick, bei 6 Ticks schon 50%.
Genau die gleiche Argumentation gilt für Rüstungen.

Nach den Schnellstarterregeln lohnt sich der Risikowurf beim Angriff eigentlich immer, aber im GRW wird der Patzer ja verschärft.

Eine Rüstung kann entgegen der initialen Annahme von Nutzen von Rüstungen (http://forum.splittermond.de/index.php?topic=1645.0) durchaus die Gewinnwahrscheinlichkeit erhöhen.

Insgesamt aber scheint alles sehr ausgewogen zu sein, es gibt keine "Dies ist immer die bessere Wahl" Option.

Ich habe den Quellcode mal angehängt. (Das ist mein erstes python-script, daher bitte ich alle professionellen Programmier um Nachsicht beim Betrachten ;) )
Titel: Re: Python-Kampfsimulator
Beitrag von: Eyb in the box am 20 Jun 2014, 19:33:39
Noch nicht ausprobiert, aber klingt sehr vielversprechend! :)
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 20 Jun 2014, 22:37:41
Ich habe spasseshalber mal Cederion aus dem 1.1 Schnellstarter gegen Wulfhard aus dem GRT-Schnellstarter antreten lassen, und zwar 500.000 mal:
Cederion gewann ~50.7%, Wulfhard den Rest. Fand ich sehr beeindruckend, dass die beiden so nahe zusammenliegen. :)

Tiai gewann 53% der Kämpfe gegen Cederion, wenn sie die Kettensichel benutzt. Mit der Maira nur 44.5% :) Gegen Wulfhard ist sie sogar in 57% der Fälle siegreich. Und das noch ganz ohne zaubern. :) Der Verteidigungsbonus aus der Ausweichen-Meisterschaft ist hier wohl ein wichtiger Faktor, mit dessen Hilfe sie da locker mithalten kann.
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 22 Jun 2014, 15:19:59
Der Kampfsimulator hat nun auch ein log welches den Kampf einigermaßen anschaulich darstellt.
Auch einige Archetypen aus den Schnellstarter und ein paar Zauber habe ich nun eingebaut.

Sorry but you are not allowed to view spoiler contents.

Ich finde die Resultate schon sehr interessant die man so teilweise rauskriegt. :)
Titel: Re: Python-Kampfsimulator
Beitrag von: SeldomFound am 22 Jun 2014, 15:30:25
Sorry, wie benutze ich jetzt eigentlich diesen Kampfsimulator?
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 22 Jun 2014, 15:36:26
Das ist in python geschrieben, das müsstest du von https://www.python.org/downloads/ herunterladen und dann z.b. per python beispielkampf.py ausführen. Ohne grundlegende Code-Erfahrung ist es allerdings schwer, damit viel rumzuspielen.
Titel: Re: Python-Kampfsimulator
Beitrag von: Alagos am 22 Jun 2014, 18:35:22
Ich habs auch versucht und bin gescheitert :D. Wär cool, wenn es sowas für "normale" Endbenutzer geben würde. Aber natürlich trotzdem toll, dass es das überhaupt gibt :).
Titel: Re: Python-Kampfsimulator
Beitrag von: maggus am 22 Jun 2014, 19:39:40
Der Kampfsimulator hat nun auch ein log welches den Kampf einigermaßen anschaulich darstellt.
Auch einige Archetypen aus den Schnellstarter und ein paar Zauber habe ich nun eingebaut.

Sorry but you are not allowed to view spoiler contents.

Ich finde die Resultate schon sehr interessant die man so teilweise rauskriegt. :)

Wenn ich das Log aus Deinem Spoiler richtig lese, dann kämpfen Cederion und Sialids bis zum Tick 202 :o Das ist... sehr lang.

Tolles Tool übrigens :)
Titel: Re: Python-Kampfsimulator
Beitrag von: Grimrokh am 22 Jun 2014, 20:13:50
Zitat
Wenn ich das Log aus Deinem Spoiler richtig lese, dann kämpfen Cederion und Sialids bis zum Tick 202 :o Das ist... sehr lang.
Ach, das ginge ja noch. Aber wird hier überhaupt die Aktive Abwehr berücksichtigt? Ich halte diese nämlich für den wirklich zeitaufwändigen Faktor, weil bei (fast) jedem Einsatz ein paar Schadenspunkte weniger verursacht werden als der Angriff eigentlich verursachen würde. Und wie sieht es mit Splitterpunkten aus? Damit kann man in der Praxis Schaden oft komplett abwenden (wenn man die VTD um 3 erhöht, nachdem man das Angriffsergebnis kennt) oder jeweils 5 Schadenspunkte komplett ignorieren usw. Schützende Zauber können den Kampf dann natürlich noch zusätzlich verlängern. Aber letztlich sind 200 Ticks auch nur 1-2 Minuten ;)
Titel: Re: Python-Kampfsimulator
Beitrag von: SeldomFound am 22 Jun 2014, 21:41:47
Ich habe mal von Hand gerechnet (Ich habe zuviel Zeit) und habe dabei die Aktive Abwehr beachtet:

Sorry but you are not allowed to view spoiler contents.


Zugegeben, in diesem Falle war Cederions Niederlage auch einfach Würfelpech (Ein und schließlich sogar zwei Patzer, dazu hat Sialdis extrem gut Schaden gewürfelt)!
Aber gegen Ende merkte man dann schon wie heftig eine VTD von 24 ist. Sie hat Cederion deutlich länger überleben lassen, als man glauben würde.


Übrigens: Dies sind die Schnellstarterregeln, wo die Boni durch Rüstungen noch nicht begrenzt sind und es keine Gelegenheitsangriff gibt, mit denen Cederion Sialdis hätte treffen können, während sie ihre Magische Rüstung zauberte!
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 22 Jun 2014, 22:47:13
Zitat
Wenn ich das Log aus Deinem Spoiler richtig lese, dann kämpfen Cederion und Sialids bis zum Tick 202 :o Das ist... sehr lang.
Ach, das ginge ja noch. Aber wird hier überhaupt die Aktive Abwehr berücksichtigt? Ich halte diese nämlich für den wirklich zeitaufwändigen Faktor, weil bei (fast) jedem Einsatz ein paar Schadenspunkte weniger verursacht werden als der Angriff eigentlich verursachen würde. Und wie sieht es mit Splitterpunkten aus? Damit kann man in der Praxis Schaden oft komplett abwenden (wenn man die VTD um 3 erhöht, nachdem man das Angriffsergebnis kennt) oder jeweils 5 Schadenspunkte komplett ignorieren usw. Schützende Zauber können den Kampf dann natürlich noch zusätzlich verlängern. Aber letztlich sind 200 Ticks auch nur 1-2 Minuten ;)
Aktive Abwehr wird berücksichtigt, ja.

Und gerade wenn beide Kontrahenten nur noch sehr wenig LP haben, dauert es mitunter sehr lange. Mit -8 auf die Angriffe wird es schwer, noch zu treffen.
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 04 Jul 2014, 17:09:39
Ich habe den Simulator mal genutzt, um Zwei identische Kämpfer mit allen Waffen auszurüsten und jeweils 200 mal pro Kombination gegeneinander antreten zu lassen. Das Ganze in zwei verschiedenen Kategorien (Einhandwaffen und Zweihandwaffen). Die Siege pro Waffe habe ich addiert und dann sortiert:

Einhandwaffen:
Vangarasstab5561
Speer5175
Streithammer5127
Breitschwert5030
Falchion4778
Streitkolben4765
Zackenspieß4666
Kriegsbeil4572
Anderthalbhander4529
Langschwert4366
Sabel4363
Valkyrja-Speer4299
FulnischesHalbschwert4289
Morgenstern4155
Klingenstab4102
Khopesh3950
Reitersabel3856
Schlagstock3401
Wurfspeer(NK)3381
Kurzschwert3368
Keule3364
Wurfhammer(NK)3350
Kettensichel3343
Krummdolch3343
Skavona3327
Maira2987
Katar2909
Wurfbeil(NK)2847
Dolch2827
Liandia2766
Schlagring2243
Scheibendolch2160
Dornenhandschuh2091
Stuhlbein,Flasche,Nudelholz1537
Wurfdolch(NK)1494
Peitsche1279

Zweihandwaffen:

Sturmsense2402
Kriegsflegel2381
Vangarasstab2282
Hellebarde2276
Streitaxt2187
Lanze2169
Glefe2158
Pfauenfeder2104
Speer2103
Zweihander2073
Kriegshammer2011
Spitzhacke2011
FulnischesDoppelschwert1984
StreithammerZH1950
Doppelaxt1882
Zackenspieß1881
AnderthalbhanderZH1838
Klingenstab1663
Kettensichel1419
Kampfstab1226
Titel: Re: Python-Kampfsimulator
Beitrag von: cyberware am 04 Jul 2014, 18:02:08
Hast du den Einhandwaffenkämpfern ein Schild gegeben?
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 04 Jul 2014, 18:04:52
Hast du den Einhandwaffenkämpfern ein Schild gegeben?
Nein. Ich habe Einhandwaffenkämpfern nur unter sich antreten lassen, und genauso die Zweihandkämpfer.
Titel: Re: Python-Kampfsimulator
Beitrag von: Alagos am 05 Jul 2014, 10:51:40
Oha. Da scheint es ja eine durchaus große Unwucht zwischen den verschiedenen Waffen zu geben. Gerade die eher "forschrittlichen" Waffen wie die Maira, die Skavona und die Kettensichel schneiden da gegen die "wuchtigen" Waffen deutlich schlechter ab.

Edit: Wobei die Waffen, die weiter unten stehen auch oft Durchdringung haben. Das sollte das zumindest etwas entschärfen ;).
Titel: Re: Python-Kampfsimulator
Beitrag von: SeldomFound am 05 Jul 2014, 11:07:23
Ich frage mich aber, ob der Kampfsimulator das Merkmal "Wuchtig" beachtet... Denn dann werden diese Waffen wieder sehr stark.
Titel: Re: Python-Kampfsimulator
Beitrag von: Alagos am 05 Jul 2014, 11:10:09
Ohne den Simulatur zu kenne würde ich mal behaupten dass das so ist, weil ich mir sonst die hohen Ausschläge kaum erklären kann.
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 05 Jul 2014, 12:19:48
Ich frage mich aber, ob der Kampfsimulator das Merkmal "Wuchtig" beachtet... Denn dann werden diese Waffen wieder sehr stark.
Ja, die Merkmale werden beachtet, abgesehen von Primitiv, Improvisiert, Lange waffe und ähnliches.
Wie gut "Wuchtig" ist, hängt sicher auch vom Kämpfer ab. Schlechtere Kämpfer kriegen evtl. nicht die Erfolgsgrade zusammen, um daraus Vorteile zu erhalten, da werden die angesprochenen "fortschrittlichen" (wieso eigentlich?) Waffen besser geeignet sein.
Titel: Re: Python-Kampfsimulator
Beitrag von: Alagos am 05 Jul 2014, 12:28:48
Mit "Fortschrittlich" meinte ich Waffen, die auf der Erde erst später aufgetreten sind ;). Halt Waffen mit schmaleren Klingen, die nicht mehr auf pure Körperkraft setzen sondern eher auf das Geschick des Kämpfer.
Titel: Re: Python-Kampfsimulator
Beitrag von: Quendan am 06 Jul 2014, 18:14:24
Oha. Da scheint es ja eine durchaus große Unwucht zwischen den verschiedenen Waffen zu geben.

Nein, das ist eine vorschnelle Reaktion, denn da trügt die Liste.

Wie 4 Port USB Hub anspricht geht es da um zwei identische Kämpfer, die eben ganz bestimmte Werte haben. Die Waffen sind aber so gebalancet, dass je nach Situation und Gegner unterschiedliche Waffen gut sind. Die Waffe, die gegen einen Gegner extrem gut ist, kann gegen einen anderen total schlecht sein. Das hängt z.B. von Ausrüstung des Gegners ab (Rüstung ja/nein, Zauber, etc.), aber auch von den eigenen Fähigkeiten.

Beispiel:
- Gegner ist schwer gerüstet: Waffen mit Durchdringung werden stärker.
- Hohe eigene Werte: Waffen mit Wuchtig werden stärker.
- etc.

Eine solche Simulation ist somit immer eine Momentaufnahme, die das Gesamtbild einengt. Du würdest bei anderen Werten der Abenteurer schon völlig andere Ergebnisse erhalten - und dann könnte man denken, dass andere Waffen stärker sind. Wir haben uns ja im Betatest und auch intern extra die Waffen in unterschiedlichen Situationen angeschaut, um da eine Balance hinzukriegen - und das ist auch ganz gut gelungen. :)
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 07 Jul 2014, 13:43:26
Hallo,
der Einwand ist natürlich berechtigt, und wie ich selbst schon schrieb, hängt die Nützlichkeit von Merkmalen wie "Wuchtig" stark von der Situation bzw. den Fertigkeitswerten ab.
Ich habe obigen Algorithmus auch mit unterschiedlichen Charakterwerten durchlaufen lassen, und ich habe im Moment vor, das ganze automatisiert über eine ganze Reihe von Charakteren mit unterschiedlichen Waffen, Rüstungen und Manövern laufen zu lassen. Eventuell importiere ich auch ein paar Testkreaturen aus dem GRW als Gegner, um so die häufigsten Spieltischkämpfe abzudecken.

Zu Wuchtig:
Wuchtig bringt halt nahezu immer etwas, wenn man trifft - 1 EG hat man dann meist doch über. Dass man mit 0 EG durchkommt ist eher selten, weil in diesem Bereich der Gegner doch eher die Aktive Abwehr in Erwägung zieht um den Angriff komplett zu negieren.
Mit 1 EG sind das schon +1 SP, und ~3 EG sind durchaus drin bei normalen Angriffen.

Durchdringung bringt überhaupt erst was wenn man einen Gegner mit SR vor sich hat, und dann ist es im Prinzip ein fester Schadensbonus von 1-3 SP.
Scharf bringt generell eher wenig.
Scharf(2) auf dem W6 sind +1/6 TP, auf dem W10 gar 1/10 (0,1) TP.
Scharf(3) ist schon deutlich besser, aber immer noch nur 1/2 TP auf dem W6 bzw. 0,3 TP auf dem W10.

Generell sind Waffen wie der Vangarasstab mit hoher Schadensbandbreite recht weit oben dabei. Ich vermute, weil man da schneller genug Wundstufen erreicht um dem Gegner für den Rest des Kampfes überlegen zu sein.

Es gibt noch ein paar kleine Dinge (siehe andere Threads) bei denen ich noch nicht so ganz überzeugt bin, aber im Großen und Ganzen ist das Kampfsystem sehr gut gelungen und es macht viel Spaß, damit "herumzutheorisieren".
Titel: Re: Python-Kampfsimulator
Beitrag von: sirbs am 07 Jul 2014, 17:46:58
Tolle Arbeit, USB Hub! Vielen Dank!

Ist das Merkmal Defensiv, z.B. beim Kampfstab (Def. 2), berücksichtigt?
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 07 Jul 2014, 18:32:52
Ja, Defensiv wird berücksichtigt, allerdings war da noch ein bug drin.
Titel: Re: Python-Kampfsimulator
Beitrag von: 4 Port USB Hub am 07 Jul 2014, 19:24:20
Habe es mal auf github gestellt falls wer interessiert ist.
https://github.com/zaboron/Splittermond
Titel: Re: Python-Kampfsimulator
Beitrag von: Maxvonthane am 08 Jul 2014, 16:16:54
Coole Sache, hab sowas öfters mal für andere Versuche angedachte gehabt, aber es dann wg der Komplexität sein lassen. Bei Splittermond kann man aber in der recht viele Aktionen automatisiert ablaufen lassen.