После тестирования Наксрамаса на PTR разработчики WoW Classic обратили внимание на одну любопытную особенность механики "Ледяной ауры", которая действует в сражении с Сапфироном. В процессе исследования кода игры, различных материалов и изучения старых роликов выяснилось, что вопреки изначальной задумке дизайнеров она наносила урон каждые 2 сек., а не каждую 1 сек., что очевидно является неполадкой, которую разработчики обнаружили лишь в начале Wrath of the Lich King. С этой проблемой связана еще одна, из-за которой в редких случаях срабатывание все же происходило каждую секунду.
На PTR, однако, срабатывания происходили чаще, чем было в оригинальной игре, что смутило некоторых игроков. В свежем сообщении на официальном форуме разработчики в деталях рассказали о процессе расследования этого интересного случая и о том, что они собираются полностью воссоздать оригинальное поведение эффекта (вместе с небольшой вероятностью на ежесекундное срабатывание) с которым имели дело игроки, пусть оно и противоречит задумке первых создателей. Сообщение получилось большим, но довольно любопытным.
Сапфирон в WoW ClassicВсем привет!
Недавно мы завершили тестирование Наксрамаса на PTR. Выражаем большую благодарность всем тем, кто помогал нам искать неполадки или уязвимости, чтобы мы могли исправить их до выхода. Нам часто приходят вопросы о том, как мы определяем, что является неполадкой и что стоит изменить, поэтому я думаю, вам будет интересно в деталях узнать о исследовании ледяной ауры Сапфирона.
- Вкратце для тех, кому интересно узнать итог: мы изменим заклинание так, чтобы оно срабатывало четко каждые 2 секунды.
Когда Сапфрион находится в бою, на весь рейд действует "Ледяная аура", описание которой звучит следующим образом: "Наносит урон от магии льда каждую секунду", однако по сообщениям многих игроков должно говориться про 2 секунды. Первым вариантом была мысль: "это версия из Wrath of the Lich King", но мы знаем, что в столь сложной игре как WoW могут встречаться удивительные и неожиданные взаимодействия, поскольку за последние 15 лет многое изменилось. Когда нынешнее поведение не соответствует воспоминаниям игроков или разработчиков, мы всегда относимся к этому с небольшим подозрением. Иногда выходит так, что неверными оказываются наши воспоминания, но иногда находятся и некорректные взаимодействия, поэтому обычно требуется расследование, и наш случай был именно таким.
Мы изучили множество старых видео, и хотя некоторые из них были сделаны в иных дополнениях, мы смогли найти несколько роликов, которые демонстрировали оригинальное сражение. В итоге эти ролики показали наличие обоих темпов срабатывания в данном сражении. По-видимому, ледяная аура в большинстве случаев срабатывала каждые 2 секунды, однако, изредка, в течение краткого срабатывала и каждую 1 секунду, а затем возвращалась обратно к срабатыванию каждые 2. Также мы проверили этот момент на нашем справочном сервере, и поведение оказалось аналогичным тому, которое мы увидели в роликах: в большинстве случаев срабатывание происходит каждые 2 секунды, но периодически несколько раз происходит срабатывание каждую секунду, прежде чем вернуться обратно к 2.
Однако самой полезной подсказкой оказалось следующее сообщение дизайнера WoW по имени Daelo, в котором он в 2009 году описал исправление "Ледяной ауры" Сапфирона так, чтобы она "наносила урон так, как это происходило ранее в обновлении 3.0.8":
"
Только что мы ввели срочное исправление для "Ледяной ауры" Сапфирона, чтобы она наносила урон так, как это происходило ранее в обновлении 3.0.8, вне зависимости от размера рейдовой группы или производительности игрового мира. Она должна наносить 1200 ед. урона каждые 2 секунды в обычном режиме и 1600 ед. урона каждые 2 секунды в героическом. Вы заметите, что негативный эффект "Ледяная аура" больше не имеет обновляемого времени действия. В подсказке также некорректно указывается, что урон срабатывает каждую секунду. Описание подсказки будет исправлено в следующем доступном обновлении игрового клиента."
Это однозначно говорит о том, что до обновления 3.0.8 она наносила урон каждые 2 секунды, однако данное срочное исправление было подготовлено для Наксрамаса в версии Wrath of the Lich King. Нами уже были обнаружены другие различия между оригинальной и Wrath of the Lich King версиями Наксрамаса, и хотя это сообщение было полезным, одного его было недостаточно для окончательного прояснения вопроса. В нем содержалась важная деталь касательно обновления времени действия негативного эффекта, которая навела нас на подозрение о том, что момент обновления периодического эффекта мог накладываться на момент срабатывания урона. В WoW Classic, когда вы обновляете периодический эффект, он сбрасывает таймер периодического урона, в результате чего вы можете потерять срабатывания, и поскольку время действия "Ледяной ауры" составляет 5 секунд, то она сбрасывается по ходу боя. Поэтому было логично предположить, что таймер урона тоже сбрасывался. Конечно же, нами уже было воссоздано такое поведение в WoW Classic, так что это не объясняло присутствие различий между этим двумя версиями.
Тогда мы решили внимательнее изучить код игры и обнаружили различия в способах повторного наложения ауры Сапфироном. И в справочном клиенте, и в WoW Classic повторное наложение ауры происходит как часть процесса триггера действия, который срабатывает каждые 2 секунды. Однако в оригинальном коде триггер действия использует общий таймер со срабатываниями периодического урона и всегда происходит первым. В современном коде они используют независимые таймеры, чтобы запускаемые длительное время скрипты действий не задерживали момент срабатывания заклинания.
Это означает, что когда Сапфирон повторно накладывал "Ледяную ауру" в справочном клиенте, то момент нанесения урона, который вот-вот был должен случиться, гарантированно перекрывался, в результате чего следующее срабатывание не происходило. В современном коде и момент нанесения урона, и момент повторного наложения происходят одновременно, однако управляются двумя раздельными таймерами, поэтому какой-то из них может произойти раньше. Поэтому в данном сражении повторное наложение обычно случалось уже после срабатывания урона в ту же секунду, поэтому игроки получали полный урон на каждом срабатывании, а не на следующем.
Но это все равно не решило загадку. Оставался вопрос насчет периодических ежесекундных срабатываний, которые мы наблюдали в оригинальных видео и справочном клиенте. Они происходили редко, но если справочный клиент гарантировал обновление эффекта до срабатывания урона, то как тогда это могло происходить каждую секунду? Получалось, что "Ледяная аура" не всегда накладывалась успешно, и если этого не происходило, то существующий периодический эффект наносил урон каждую секунду до следующий попытки обновления ауры через две секунды, например так:
Time (seconds) | Event | Damage | 0 | Aura #1 Applied | 0 | 1 | Aura #1 ticks | 600 | 2 | Aura #2 Applied (clips Aura #1) | 0 | 3 | Aura #2 ticks | 600 | 4 | Aura #3 fails (Aura #2 ticks) | 600 | 5 | Aura #2 ticks | 600 | 6 | Aura #4 Applied (clips Aura #2) | 0 | 7 | Aura #4 ticks | 600 |
|
Поскольку уровень Сапфирона на 3 выше, чем у игрока, то заклинание промахивается лишь в 1% случаев, и это объяснило периодические ежесекундные срабатывания, которые мы увидели в видео и в нашем справочном клиенте.
Также мы связались в дизайнером оригинальной версии игры, который все еще трудится в Blizzard, но в команде другой игры. После того, как мы описали ему свои находки, он согласился с тем, что по изначальному дизайну урон должен наноситься каждую секунду, а тот факт, что момент повторного наложения ауры перекрывал срабатывание периодического эффекта, является неполадкой, которая была обнаружена и исправлена только во Wrath of the Lich King.
И что же дальше? Зачастую нам приходится внимательно изучать конфликт между оригинальным планом и оригинальным поведением. В подобных случаях нет единственно верного решения, но в нашем варианте корректным решением все же было оригинальное поведение, и мы собираемся исправить неполадку аналогично тому, как поступил Daelo во Wrath of the Lich King. В современном коде мы имеем возможность надежно накладывать ауру, которая наносит урон каждые 2 секунды, пока босс остается живым, и мы перепишем данную способность таким же способом, как сделал Daelo во Wrath of the Lich King.
Хотя поведение, которое привело к тому, что эффект срабатывал каждые 2 секунды вместо 1, было неполадкой, она была достаточно постоянной, чтобы быть неотличимой от текстовой неполадки в описании ауры. Выбор последовать за оригинальным решением привел бы к тому, что игроки стали бы получать в два раза больше урона, чем они получали в 2006 году, так что данное решение является полностью оправданным.
Надеюсь, что вам понравилось погружение в процесс разработки. Увидимся в Азероте!
Всем привет.
Хочу поделиться еще одной новостью. Внимательные читатели в моем предыдущем сообщении обратили внимание на 1% вероятность получения дополнительного урона, и хотя в целом это значение очень небольшое, получение дополнительных 600 ед. урона может породить опасную цепочку событий, из-за которой сражение станет заметно более сложным, особенно в случаях если ваше сопротивление магии льда невысоко.
Рад сообщить, что после публикации моего сообщения наш новый член команды добавил эффект, который полностью воспроизводит 1% вероятность получения дополнительного урона от магии льда, что должно еще сильнее приблизить уровень сложности к оригинальному.
Будьте внимательны к урону! Зима близко.
[Источник]