D2library

<< FAQtoids Übersicht

Time is on my Side

die Waffengeschwindigkeit

Logischerweise ist die Waffengeschwindigkeit nur dann von Belang, wenn man mit der Waffe nicht zaubert, sondern kämpft. Also zuschlägt, wirft oder schießt. Daher profitieren auch nur solche Charaktere vom Attribut Increased Attack Speed / Erhöhte Angriffsgeschwindigkeit, kurz IAS. Etwas verschwommen wird die Differenzierung bei manchen Kampffertigkeiten, so ist beispielsweise die Amazonenwurffertigkeit Lightning Bolt / Blitzschlag zwar letztendlich ein reiner Blitzangriff, besteht aber dennoch aus einem geworfenen Spieß und unterliegt somit der Wurfgeschwindigkeit. Smite / Niederstrecken, also der Schildschlag des Paladins, wird zwar mit dem Schild ausgeführt, doch zählt auch hier die Geschwindigkeit der Waffe und deren Erhöhung mit. Die Legefallen der Assassine sind zwar durchaus mit Zaubern vergleichbar, die Legegeschwindigkeit wird aber dennoch von Waffengeschwindigkeit und IAS bestimmt.

Nicht irritieren lassen sollte man sich an dieser Stelle von den Waffenbeschreibungen im Spiel selbst. Diese sind für jede Waffenklasse jeder Charakterklasse in der d2client.dll abhängig von der AnimData.d2 zugeordnet und festgelegt. Obwohl man mit mehr IAS aus beliebigen Quellen die Waffe schneller bedienen kann, ändert sich diese Anzeige nur beim Überschreiten eines Schwellwerts durch IAS Sockelungen in der Waffe selbst. Dennoch ist die Anzeige natürlich ein Orientierungspunkt für das Grundtempo der Waffe an dieser Klasse. Nur sollte man nicht darauf hereinfallen, falls man die Waffe mit einer anderen Klasse betrachtet hat als derjenigen, die die Waffe führen soll.

Die Gegenstände mit Affices zur Verbesserung der Angriffsgeschwindigkeit sind wie gewohnt auf Atairs d2wissen zu finden.


formale Herleitung

Bedauerlicherweise konkurrieren mehrere Begriffe um die Aufmerksamkeit des Lesers, die oftmals das gleiche meinen, aber anders benannt sind. Manchmal auch umgekehrt. Es beginnt schon mit dem Begriff Frame, der andernorts bereits allgemein beschrieben ist. In unserem Zusammenhang hier besteht die Angriffsanimation aus einer vorgegebenen Anzahl Einzelbilder, die auch Frames genannt werden. Jede Animation besteht aus einer solchen Bildfolge. Die Anzahl dieser Bilder wird als AnimLength bezeichnet, ebenso verbreitet ist dafür auch der Begriff Frames per direction oder auch technokratisch Base+1. Das Spiel selbst läuft konstant mit 25 Frames pro Sekunde (fps), hier meint Frames allerdings eine Zeiteinheit (1/25 Sekunde). Die Geschwindigkeit, mit der eine Animation abgespielt wird, wird AnimRate genannt. Die Zeitdauer der Animation wird AnimDuration genannt. Es gilt dabei:
AnimDuration = AnimLength / AnimRate

wo sind diese Angaben zu finden?
AnimLengthAuszug aus animdata.d2
AnimSpeed
AnimRateItemStatCost.txt (StatID 68)
IASItemItemStatCost.txt (StatID 93)
SIASSkills.txt (aurastates)
oder im Spiel nachsehen
- Fanatismus
- Burst of Speed / Tempoblitz
- Werwolf
- (Frenzy / Raserei)
WSMWeapons.txt (speed)

Dummerweise ergibt diese Division keinesfalls immer eine ganze Zahl, was zur Abbildung innerhalb des Spielzeitrasters aber notwendig ist. Um Rundungsfehler möglichst klein zu halten, kommt hier ein Mechanismus zum Einsatz, der als HitShift Einzug in die entsprechenden Abhandlungen gehalten hat, dummerweise wird dafür auch der Name AnimSpeed oder auch vanim verwandt. Netterweise ist bei der Betrachtung der Angriffsgeschwindigkeit meines Wissens nach dieser Wert immer 256. Die Formel wird dabei zu:
AnimDuration = AnimLength * 256 / AnimRate

Um das Ganze noch etwas komplizierter zu gestalten, kommt nun noch die Beschleunigung der Animation zum Tragen. AnimRate (auch BaseRate oder ColdEffect, wobei letzteres irreführend ist) besteht aus der Standardgeschwindigkeit AnimSpeed und der Beschleunigung durch IAS von Fertigkeiten und Gegenständen respektive der negativen Beschleunigung durch Verlangsamungen verschiedener Art, ich nenne sie hier mal AnimAcc. Unser Formelgebilde sieht damit so aus:
AnimDuration = AnimLength * 256 / AnimSpeed * AnimAcc

