Formel für drei konkurrierende Helden, jeder hat einen, den sie schlagen können, und einen, von dem sie geschlagen werden

12

Ich versuche ein Spiel für ein Projekt zu entwerfen. Die Hauptidee ist:

3 Arten von Helden
3 Statistiken pro Held

Es sind keine Levels beteiligt, daher müssen die Unterschiede in den Statistiken vermerkt sein.

Kampflogik - Die Logik des Kampfes ist, dass Typ 1 Held gute Chancen hat, Typ 2 Held zu gewinnen, Typ 2 Held gute Chancen hat, Typ 3 Held zu gewinnen, und Typ 3 Held gute Chancen hat, Typ 1 Held zu gewinnen.

Seit über einer Woche versuche ich, eine auf Statistiken basierende Formel zu finden, mit der ich das beheben kann, aber ich kann nicht. Ich habe mich gestern mit Zahlen eingemischt und es war anständig, aber ich kann die Formel nicht daraus extrahieren.

Könntest du mich bitte anleiten oder mir Hinweise geben, wie ich anfangen soll, Formeln für ein Nicht-Level-Spiel zu erstellen, das die Kampflogik erfüllt?

Georgiadis Abraam
quelle
1
"Seit über einer Woche versuche ich, eine auf Statistiken basierende Formel zu finden, mit der ich das beheben kann" - Fix what? Dies ist ein Stein-Papier-Scherenmechaniker ; Sie können es nicht mathematisch beschreiben, weil es kein x, y, z gibt, x > y ∧ z > x ∧ y > zzumindest nicht in den Grundrechenarten, die ich kenne und benutze.
Markus von Broady
2
Obwohl Sie eine gute Antwort erhalten haben, ist diese Frage nicht sehr gut.
MichaelHouse
@MarkusvonBroady: Der übliche Weg, um eine solche Reihenfolge mathematisch zu beschreiben, ist eine gerichtete Beziehung zwischen Graph und intransitiv. Sie haben Recht, dass Sie dies nicht mit reellen Zahlen tun werden.
Joren
5
@Byte56: Auch wenn ich zustimme, dass es nicht sehr schön dargestellt wird, bleibt die dahinter verborgene Frage interessant: Wie kann man ein 3-Wege-Kampfsystem generisch modulieren, ähnlich wie bei einer Stein-Papier-Schere, wie in den Antworten ausgedrückt unten. Keine -1 wert, imho.
Jesse Emond
@ JesseEmond In der einen Antwort unten *. Das Problem ist sehr einfach, wie ich auf die Antwort kommentierte, es sind nur verschiedene Rüstungen und Angriffstypen, die als Stein-Papier-Scheren-Mechaniker getarnt sind. Obwohl die angegebene Formel sehr ordentlich ist.
Markus von Broady

Antworten:

38

Ihr Spiel ist ein nicht- transitives Spiel . Sie können es mit 3 Statistiken R , P und S implementieren , indem Sie die Stein-Papier-Scheren-Logik verwenden. Nennen Sie diese Statistiken wie Sie wollen, aber ich bleibe bei der RPS-Logik.

Angenommen, Sie haben zwei Helden mit den Statistiken R1 / P1 / S1 und R2 / P2 / S2. Wir müssen berechnen, wie viel Schaden sie sich gegenseitig zufügen werden.

Sie möchten, dass Steine ​​der Schere Schaden zufügen. Das heißt, Held 1 fügt Held 2 wenn R1 > 0und wenn «Stein» -Schaden zu S2 > 0. Eine Formel, die funktioniert, ist einfach min(R1, S2).

Was uns sofort die Schadensformeln gibt:

Damage(hero1 on hero2) = min(R1, S2) + min(S1, P2) + min(P1, R2)
Damage(hero2 on hero1) = min(R2, S1) + min(S2, P1) + min(P2, R1)

Mal sehen, was mit einem realen Beispiel passiert:

    Hero1  Hero2
R    120     50
S     30    130
P     15     30

In Anbetracht der Statistiken ist Held 1 eindeutig ein "Rock" -Typ und Held 2 eindeutig ein "Scissor" -Typ. Hier sind die Ergebnisse:

Damage(hero1 on hero2) = min(120, 130) + min(30, 30) + min(15, 50)
                       = 120 + 30 + 15
                       = 165
Damage(hero2 on hero1) = min(50, 30) + min(130, 15) + min(30, 120)
                       = 30 + 15 + 30
                       = 75

Endgültige Ergebnisse: 165versus 75. Held 1 gewinnt wie erwartet.

Es gibt viele Mängel bei diesen Formeln, aber ich hoffe, sie geben Ihnen eine Vorstellung davon, wie Sie intransitive Kampfregeln implementieren können .

sam hocevar
quelle
2
+1, ich würde es einfach als verschiedene Arten von Angriffen und Rüstungen beschreiben (Poision, Elemental, Physical)
Markus von Broady
1

Jeder Held trainiert im Nahkampf (M), Ausweichen (D) und Zauberei (W).

Ausweichen weicht Nahkämpfen sehr gut aus und magische Angriffe weniger gut.

In jeder Runde verursacht ein Held Schaden in Höhe von (MD) + (W - 0.5D) (M und W stammen aus den Statistiken des Angreifers, D aus den Statistiken des Verteidigers.)

So könnte ein Krieger die Statistiken haben:

M: 100, D: 20, W: 0

Ein Schurke könnte die Statistiken haben:

M: 30, D: 80, B: 30

Und ein Zauberer könnte Statistiken haben wie:

M: 10, D: 10, B: 80

Krieger gegen Schurke, der Krieger hat 20 SPS, der Schurke 30 SPS. Vorteil Schurke! Schurke gegen Zauberer, der Schurke hat 20 SPS, während der Zauberer 40 SPS hat. Advantage Wizard! Zauberer gegen Krieger, der Zauberer hat 70 SPS, während der Krieger 90 SPS hat. Vorteil Krieger!

Simon Seltsam
quelle
Diese Antwort fügt nichts über Sams hinaus hinzu . Auch der Schurke hat den kleinsten Vorteil (im 30 - 20 == 10Vergleich zu 40 - 20 == 90 - 70 == 20den beiden anderen). Das bedeutet doch, dass Schurken von Natur aus benachteiligt sind?
Anko
Das Schöne an diesen nichttransitiven Systemen ist, dass sie sich fast automatisch ausgleichen. Benachteiligte Schurken bedeuten, dass weniger Menschen gegen sie antreten, sodass der Zauberer weniger Ziele und der Krieger weniger Gegner besiegen kann. Doch wenn alle den Krieger auswählen: Rückkehr des Schurken.
Marcks Thomas