Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.08.2017, 14:44

Schadensberechnung eines Kamfpsystems

Hallo lieber Mitglieder von spieleprogrammierer.de,

Ich bin selbst eher Programmierer als Game Designer und kenne mich deshalb eher wenig mit Game Design aus.
Aktuell stelle ich mir die Frage, wie man die Schadensberechnung am sinnvollsten aufstellt.
Ich würde gerne mal das Beispiel von League of Legends angehen, hierbei gibt es 2 Schadenstypen:
  • physischer Schaden
  • magischer Schaden

Außerdem gibt es 2 Rüstungen:
  • (physische) Rüstung
  • Magieresistenz

Jetzt die entscheidende Frage:
Wie könnte eine Formel aussehen, die den Schaden am Charakter berechnet, also quasi der Wert, der dem Spieler an Lebenspunkten abgezogen wird?
Ein ganz simples Beispiel wäre wohl HP = HP - (physischer Schaden - Rüstung) - (magischer Schaden - Magieresistenz).
Oder liege ich hier gerade komplett falsch? Weiß jemand, wie das bei League of Legends funktioniert?
Kann mir jemand Beispiele, vllt. sogar Links dazu schicken? Auch Links, wie man ein gutes Kampfsystem designt, sind herzlich Willkommen! :D
Ich hoffe die Frage war konkret genug, ansonsten bitte nachfragen! :D
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

19.08.2017, 16:07


Ein ganz simples Beispiel wäre wohl HP = HP - (physischer Schaden - Rüstung) - (magischer Schaden - Magieresistenz).

Das ist aber ziemlich ungerecht gegen viele kleine Attacken. 1 Attacke mit 300 physischen Schaden gegen 100 Rüstung macht 200 Schaden. 3 Attacken mit 100 physischen Schaden gegen 100 Rüstung macht 0 Schaden. Vor allem wird die Rüstung besser wenn man schon viel hat, was dazu führt das man wohl pur auf einen Wert gehen wird und nicht mischt. In den meisten Spielen wir genau das nicht gewünscht.


Weiß jemand, wie das bei League of Legends funktioniert?

Zu so ziemlich jedem bekannteren Spiel gibt es Wikis die solche Informationen enthalten: http://leagueoflegends.wikia.com/wiki/Armor
Oder als Zusammenfassung http://www.leagueoflegendsmath.com/artic…Armor_and_Magic

3

19.08.2017, 16:23

Danke für die Links! Das ist genau das, was ich gesucht habe!


Das ist aber ziemlich ungerecht gegen viele kleine Attacken. 1 Attacke mit 300 physischen Schaden gegen 100 Rüstung macht 200 Schaden. 3 Attacken mit 100 physischen Schaden gegen 100 Rüstung macht 0 Schaden. Vor allem wird die Rüstung besser wenn man schon viel hat, was dazu führt das man wohl pur auf einen Wert gehen wird und nicht mischt. In den meisten Spielen wir genau das nicht gewünscht.


Das dachte ich auch. Vermutlich muss man da viel mehr mit Prozenzwerten rechnen.
Aus deinem Link geht z.B. diese Formel für Attack Speed hervor:

Zitat


Base_Attack_Speed * (1 + Bonus _Attack_Speed)

Example:
Ashe has 0.658 base attack speed and gets 4% bonus attack speed per level after level 1. At level 10, Ashe will have

0.658 * (1 + 0.04 * 9levelups)
= 0.658 * (1 + 0.36)
= 0.895

Therefore, Ashe will autoattack 0.895 times per second.


Man darf anscheinend nicht mit absoluten, sondern muss mit relativen Werten rechnen, z.B. dass Rüstung nur ein Prozentwert ist. Dann würde allerdings 100 auch 100% Rüstung entsprechen, also keinen Schaden machen... Das wäre ja aber auch wieder nicht gewollt.
Ich werde mir deine Links auf jeden Fall nochmal genauer anschauen. Vielen Dank nochmal!
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