Noch nicht kompliziert genug?
AnimAcc ist ein Prozentsatz. Folglich ist ohne Beschleunigung oder Verlangsamung AnimRate = 100, damit der Teil
AnimSpeed*100 / 100 = AnimSpeed
für die Standardgeschwindigkeit Gültigkeit behält.
Dazu kommen noch das effektive IAS EIAS, das fertigkeitenbezogene Skill-IAS, kurz SIAS, und die Basisgeschwindigkeit der verwendeten Waffe, präziser der Weapon Speed Modifier oder kurz WSM. Damit erweitern wir die bisherige Formel um:
AnimAcc = (AnimRate + SIAS + EIAS - WSM) / 100 *
Wobei EIAS wie alle via Ausrüstung beschleunigbaren Animationen Opfer einer Funktion ist, die als 'diminishing returns' bezeichnet wird. Dadurch sind immer höhere gegenstandsseitige Investitionen an IASItem notwendig, um noch einen weiteren Framesprung zu schaffen:
EIAS = [120 * IASItem / (120 + IASItem)]
Für unsere bisherige Formel folgt daraus als Weiterentwicklung:
AnimDuration = AnimLength * 256 / AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100 *
Wem das Errechnen der EIAS Werte zu mühsam ist, der findet im Anhang GaiaCaTs Tabelle mit der Gegenüberstellung beider Werte.
Nun wird noch ein bißchen gerundet, damit auch wirklich ein ganzzahliges Ergebnis erzielt wird. Schließlich muß der Wert ja innerhalb des 25fps Spielzeitrasters auch darstellbar sein.
Außerdem sind von unserer Serie an Einzelbildchen das erste und das letzte immer gleich. Allerdings wird das letzte Bildchen niemals abgespielt. So wird sichergestellt, daß die Gesamtanimation 'rundläuft', auch wenn die gleiche Animation mehrmals hintereinander benötigt wird. Daher erhält unser Formelkonstrukt ganz am Ende noch eine -1.
Daraus ergibt sich als

Hauptformel

AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} - 1 * mit EIAS = [120 * IASItem / (120 + IASItem)]

AnimDuration: Länge der Animation in Frames ('fpa') AnimLength: die vorgegebene Anzahl Frames pro Zyklus ('Frames per Direction') AnimSpeed: die vorgegebene Granulierung (auch 'extra precision', HitShift) AnimRate: Verlangsamungen SIAS: fertigkeitenbasierendes IAS WSM: Weapon Speed Modifier EIAS: effektives IAS aus IASItem IASItem: IAS von Gegenständen [ ]: abrunden { }: aufrunden SIAS und EIAS werden oftmals als EIAS zusammengefaßt dargestellt

Wurfwaffen erhalten beim Werfen einen Malus von 30 auf WSM in der Berechnung. Man wirft also grundsätzlich langsamer, als man mit derselben Waffe zuschlagen würde.


Serienattacken

Serienattacken sind Fend / Widersetzen, Strafe / Streuen (beide Amazone) und Zeal / Eifer des Paladins sowie Fury / Wut des Werwolfs und Dragon Talon / Drachenklaue.
Animationstechnisch betrachtet wird hier ein sogenannter 'Rollback' einer ganz normalen Angriffsanimation erzeugt. Der Animationszyklus beginnt wie die Standardattacke, wiederholt aber einige Frames um das sogenannte ActionFlag in einer Schleife und endet dann wiederum mit den letzten Frames der Standardattacke. Das ActionFlag markiert hierbei dasjenige Frame, bei dem die eigentliche Aktion - also das Auftreffen der Nahkampfwaffe auf den Gegner respektive das Abfeuern eines Pfeils - ausgeführt wird.

Dazu kommt noch eine kleine charakterklassenspezifische Besonderheit. Bei Amazonen und Zauberinnen ohne Waffe startet eine Rollback Animation erst mit dem zweiten Bild. Tragen die Mädels andere Waffen als Schußwaffen oder Zweihandspeere, so beginnen die Animationen erst mit dem dritten Bild. Vergleicht dazu Myrdinns Tabelle aus der d2common.dll.


siehe auch:

Sequenzanimation

Jab / Stoß, Impale / Aufspießen, alle klauenspezifischen Assassinenattacken, Leap Attack / Sprungangriff und Charge / Ansturm benutzen eine Sequenz von Animationen, also Zugriffe auf Teile verschiedener Animatioszyklen. Hier gibt es ein paar Besonderheiten zu berücksichtigen.

AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} *

Puh, Glück gehabt, ist die gleiche Formel. Oder etwa doch nicht?
Offensichtlich fehlt die -1, diese kommt bei den Sequenzanimationen in der Tat nicht zur Anwendung.
Weniger offensichtlich ist, daß Sequenzanimationen +30 als Malus auf WSM * erhalten.

