на главную
об игре
Diablo 2 28.06.2000

Diablo 2 - Игровая механика - Анимации: FCR, FHR, FBR, D/E/A

Содержание

  1. Введение
  2. Faster Cast Rate
  3. Faster Hit Recovery
  4. Faster Block Rate
  5. Dodge/Evade/Avoid

Введение

Для тех кто не знал, в Diablo 2 секунда состоит из 25 фреймов (или кадров). Таким образом, изображение на экране меняется каждые 0.04 секунды. Поэтому любая анимация в игре происходит за целое количество фреймов, что делает невозможным непрерывное ускорение анимаций. В силу этого в игре существуют так называемые брейкпоинты (breakpoints), определяющие необходимое значение параметров, ускорящих анимацию, для уменьшения ее длительности на 1 фрейм. 

Используемые обозначения:

  • HS – Holy Shield (Paladin skill)
  • L, CL, Inf – Lightning, Chain Lightning, Inferno (Sorceress skills)
  • Vampire – форма вампира, бонус полного набора Trang-Oul
  • Fetish – форма stygian doll, результат использования заклинания Delirium с Runeword «Delirium»
  • xbw – Crossbow
  • 2hs – Two-handed swords
  • Stf – Two-handed staves, hammers, axes, polearms
  • 2ht – Tho-handed thrusting weapons (spears)
  • 1ht – One-handed thrusting weapons (knives, javelins)
  • 1hs – One-handed swinging weapons (все, кроме knives, javelins)
  • HtT – hand-to-hand, unarmed - без оружия
  • fpa – frames per animation (количество фреймов, затрачиваемое на анимацию)
  • AF – ActionFrame (или ActionFlag) – фрейм, в который происходит сама анимация
  • [] – округление вниз ([4.5] = 4)
  • {} – округление вверх ({4.5} = 5)

Также в таблицах красным цветом выделены значения, недостижимые в немодифицированной игре.

Faster Cast Rate

На самом деле, анимацию в Diablo II можно разделить на 2 отрезка – начальную и конечную. Начальная - та, что до события (в данном случае - момент каста). Конечная - та, что после.

Допустим, у нас есть Sorceress с параметром FCR равным 195%. Так как брейкпоинт 194%, то посмотрев в известные всем таблицы, узнаем, что скорость анимации для Lightning – 11 фреймов. Что мы не узнаем оттуда, дак это то, что в действительности AF будет равен 5 фреймам. Что означает, что каст молнии будет выглядеть так: 5 фреймов на начальную анимацию, на 5-ом фрейме появляется сама молния, и 6 фреймов на конечную анимацию. Однако, AF часто бывают не привязаны к брейкпоинтам для полной анимации. При FCR = 194% Lightning – 11-и фреймовая анимация с AF = 5, а при FCR = 200% – 11-фреймовая анимация, с AF = 4. Вся анимация занимает столько же времени, однако вы кастуете спелл на 1 фрейм быстрее.

Суть в том, что прервать спелл можно, если прерывание происходит до AF. Если пытаться прервать Lightning на 7-м фрейме, то Lightning все равно скастуется. Также, если вы телепортируетесь до прерывания, ничего не изменится, вы уже переместились.

Пара примеров.

Все знают, что у классов Barbarian и Sorceress одинаковые брейкпоинты. Но это не совсем так (см. таблицу ниже). Оказывается у Sorceress AF ниже, чем у Barbarian, поэтому при телепортировании она (при одинаковом количестве FCR) окажется в другой точке раньше, чем Barbarian.

Пусть у нас есть Barbarian с 63% fcr (9fpa, AF = 7) и Sorceress c 37% fcr (10fpa, AF = 6). Barbarian пытается телепортироваться, Sorceress хочет ему помешать с помощью telekinesis (в данном примере возьмем, что шанс knockback у telekinesis равен 100%). Если Barbarian и Sorceress начнут кастовать в одно и то же время, то Barbarian не сможет телепортироваться, так как прерывание произойдет до AF. Однако, если бы у него было 86% fcr (9fpa, AF = 6), то он бы успешно телепортировался.

Другой пример: есть сферический персонаж с mind blast (11fpa, AF=7), и такой же сферический персонаж с teleport (10 fpa, AF=6) и анимацией fhr, выполняющейся за 4 фрейма. Пусть первый из них спамит mind blast на второго. Mind blast будет вводить его в анимацию fhr на 4 фрейма. Таким образом, у второго будет 7 фреймов, чтобы телепортироваться, что достаточно, так как телепорт выполнится за 6 фреймов.