19.08.2017, 18:01

Man darf anscheinend nicht mit absoluten, sondern muss mit relativen Werten rechnen, z.B. dass Rüstung nur ein Prozentwert ist. Dann würde allerdings 100 auch 100% Rüstung entsprechen, also keinen Schaden machen... Das wäre ja aber auch wieder nicht gewollt.

Dafür gibt es oft caps. So kannst du bei Diablo deine Blockchance auf 75% bringen. Hättest du ein weiteres Item welches den Wert erhöht so wirkt sich das nicht aus. Das kannst du bei Werten wie Rüstung etc genau so machen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

5

19.08.2017, 19:33

Zitat

Aktuell stelle ich mir die Frage, wie man die Schadensberechnung am sinnvollsten aufstellt.


Du solltest dir erstmal die Frage stellen, was du überhaupt erreichen möchtest. Leauge Of Legends macht das, was es macht, aus ganz bestimmten Gründen. Das zu kopieren lohnt sich nur, wenn du ähnliche Intentionen hinter deinem Kampfsystem hast.

Wenn es um Pentaquin geht, hätte ich jetzt spontan gesagt, dass das eher nicht gut funktionieren dürfte bzw. nicht komplex genug wäre.
WIP Website: kevinheese.de

Lares

1x Contest-Sieger

  • Private Nachricht senden

6

19.08.2017, 22:53

Man darf anscheinend nicht mit absoluten, sondern muss mit relativen Werten rechnen, z.B. dass Rüstung nur ein Prozentwert ist. Dann würde allerdings 100 auch 100% Rüstung entsprechen, also keinen Schaden machen... Das wäre ja aber auch wieder nicht gewollt.

In WoW wurde das zu WotLk-Zeiten mit Skalierungswerten geregelt: Wenn man einen Hit-Wert von 100 hatte, war der dadurch erhaltene Prozentwert an Treffergenauigkeit auf niedrigen Charakter-Level höher, gegenüber dem MaxLevel des Charakters. Ergo hatte ein lvl 10 Charakter gegenüber einen Level 10 Gegner +5% Treffergenauigkeit, während der Character auf Lvl 70 gegenüber einem Gegner auf Lvl 70 nur noch +1% hatte (Werte frei gewählt). Persönlich halte ich nicht viel von dieser Methode, da man den Spieler gefühlt dafür betraft zu leveln, aber es würde zumindest das Problem mit dem Prozentwerten verringern.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

20.08.2017, 07:38

Dann würde allerdings 100 auch 100% Rüstung entsprechen, also keinen Schaden machen... Das wäre ja aber auch wieder nicht gewollt.
Doch, das wäre schon gewollt. Was aber nicht gewollt wäre, ist dass man überhaupt 100 Rüstung (dauerhaft) bekommen kann. Oft gibt's da einfach ein Maximum. Oder man nutzt Diminishing Returns. Also wären z.B. 2 Items mit jeweils 50 Rüstung keine Summe von 100, sondern nur von 90. Und 3 Items von 50 nicht 150, sondern 95. Da gibt es die unterschiedlichsten Möglichkeiten, wie man 100 ausschließen kann und verschiedene Games gehen da verschiedene Wege.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

20.08.2017, 13:49

Erst einmal Vielen Dank für eure ganzen Antworten! :D

Wenn es um Pentaquin geht, hätte ich jetzt spontan gesagt, dass das eher nicht gut funktionieren dürfte bzw. nicht komplex genug wäre.


Ne, geht nicht um Pentaquin. Da bin ich auch nur Programmierer, kein Game Designer.
Würde mich natürlich trotzdem mal interessieren, wieso du es nicht für komplex genug hältst! :D