Achtung: * auf d2wissen sind die Basisgeschwindigkeiten, also die WSM Werte, vorzeichenvertauscht im Unterschied zum Arreat Summit. Wer mit den Werten von d2wissen rechnet, muß den WSM Wert in den Formeln addieren statt subtrahieren!

Ferner ist für die Geschwindigkeit des eigentlichen Zuschlagens weder bei Leap Attack noch bei Charge die Waffengeschwindigkeit von irgendeiner Bedeutung.

Frenzy / Raserei, Double Throw / Doppelwurf und Double Swing / Doppelschlag sind als Doppelwaffenattacken schon wieder so speziell, daß sie einen eigenen Abschnitt weiter unten erhalten haben. Auch Whirlwind / Wirbelwind nutzt die Sequenzanimation, aber das ist ohnehin eine Nummer für sich, die glücklicherweise bereits ausführlich nachgelesen werden kann. Bei Wirbelwind zählt nur und einzig IAS auf der Waffe!

siehe auch:

Angriffsgeschwindigkeit mit zwei Waffen

- betrifft nur Assassine und Barbar -

Werden mit zwei Waffen Angriffe ausgeführt, so ist IASitem auf der zweiten Waffe vollkommen unerheblich.Das gilt ausdrücklich auch wenn tatsächlich mit beiden Waffen zugeschlagen wird, nicht nur bei Attacken, die ohnehin nur mit der Haupthand durchgeführt werden, egal was in der Nebenhand ist.

EIAS = [120 * (∑IASitem - IAS2nd)/(120 + ∑IASitem - IAS2nd)]

Frenzy / Raserei Beschleunigungsformel

Vinc = 70 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 17 / [256 * Vinc / 100]} / 2

Double Swing / Doppelschwung Beschleunigungsformel

Vinc = 120 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 17 / [256 * Vinc / 100]} / 2

Double Throw / Doppelwurf Beschleunigungsformel

Vinc = 70 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 12 / [256 * Vinc / 100]} / 2

EIAS: effektiv wirkendes IAS IASitem: IAS auf Gegenständen IAS2nd: IAS auf Sekundärwaffe Vinc: Geschwindigkeitssteigerung (auch speed increase); hartkodierte Limits: (175 ≥ Vinc ≥ 15) WSM1st: Weapon Speed Modifier Primärwaffe WSM2nd: Weapon Speed Modifier Sekundärwaffe SIAS: IAS Fertigkeitenbonus (Frenzy, Fanatismus, BoS, Werwolf) fpa: Frames per Animation { }: aufrunden [ ]: abrunden

Nach neueren Erkenntnissen von HarzIV aka b.haart aka Behaart führt die Sequenzanimation der Doppelattacken des Barbaren zu ziemlich kruden Ergebnissen je nach primärer und sekundärer Waffe. Da mir das zu weit geht, verweise ich an dieser Stelle einfach auf den entsprechenden Thread im d2info-Forum.

siehe auch:

Wandelformen

Die Wandelformen als Vampir oder Untoter Fetisch benutzen die obige Hauptformel, wobei die Werte der Wandelform eingesetzt werden, nicht die der Charaktere.
Abweichend sind also

FormAnimLengthAnimSpeed
Vampir14176
Untoter Fetisch12256

Die Wandelformen als Werbär oder Werwolf sind etwas komplizierter, da hier auch die dem unverwandelten Charakter zugehörigen Werte in die Berechnung einfließen.

AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} - 1 wobei AnimSpeed = [256 * Framesneutral / Delay] und Delay = [256 * FramesChar / [(100 + WIAS - WSM) * CharSpeed / 100]]

neue Variablen: Framesneutral: die Anzahl der Frames für die neutrale Animation (NU; Rumstehen) der Wandelform FramesChar: die Anzahl der Frames, die der unverwandelte Charakter für eine Angriffsanimation nutzt * CharSpeed: AnimSpeed des unverwandelten Charakters, siehe Auszug aus AnimData.d2 * Ausnahme sind Zweihandschwerter als Waffen, hier wird dann der Wert von Einhandschwertern herangezogen

AnimationWerwolfWerbär
A11312
S31010
NU0910

Credits / Danke


Anhang

eIAS und ItemIAS Gegenüberstellung
EIASIASEIASIASEIASIASEIASIASEIASIAS
12212641636112581250
23222742656212982259
34232943686313383270
45243044706413884280
56253245726514285292
67263446756614786304
78273547786715287317
89283748806815788330
910293949836916389345
1011304050867016890360
1113314251897117491377
1214324452927218092395
1315334653957318793414
1416344854997419494434
15183550551027520095456
16193652561057620896480
17203754571097721597507
18223856581137822398535
19233958591177923299566
202440606012080240100600

Feedback und Korrekturen mit nachvollziehbarer Erläuterung nehme ich dankend via Mail über diese Adresse entgegen.


Valid HTML 4.01 Transitional
Valid CSS 2.0

zuletzt aktualisiert am 24III09
© by librarian

<< FAQtoids Übersicht

D2library