Amazon
Assassin
Barbarian
Druid
Necromancer
Paladin
Sorceress
Iron Wolf

Bow
HtH
xbw / 2hs
stf / ht
Werebear
Werewolf
Human
Human
Vampire
FoH
Other
L+CL+Inf
Other

fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf

0
1910
0
1911
0
1912
0
1913
0
169
0
139
0
169
0
168
0
1810
0
158
0
235
0
349
0
159
0
197
0
137
0
177

7
1810
7
1811
7
1812
7
1813
8
159
9
129
7
158
6
158
4
1710
9
148
6
225
 15 
338
9
149
7
187
9
127
8
167

14
179
13
1810
11
1811
10
1812
15
158
15
128
15
148
10
157
10
1610
18
137
11
215
39
327
15
148
15
177
20
116
15
157

22
169
14
1710
14
1711
14
1712
16
148
20
118
26
137
14
147
11
169
30
127
18
205
86
316
18
138
20
176
37
106
20
156

32
158
22
1610
22
1611
22
1612
27
138
37
108
40
127
26
137
19
159
48
116
24
194
 
 
30
128
23
166
63
95
26
146

48
148
29
169
26
1610
23
1611
39
137
39
107
63
116
37
136
30
148
75
106
35
184
 
 
39
127
35
156
105
85
39
136

68
137
32
159
32
1510
32
1511
42
127
63
97
99
106
40
126
46
138
125
95
48
174
 
 
48
117
52
146
200
74
58
126

99
127
48
149
48
149
42
1510
65
117
86
96
163
95
60
116
63
137
 
 
65
164
 
 
75
107
63
145
 
 
63
125

152
116
56
148
68
139
48
1410
86
116
105
86
 
 
95
106
68
127
 
 
86
154
 
 
86
106
78
135
 
 
86
115

 
 
68
138
86
138
68
1310
102
106
200
76
 
 
157
95
99
117
 
 
120
143
 
 
125
96
117
125
 
 
138
105

 
 
99
128
99
128
72
139
174
96
 
 
 
 
 
 
142
116
 
 
180
133
 
 
 
 
194
115
 
 
200
104

 
 
113
127
152
118
99
129
 
 
 
 
 
 
 
 
163
106
 
 
 
 
 
 
 
 
200
114
 
 
 
 

 
 
152
117
180
117
133
128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
152
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

Faster Hit Recovery

fpa
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2

Amazon
 
0
6
13
20
32
52
86
174
600
 

Assassin
 
0
7
15
27
48
86
200
4680

Barbarian
 
0
7
15
27
48
86
200
4680

Druid (Human, 1hs)
 
0
3
7
13
19
29
42
63
99
174
456
 

Druid (Human, other weapons)
 
0
5
10
16
26
39
56
86
152
377
 

Necromancer
 
0
5
10
16
26
39
56
86
152
377
 

Necromancer (Vampire)
 
0
2
6
10
16
24
34
48
72
117
208
638
 

Paladin (2ht, stf)
 
0
3
7
13
20
32
48
75
120
480
 

Paladin (other weapons)
 
0
7
15
27
48
86
200
4680

Sorceress
 
0
5
9
14
20
30
42
60
86
142
280
1480
 

 

Fetish
0
4
7
10
15
20
27
35
48
65
86
129
200
414
4680
 

Werewolf
 
0
9
20
42
86
280

Werebear
 
0
5
10
16
24
37
54
86
152
360
 

 

Rogue (Act 1)
 
0
6
13
20
32
52
86
174
600
 

Town Guard (Act 2)
 
0
5
9
14
20
30
42
60
86
142
280
1480
 

Iron Wolf (Act 3)
 
0
5
8
13
18
24
32
46
63
86
133
232
600
 

Barbarian (Act 5)
 
0
7
15
27
48
86
200
4680

Потеря некоторого количества жизней или стан вводят в анимацию восстановления от удара. Вопрос в том, сколько это – "некоторое количество" (часто можно услышать, что это 1/12 от жизни, что не верно)? Для определния этого, нужно знать, при каких обстоятельствах срабатывается анимация восстановления от удара. Рассмотрим последовательность определения, будет ли выполнена эта анимация:

  1. Сначала наносится урон.
  2. Если цель умирает от полученного урона, то анимации не будет.
  3. Если цель заморожена, то анимации не будет.
  4. Если наносимый урон - только яд, то анимации не будет.
  5. Если наносимый урон меньше 1 (1 = 256 бит, все вычисления жизни и урона для повышения точности производятся в битах), то анимации не будет.
  6. Получаем MaxLife – максимальное количество жизней цели.
  7. Получаем divisor – коэффициент (обычно он равен 16, но для некоторых missile attack – 8, см ниже)
  8. Получаем GetHitTriggerNumber = MaxLife / divisor.
  9. Теперь с полученным уроном производятся некоторые вычисления:
    1. Если урон меньше, чем GetHitTriggerNumber, то анимации не будет.
    2. Если урон меньше, чем GetHitTriggerNumber * 2, то анимации не будет с шансом 50%, с шансом 50% будет произведен переход к следующему пункту.
    3. Если урон меньше, чем GetHitTriggerNumber * 4, то анимация будет с шансом 75%.
    4. Если урон больше, чем GetHitTriggerNumber * 4, то анимация будет с шансом 100%.
  10. Если цель не может быть введена в состояние анимации, то анимации не будет (очень вовремя такая проверка :).

