WORLD OF WARCRAFT

Тема: Комментарий разработчиков на тему NHAM в Diablo II: Resurrected  (Прочитано 4861 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Mylisp

  • Модератор
  • Старожил
  • *
  • Сообщений: 2305

  • Варкрафт: +
    • Имя: Лиликап
    • Класс: Друид
    • Сервер: Ревущий Фьорд
  • Рейтинг:0 (+0 | 0)



Менеджер по общению с сообществом Адам "PezRadar" Флетчер выложил объёмный комментарий на тему нашумевшей в сообществе неполадки NHAM (Next Hit Always Misses – следующий удар всегда мимо), которую разработчики недавно признали "не-багом". По словам Адама, хотя конкретно этот случай не был затронут напрямую, он объяснил логику разработчиков, и то, почему данная неполадка перестанет докучать игрокам.:cut:

Мы уже подробно освещали данную тему, поэтому расскажем вкратце: суть неполадки NHAM, как её называют в сообществе, состоит в том, что если во время анимации атаки или произнесения умения вы получите урон и войдёте в анимацию "восстановления после удара", то следующая атака или умение гарантированно не попадёт по противнику.

Ниже приведён перевод объяснения данной неполадки, которое выложил PezRadar на reddit, и почему она возникает:

Цитировать
NHAM это интересная тема для обсуждения. Я знаю, что Род Фергюссон уже затрагивал этот вопрос, но я готов поделиться деталями того, как и почему это работает по-особенному.

В зависимости от того, как посмотреть, мы одновременно и не трогали nham, но в то же время мы, в некотором плане, исправили её.

Сначала я объясню, как работает оригинальная Diablo II: что вы видите как игрок, и почему NHAM воспринимается как неполадка. Есть два места, где происходит игровая логика во время игры в Diablo II. Одна на стороне клиента, который является вашим компьютером, а другая на стороне сервера, то есть на наших компьютерах. Когда вы играете с другими игроками, они выполняют действия на своём собственном клиенте, что затем переносится на сервер. Сервер всё это сортирует и отсылает информацию обратно на клиент каждого игрока. Когда информация на сервере отличается от той, что находится на клиенте, происходит так называемая “десинхронизация”. Из-за этого возникает “разрыв соединения” (ориг. rubber banding), из-за которого персонажа откидывает назад, когда на сервере и на клиенте он находится в двух разных местах. Поэтому, если у вас плохое соединение с сервером, вы будете наблюдать разрыв соединения чаще. Когда мы модернизировали Diablo II Classic до Diablo II: Resurrected, мы проделали серьёзную работу по максимальному снижению случаев десинхронизации.

Ещё одним примером десинхронизации является момент, когда игрок выполняет какое-то действие (например, использует “Телепортацию” или “Ледяная нова”), но затем получает урон. На стороне клиента, у игрока проигрывается анимация. Атаки и применение умений не производятся на первом же кадре анимации, они производятся чуть позже [Mylisp: совершенно все действия любых целей (персонажей, монстров, враждебных элементов окружения) привязаны к оригинальным 25 кадрам в секунду, поэтому чтобы произнести заклинание, например, “Огненный шар” волшебницы, то оно занимает (без усилений) 13 кадров, но сама атака воспроизведётся на 7-м кадре, не на первом]. Если приводить в пример “Телепортацию”, вы сначала увидите начальную анимацию, и только потом, несколько кадров спустя, ваш персонаж перенесётся из одной точки в другую. Если во время воспроизведения анимации вы получите урон, произнесение заклинания будет отменено. В оригинальной Diablo II вы видели, как анимация продолжает воспроизводится, хотя должна была мгновенно остановиться. Из-за этого казалось, что ваше следующее умение промахивалось, т.к. данные клиента и сервера различались. После этого, клиент отвергал любые успешно произнесённые умения, т.к. знал, что ваш персонаж всё ещё находится в состоянии анимации “восстановления после удара”, хотя со стороны и казалось, что анимация вашего удара прошла успешно. И именно поэтому кажется, что “Телепортация” произнеслась успешно, что “Ледяная нова” произнеслась успешно, но на деле ничего не произошло.

Неполадка NHAM, которую наблюдают игроки, в некотором роде привязана к тому, что я только что описал, когда следующая атака или произнесение заклинания после анимации “восстановления после удара” не срабатывала. Причина, по которой такая ситуация возникает, состоит в конфликте данных сервера и клиента. В Diablo II: Resurrected были введены значительные улучшения, благодаря чему теперь игрок видит корректные данные клиента. Поэтому, если вы получили урон на клиенте и всё ещё находитесь в этом же состоянии “получения урона” на сервере, теперь вы будете видеть одинаковую информацию и на клиенте, и на сервере. Логика осталась нетронутой со времён оригинальной игры, но мы исправили отображение этого на стороне клиента.

Отзывы на тему этого вопроса после выхода игры будут очень важны для нас. Как говорил Род, мы продолжим отслеживать отзывы после релиза игры, и нам кажется, что чем больше отзывов нам придёт, тем лучшее представление мы сможем получить насчёт настроений в сообществе.

Извиняюсь за объёмное сообщение, но это уж точно интересная тема, которая связаня со многими другими вещами.
« Последнее редактирование: 17 Сентября, 2021, 17:58:09 by Mylisp »

Kargath

  • Благодетель
  • Старожил
  • *
  • Сообщений: 1149
  • Рейтинг:0 (+0 | 0)
Один в один то же самое происходит и в WoW, только с каждой новой механикой а-ля "планирование ДХ" он же Glide, шанс на десинхронизацию значительно повышается, тем более, что новые разработчики игры не могут переделать базовые основы обработки перемещений (movement system) и вынуждены лепить костыли.

Именно поэтому все пиратки кажутся очень сильно лагучими при активных действиях, например на БГ, до сих пор с 2006 года, ни одна пиратка не реализовала movement system правильно. Поэтому можно наблюдать жесткое падение FPS при попытке вешать на падающего/телепортирующегося персонажа что-то вроде рутов и даже получить вылет клиента у всех кто видит такое, если сервер ошибочно разошлет апдейт с суммой movement флагов рут+любой флаг движения, например forward - движение вперед.

kreonk

  • Завсегдатай
  • **
  • Сообщений: 338

  • Варкрафт: +
    • Имя: Никигор
    • Класс: Маг
    • Сервер: Гордуинни
  • Рейтинг:0 (+0 | 0)
А, ну т.е. в шутерах во многих проблема с отсутствием регистрации выстрелов раз в день встречается, если нет неполадок на сервере, а тут это фича, которую надо такой огромной пастой объяснять с умным видом, будто игроки с онлайн играми никогда не сталкивались. Чинить сетевой код надо и всё

 

закрыть