Ich habe ein kleines Skript [1] geschrieben, das die Chancen im Kampf prüft und damit das Balancing von Waffen und Rüstungen erleichtert.
Die PyQt4-Version sieht so aus:
Die Quellen der PyQt4-Version gibt es unter https://hg.sr.ht/~arnebab/ews/browse/Skripte/1w6-balance/1w6-balance.py?rev=tip [2].
GNU/Linux Nutzer können sich die Quellen dort direkt runterladen, PyQt4 installeiren (deine interne Paketverwaltung hat es) und die GUI dann mit
./1w6-balance.py
Das Befehlszeilen-Skript findest du im Repository des EWS: battle_probability_tree.py [1]
Es baut dafür einen vollständigen Wahrscheinlichkeitsbaum auf, in dem es die Chancen für die verschiedenen Ausgänge von Nahkämpfen vollständig durchrechnet.
Die Zielsetzung ist es, Aussagen wie "ein legendärer Schwertkämpfer besiegt eine Stadtwache fast immer" überprüfen zu können und auch Zahlenwerte dafür zu haben, um auf stabiler Grundlage arbeiten zu können, wenn wir an Welten oder Ausrüstung basteln.
In der Ausgabe wird für jede Runde die Wahrscheinlichkeit von Sieg (Win) oder Niederlage (Lose) des Ersten über den Zweiten geprüft und außerdem die Wahrscheinlichkeit, dass der Kampf noch nicht beendet ist (Draw).
Sieg oder Niederlage heißt in der vereinfachten Version schlicht: Die Fertigkeit des Verlierers ist unter 3 gesunken oder er hat 5 Wunden oder eine kritische Wunde bekommen. Der Kampf endet also, sobald ein Fortsetzen für den Verlierer nicht mehr sinnvoll wäre.
Die Ausgabe des Befehlszeilen-Skriptes ohne irgendwelche Parameter sieht wie folgt aus:
$ python battle_probability_tree.py
Test battle length
Average char (12) vs. average char (12)
Probs after 0 turns: Win: 0 Lose: 0 Draw: 1
Probs after 1 turns: Win: 0.0500257201646 Lose: 0.0500257201646 Draw: 0.899948559671
Probs after 2 turns: Win: 0.0825998323426 Lose: 0.0825998323426 Draw: 0.834800335315
Probs after 3 turns: Win: 0.13314465264 Lose: 0.13314465264 Draw: 0.73371069472
Probs after 4 turns: Win: 0.228099438234 Lose: 0.228099438234 Draw: 0.543801123531
Probs after 5 turns: Win: 0.319366335834 Lose: 0.319366335834 Draw: 0.361267328333
Probs after 6 turns: Win: 0.387555447652 Lose: 0.387555447652 Draw: 0.224889104696
Very good char (15) vs. average char (12)
Probs after 0 turns: Win: 0 Lose: 0 Draw: 1
Probs after 1 turns: Win: 0.10853909465 Lose: 0.0216049382716 Draw: 0.869855967078
Probs after 2 turns: Win: 0.236525491541 Lose: 0.0262768394681 Draw: 0.737197668991
Probs after 3 turns: Win: 0.394982229404 Lose: 0.0330739949555 Draw: 0.571943775641
Probs after 4 turns: Win: 0.583043117362 Lose: 0.0436719898117 Draw: 0.373284892826
Probs after 5 turns: Win: 0.705475323711 Lose: 0.0629808921072 Draw: 0.231543784181
Probs after 6 turns: Win: 0.774199931003 Lose: 0.084538802759 Draw: 0.141261266238
Exceptional char (18) vs. average char (12)
Probs after 0 turns: Win: 0 Lose: 0 Draw: 1
Probs after 1 turns: Win: 0.248671124829 Lose: 0.00835905349794 Draw: 0.742969821674
Probs after 2 turns: Win: 0.489134421201 Lose: 0.00835905349794 Draw: 0.502506525301
Probs after 3 turns: Win: 0.694089138364 Lose: 0.00880498875934 Draw: 0.297105872877
Probs after 4 turns: Win: 0.852631396031 Lose: 0.00953491750495 Draw: 0.137833686464
Probs after 5 turns: Win: 0.922635958899 Lose: 0.0106816159868 Draw: 0.0666824251146
Probs after 6 turns: Win: 0.951628366665 Lose: 0.0127371423598 Draw: 0.0356344909755
Legend (24, weapon 24, armor 10) vs. Space Marine (15, weapon 36, armor 36, wound threshold 5)
Probs after 0 turns: Win: 0 Lose: 0 Draw: 1
Probs after 1 turns: Win: 0.00437242798354 Lose: 0.0545267489712 Draw: 0.941100823045
Probs after 2 turns: Win: 0.00437242798354 Lose: 0.0777749199817 Draw: 0.917852652035
Probs after 3 turns: Win: 0.00437242798354 Lose: 0.0984399608799 Draw: 0.897187611137
Probs after 4 turns: Win: 0.00517618312757 Lose: 0.116808886123 Draw: 0.87801493075
Probs after 5 turns: Win: 0.010894090607 Lose: 0.133136819672 Draw: 0.855969089721
Probs after 6 turns: Win: 0.0240620171956 Lose: 0.147650538382 Draw: 0.828287444422
Probs after 6 turns:
Very good char (15) vs. average char (12) without critical hits
Win: 0.791038330532 Lose: 0.0631941594366 Draw: 0.145767510032
Very good char (15) vs. average char (12)
Win: 0.774199931003 Lose: 0.084538802759 Draw: 0.141261266238
Exceptional char (18) vs. average char (12)
Win: 0.951628366665 Lose: 0.0127371423598 Draw: 0.0356344909755
Very good char (15) vs. average char in strong armor (12, armor 10)
Win: 0.113604807296 Lose: 0.134066609421 Draw: 0.752328583283
Very good char (15) vs. average char with powerful weapon (12, weapon 14)
Win: 0.548245836441 Lose: 0.448216768079 Draw: 0.00353739548028
Very good char (15) vs. sturdy char (12, wound threshold 10)
Win: 0.127951789127 Lose: 0.129439196773 Draw: 0.7426090141
Exceptional char (18) vs. average char with powerful weapon (12, weapon 14) and strong armor (armor 10)
Win: 0.355243806909 Lose: 0.40117721942 Draw: 0.243578973671
Alternativ zu dieser Standardausgabe kannst du mit dem Skript auch direkt Charaktere gegeneinander antreten lassen und so verschiedene Fertigkeitswerte, Waffen und Rüstungen vergleichen.
Das Ergebnis war erstmal: Die Beschreibungen der Fertigkeitswerte passen. "Sehr gut vs. durchschnitt" hat nach 6 Runden eine 77% Chance den Kampf für sich entschieden zu haben (und kritische Treffer erhöhen die Chancen des Schwächeren). Bei "überragend vs. durchschnitt" sind das schon 95%.
Die zweite für mich interessante Frage daran war: "Wann gleichen sich die Werte aus?", also wann stehen die Chancen 50/50.
Damit können wir z.B. herausfinden, wie viel eine Rüstung bringt, und damit können wir die Kosten für Rüstungen und Waffen prüfen, indem wir uns an den Kosten für die Fertigkeitswerte orientieren, mit denen ein Char gleichstark wird (Chance 50/50).
Das Ergebnis davon war, dass seit Version 2.4.0 des 1w6-Systems Waffen und Rüstungen ein Dreieck je 9 Punkte Schaden+Schutz kosten statt ein Dreieck je 18 Punkte und damit die Chancen von sehr starken Waffen oder Rüstungen im Vergleich zu kämpfern, die die gleichen Punkte in ihre Fertigkeit gesteckt haben, wieder ausgeglichen sind.
Die Verwendung sagt dir das Skript über
./battle_probability_tree.py --help
Die erwähnten charfiles sehen so aus: Sskreszta charfile [3]
Viel Spaß beim Testen!
Anhang | Größe |
---|---|
v0.1-main-window.png [4] | 106.19 KB |
Links:
[1] https://hg.sr.ht/~arnebab/ews/browse/Skripte/1w6-balance/battle_probability_tree.py?rev=tip
[2] https://hg.sr.ht/~arnebab/ews/browse/Skripte/1w6-balance/1w6-balance.py?rev=tip
[3] http://hg.sr.ht/~arnebab/ews/browse/sonstiges/Skripte/battle_probs/chars/sskreszta.txt
[4] http://1w6.rakjar.de/files/v0.1-main-window.png