Таким образом, для divisor = 16, анимация восстановления от удара 100% сработает при уроне больше, чем 1/4 MaxLife, 75% при уроне от 1/8 MaxLife до 1/4 MaxLife, и 37.5% при уроне 1/16 MaxLife до 1/8 MaxLife.

Missile attacks, для которых divisor = 8:

  • Amazon: Magical Arrow, Multiple Shot, Strafe, Guided Arrow, Immolation Arrow (не огонь на земле), Poison Javelin (только javelin), Plague Javelin (только javelin)
  • Necromance: Bone Spear
  • Assassin: Blade Fury
  • Other: thrown knives, thrown axes, thrown javelins, обычная атака стрелами или болтами
  • Monster Missiles: Rogues' standard arrows, Quillrats' spikes, Corrupted rogues' default arrows (Blood Raven), Skeletal archers' arrows, toxic and spikey trapped wall missiles in Act2&3 dungeons, Pantherwomen's javelins, Fetishs' blowgun darts, Vipers' bonespears

 

 

Faster Block Rate

fpa
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

Amazon (1hs)
0
4
6
11
15
23
29
40
56
80
120
200
480
 

Amazon (1ht)
 
0
13
32
86
600

Assassin
 
0
13
32
86
600

Barbarian
 
0
9
20
42
86
200
 

Druid (Human)
 
0
6
13
20
32
52
86
174
600
 

Necromancer
 
0
6
13
20
32
52
86
174
600
 

Paladin
 
0
13
32
86
600

Paladin (с HS)
 
0
86

Sorceress
 
0
7
15
27
48
86
200
4680
 

 

Werewolf
 
0
7
15
27
48
86
200
4680
 

Werebear
 
0
5
10
16
27
40
65
109
223


 

Werebear + HS
 
0
8
37
120
 

В версии 1.09 был возможен blocklock – несколько блокирований подряд, которые полностью лишали персонажа возможности выполнять какие-либо действия. Начиная с версии 1.10 был введен block timer, в течение которого персонаж может выполнять блокирование без анимации. Его длительность составляет 15+[FBR/8] фреймов, отсчитываемых с момента начала последней анимации блокирования.

Формы Vampire и Fetish не имеют анимации блокирования, поэтому вместо нее используется анимация восстановления от удара (Faster Hit Recovery).

Также, некоторые монстры могут блокировать без щита и без анимации блокирования (все Great Mummies, все Oblivion Knigts и все актовые боссы, включая всевозможных клонов). Для этого у них должен быть задан параметр NoShldBlock=1.

Iron Wolves хоть и имеют щит, но не имеют анимации блокирования, и не могут блокировать.

 

Dodge, Evade, Avoid

Dodge, Evade, Avoid – пассивные навыки класса Amazon. Скорость их анимации может меняться под действием Fanaticism, Holy Freeze, Chill effectivness и Slow Target.

Формула для вычисления скорости анимации:

fpa = {256 * FramesPerDirection / [AnimationSpeed * (100 + Acceleration) / 100] } - 1,

Здесь FramesPerDirection = 9, Animati 256, Acceleration – сумма положительных и отрицательных бонусов.

Посчитаем стандартную скорость анимации:

fpa = {256 * 9 / [256 * (100 + 0) / 100] } - 1 = 8.

Пусть теперь Amazon использует лук с Runeword Faith, который дает ауру Fanaticism 15 уровня. От этой ауры будет бонус к Acceleration +33. Таким образом:

fpa = {256 * 9 / [256 * (100 + 33) / 100] } - 1 = 6.

Как видим, Fanaticism 15 уровня уменьшил длительность анимации на 2 фрейма.

Комментарии: 2
Ваш комментарий

Еpiscop_moo Ломаем стереотипы!

3

Неплохо, но сферических персонажей следует рассматривать в вакууме.

-2