Doch, das wäre schon gewollt. Was aber nicht gewollt wäre, ist dass man überhaupt 100 Rüstung (dauerhaft) bekommen kann. Oft gibt's da einfach ein Maximum. Oder man nutzt Diminishing Returns. Also wären z.B. 2 Items mit jeweils 50 Rüstung keine Summe von 100, sondern nur von 90. Und 3 Items von 50 nicht 150, sondern 95. Da gibt es die unterschiedlichsten Möglichkeiten, wie man 100 ausschließen kann und verschiedene Games gehen da verschiedene Wege.


Klingt nach einem interessanten Ansatz!
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

9

20.08.2017, 14:25

Ne, geht nicht um Pentaquin. Da bin ich auch nur Programmierer, kein Game Designer.
Würde mich natürlich trotzdem mal interessieren, wieso du es nicht für komplex genug hältst!


Ich halte es nicht für weniger komplex, League Of Legends ist einfach weniger komplex. Ist ja auch klar warum: Statt den oberkrassen, unbesiegbaren Oberhelden zu formen geht es eher darum, mit Skill Shots und guten Kombiniationen zu gewinnen. Das Item- und Attributssystem ist dann eher dazu da, Vorteile durch gute Progression (XP und Last Hit Farming) aufbauen zu können sowie etwaige Nachteile durch bessere Auswahl an Items (und ggf. auch besseres Farmverhalten gegen aggressive Teams) auszugleichen.

In League ist die Schadensformel wie du schon sagtest im Endeffekt nur §\frac{100}{(100 + Armor)} * Damage Incoming§. 50 armor heißt nur 67% des Schadens kommen durch, 100 dann 50%. Die Formel hat auch schon die von BlueCobold angesprochenen diminishing returns: Die ersten 50 Punkte Armor bringen eine Schadensrezierung von 33%, während die nächsten 50 Punkte nur noch 17% bringen. Und die Formel ist für Physischen und Magischen Schaden genau gleich, es gibt die zwei verschiedenen Schadenstypen nur um Helden Stärken/Schwächen zu geben, die es auszugleichen gilt.
Super simples System, aber für das was League sein möchte funktioniert es perfekt. Jeder versteht recht intuitiv was wichtig ist, welche Items sich in welcher Situation wichtig sind und gegen welche Charaktere ich auf was achten muss. Der Rest hängt dann von mir und meinem Team ab.

In einem MMO würde ich jetzt typischerweise eher komplexere Systeme erwarten. Viele verschiedene Schadenstypen, die jeweils andere Resistenzeinflüsse haben. Vielleicht sogar verschiedene Arten physischen Schadens die dann jeder eine eigene Resistenz haben, zusätzlich es aber noch eine sehr teure "catch all" Resistenz gibt. Also beispielsweise ein globaler Wert "Rüstung gegen physischen Schaden", und dann zusätzlich noch "Spezialisierung gegen Stichschaden" und so weiter. Einfach weil in so einem Spiel oft die Charakterentwicklung viel wichtiger ist als das Verhalten des Spielers im Kampf.

(Wobei Komplexität natürlich nicht nur heißt, einfach möglichst viele verschiedene Sachen zu machen. Gibt natürlich noch andere Wege und unterschiedliche Arten von Komplexität)
WIP Website: kevinheese.de

PuppetMaster

Frischling

Beiträge: 20

Beruf: Embedded-System Entwickler (C++)

  • Private Nachricht senden

10

23.08.2017, 00:24

Es geht zwar nicht nur um die Schadensberechnung, aber es gibt eine relativ gut gemachte Nachempfindung des Final Fantasy 7 Kampfsystems.
"Gears" A look inside the Final Fantasy VII Game Engine: http://q-gears.sourceforge.net/gears.pdf

Darin wird auch eine mögliches Modell zur Schadensberechnung in FF7 erklärt.
Die Berechnung ist natürlich etwas komplexer (gekoppelte Zusatzeffekt-Substanzen, Elementarschaden, Zustandsveränderungen, zufällige Variation im Schaden).

Zitat von »"Billy Talent - Fallen Leaves"«

Run away before you drown, or the streets will beat you down.
Fallen leaves, fallen leaves, fallen leaves on the ground.

Werbeanzeige