WORLD OF WARCRAFT

Тема: Preach: Причина серьезных задержек соединения в открытом мире в Battle for Azeroth  (Прочитано 22147 раз)

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

xALEKSx

  • Старожил
  • ***
  • Сообщений: 1104
Тут просто вопрос в другом, точней будет задать вопрос так на примере классики : "Почему на Носталриусе и Лайтсхопе в самых крупных замесах 100 на 100 были незначительные фризы, а на официальных серверах от близов игра просто крашится или всё зависает напрочь? Почему на частных проектах некоторых удобство игры гораздо выше?
Ну очевидно что на пиратках половина расчетов вобще отсутствовала, поэтому и лагов меньше

xALEKSx

  • Старожил
  • ***
  • Сообщений: 1104
а по теме - решения нет. нет сейчас ни одной игры которая умеет без лагов обрабатывать гейплей нескольких десятков игроков.
и вов кстати еще отлично справляется, в других играх всё еще хуже.

WhiteLighte

  • Новичок
  • *
  • Сообщений: 6

  • Варкрафт: +
    • Имя: Фалет
    • Класс: Paladin
    • Сервер: Свежеватель Душ
А я то все гадал, почему при нормальном компе я вылетаю из игры на треше в мифик рейде,
при этом все остальное в компе работало стабильно ):

stefan_flyer

  • Лучший автор
  • Ветеран
  • *
  • Сообщений: 5450
А я то все гадал, почему при нормальном компе я вылетаю из игры на треше в мифик рейде,
при этом все остальное в компе работало стабильно ):

Ну вот вылеты это уже странно.

Deshang

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

  • Варкрафт: +
    • Имя: Дешанг
    • Класс: Outlaw
    • Сервер: Ревущий фьорд
В видео как раз сервер имелся в виду.

Тогда просто кривой перевод, окей. Автору минус в карму.

Если не запамятовал, то спор у нас шёл в том числе насчёт того, что из-за этого просаживается фпс. И он ведь просаживается.

В основном просаживается из-за обработки положения моделей игроков и кучи анимаций. Обработка пакетов от сервера именно в замесе 40х40 влияет довольно слабо, 10-15% максимум и то не всегда. Меньшее количество людей можно даже не рассматривать.

Ничего там не нужно каждый тик пересчитывать. У персонажа есть набор характеристик, каждый бафф при появлении и спадении просто меняет эти характеристики. А доты уже (если речь о них) при каждом тике просто берут готовые значения из этих характеристик.

Основная характеристика, которую для РАСЧЕТА УРОНА сервер может взять "просто так" - это сила атаки / заклинаний.
Искусность является аурой с процентным значением, как и многие другие модификаторы урона (таланты, модификатор спека, пвп-аура и т.д.).
Например, возьмем абилку друида https://ru.wowhead.com/spell=5221
Эффект 1: дает инфу о расчете базового урона на основе силы атаки
Эффект 2: дает комбо поинт при успешном попадании
Эффект 3 более интересный:
- если игрок имеет ауру https://ru.wowhead.com/spell=231057 и либо находится в стелсе либо имеет ауру https://ru.wowhead.com/spell=102543 , то к полученному урону прибавляется модификатор +20%
- также увеличивает шанс крита в два раза
Эффект 4:
- если игрок имеет ауру https://ru.wowhead.com/spell=231063 и цель имеет ауры кровотечения именно от этого игрока, то к урону прибавляется еще 20%

Затем идут расчеты от таких аур как https://ru.wowhead.com/spell=137011
После рассчитывается шанс крита на основе характеристики игрока и эффекта 3.
Затем шансы промаха, уклонения, парирования.
И уже после самого попадания начинается расчет всевозможных побочных проков типа коррапта, тринек и т.д.
Это я описал самую простую в реализации способность. Некоторые более сложные могут иметь такие скрипты, что потянут на реализацию какого-нибудь босса в данже.

Я хз, от чего тормозит, но это точно не то объяснение, которое меня удовлетворит. Современные компьютеры просчитывают триллионы операций в секунду. Запустите симкрафт и посмотрите, сколько раз в секунду он симулирует бой, причём учитывая каждый прок. Сервер именно это и делает.

Тут по большей части проблема не во внутреннем расчете, а отсылке результатов всем игрокам.
Учитывай, что информация ограничивается не только кастами и проками. Любое смещение игрока по сетке координат на полметра, любой поворот камеры хоть на полградуса также передается на сервер и оттуда всем вокруг.
Симкрафт - просто детская игрушка по сравнению с тем, что нужно делать серверу.
« Последнее редактирование: 13 Июля, 2020, 02:21:30 by Deshang »

Lesoro

  • Ветеран
  • ****
  • Сообщений: 6922
Отличный ролик. Помню тут человек со мной спорил, что это не так работает. Либо я не так пересказал, либо он всё же ошибался.

Тут еще вопрос  в том, почему именно 8.3. Система без снапшотов существует давно. Проков подвезли в 8.1. и 8.2. А система стала окончательно вставать на колени в 8.3.

Может дело в порче и росте гира? Это еще немного дополнительных проков, а главное - больше хасты, а за счет скорости сокращаются тики/автоатаки, что в итоге увеличивает требования по количеству операций на единицу времени.

P.S. С снапшотом доток играть было веселее ИМХО.
Лаги в массовых замесах на БГ уже были в Легионе, когда появились артефакты, леги и тигель из 7.3
« Последнее редактирование: 13 Июля, 2020, 02:35:24 by Lesoro »

Lesoro

  • Ветеран
  • ****
  • Сообщений: 6922
Но ведь когда 100500 элементов проков это же так весело! А еще можно не думать о классовом дизайне. Замазать все проками и готово!

Ну кстати в Дреноре миллиарда проков ещё не было, тогда это работало. Может сейчас они бы и рады вернуться (тем паче что количество всеразличных проков настолько велико, что подгадать момент и кинуть максимально сильную дотку будет затруднительно), но уже либо не комильфо, либо трудно это вновь реализовать.
В ШЛ уже будет гораздо меньше этого дела. Те же проводники взаимодействуют с абилками больше, эффекты лег тоже. То есть не проки.
Аналогов азериток и эссенций не предвидется в этом плане.
Хотя отсутствие снапшотов по-прежнему будет влиять.

К слову, я бы ещё отметил, что до БфА массовых замесов в открытом мире с неограниченным числом игроков то не было очень много лет. Проблема могла проявить себя ещё в Дреноре.

Сейчас в БфА на самом деле достаточно убить всех сов с обоих сторон 100 на 100 замеса, и лаги могут пропасть.
« Последнее редактирование: 13 Июля, 2020, 02:35:49 by Lesoro »

DarkBargain

  • Завсегдатай
  • **
  • Сообщений: 702
Все отвечающие в теме и сам Preach все-таки не совсем правы.
Давайте посмотрим на описание нынешней системы от Celestalon - https://www.noob-club.ru/index.php?topic=31447.0. Возвращаюсь к этой великой теме, потому что это наиболее понятно простому человеку, не программисту.
И здесь близов подвело то, что идеи побежали впереди паровоза. Да, менялись серваки, наращивались мощности. Но сетевой код клиента не менялся с 2003 года. Как был самописный класс NetQueue с STL-контейнерами 98 года, так он и остался. Ничего не поменялось. Да, естественно пихались костыли для поддержки новых систем, но само ядро не менялось.
Ну вот наступил WoD, в котором близы захотели реагировать на все события сразу же, без задержек. Все бы ничего, да объемы самих пакетов событий с тех пор возросли в десятки раз.

Например, возьмем пакеты комбат лога. Мало того, что теперь в комбат логи скрыто попадает начало/финиш любых кастов в радиусе видимости игрока и еще куча других событий, так еще и данные для системы ContentTuning увеличили размер среднего комбат лог пакета в 2.5 раза. Да, это та самая система что "скалирует", когда одного и того же моба моба бьют игрок условно 16 лвл и 90 лвл. Никаким скалированием конечно же там и не пахнет, клиент просто нас обманывает. Да, расчеты всего скейлинга целиком возложены на клиент, сервер присылает ему базовые цифры и ContentTuning дату, которая подсказывает, что и как нужно пересчитать.

Ауры, тут у меня даже есть примерчики. ЛК 3.3.5.12340 и актуальный БФА
(показать/скрыть)

Ну и на сладкое, есть 2 снифа, один сниф сделан утром в стартовой локе людей толи Дракономора, толи Ясеня. Ну практически 0 народу, мобы бегают, вообщем более-менее. Второй на ОЛО, на катапульте, подальше от скопления людей. Подальше да. Меня интересовала именно катапульта, а километровый спам пакетов разгребать не хотелось. Показательно, насколько сильно выросла нагрузка на траффик из-за решения реагировать на все сразу же.

Лирическое отступление, из-за возросших объемов передачи данных, все пакеты за условный "тик" объединяются в блоки SMSG_MULTIPLE_PACKETS и дополнительно сжимаются, как раз такие типы пакетов появились в конце ЛК. Я специально выделил красным/зеленым блоки событий за 1 секунду.

(показать/скрыть)

Комментарии думаю излишне. Радиус рассылки кстати тоже сильно возрос с ЛК, особенно в инстах и на БГ.

Катастрофически разроссся SMSG_UPDATE_OBJECT. Из-за артефактов / азеритовой брони и трансмога потребовалось просто колоссальное количество полей для хранения всех данных.

И еще, что я хотел бы отметить. Разработчики близард крайне ленивые люди. Я говорил о том, что из классик клиента не было вырезано вообще ничего, весь функционал ЛФД, батлпетов, ачивок, артефакты, гарнизоны - все это осталось. И даже спамит при логине запросами.

Вот еще один пример - пакет, отсылающий информацию о данжах, которые можно посетить через Поиск Подземелий. Логично предположить, что для 120 лвл не надо отправлять данжи классика, они все равно не будут отображаться в клиенте. Но близы иного мнения. Они отсылают полный пакет всех данжей, а потом отсылают отдельный пакет
Цитировать
ServerToClient: SMSG_LFG_LIST_UPDATE_BLACKLIST (0x2A2A) Length: 956 ConnIdx: 0 Time: 06/26/2020 00:06:51.808 Number: 2027
BlacklistEntryCount: 119

В итоге клиент получает дублированную информацию и совершенно бесполезную. Я не знаю, за каким буем 120 лвл игроку информация о классик данжах (возможно для совместимости с PartySync, но тогда бы и слали ее когда включен этот режим), но она идет.

Заранее собранным группам надо посвящать отдельную статью, насколько хреново там все устроено и со стороны сервера (ну судя по обмену данных, серверного кода у меня нет), и со стороны клиента. И так уже много написал, может быть потом сподоблюсь пописать статьи о технической изнанке WoW.

Aragorn13

  • Старожил
  • ***
  • Сообщений: 2072
  • Sonico

  • Варкрафт: +
    • Имя: Инфинити
    • Класс: Паладин
В БфА первые 30 секунд боя с боссами зависают начисто.
Потом игра немного приходит в себя и уже можно прожимать скиллы.

До этого такого не было.
В Пандарии вон из-за мирового босса сервера специально роняли, а лагать не лагало.
Да, держу в курсе.

Lesoro

  • Ветеран
  • ****
  • Сообщений: 6922
В БфА первые 30 секунд боя с боссами зависают начисто.
Потом игра немного приходит в себя и уже можно прожимать скиллы.

До этого такого не было.
В Пандарии вон из-за мирового босса сервера специально роняли, а лагать не лагало.
Чот странно, даже в 30 ппл героиках такого не было в Ниалоте.
Или ты про ворлдбосса?

Deshang

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

  • Варкрафт: +
    • Имя: Дешанг
    • Класс: Outlaw
    • Сервер: Ревущий фьорд
Лирическое отступление, из-за возросших объемов передачи данных, все пакеты за условный "тик" объединяются в блоки SMSG_MULTIPLE_PACKETS и дополнительно сжимаются, как раз такие типы пакетов появились в конце ЛК. Я специально выделил красным/зеленым блоки событий за 1 секунду.

(показать/скрыть)

Комментарии думаю излишне. Радиус рассылки кстати тоже сильно возрос с ЛК, особенно в инстах и на БГ.

Как приятно видеть здесь шарящего человека, который разбирается в сниффах  :-X

Aragorn13

  • Старожил
  • ***
  • Сообщений: 2072
  • Sonico

  • Варкрафт: +
    • Имя: Инфинити
    • Класс: Паладин
В БфА первые 30 секунд боя с боссами зависают начисто.
Потом игра немного приходит в себя и уже можно прожимать скиллы.

До этого такого не было.
В Пандарии вон из-за мирового босса сервера специально роняли, а лагать не лагало.
Чот странно, даже в 30 ппл героиках такого не было в Ниалоте.
Или ты про ворлдбосса?

Про Ворлд-боссов как раз.
В рейдах пореже, да и секунд на 10.

У меня еще комп лагал, именно комп, когда игра выводила все дебаффы на боссах. Включил чтобы только мои дебаффы показывала и лаги уменьшились.
Да, держу в курсе.

DarkBargain

  • Завсегдатай
  • **
  • Сообщений: 702
Как приятно видеть здесь шарящего человека, который разбирается в сниффах  :-X
Я потом еще специально сделаю сниф в скоплении людей и при лагах, посмотрю насколько сильно обработка событий на клиенте отстает от реального времени. Ну по сути если все подытожить, клиент испытывает колоссальную DDOS-атаку. Его сетевой стек не справляется с обработкой всех событий, поэтому клиент фризится и подвисает.

Deshang

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

  • Варкрафт: +
    • Имя: Дешанг
    • Класс: Outlaw
    • Сервер: Ревущий фьорд
В БфА первые 30 секунд боя с боссами зависают начисто.
Потом игра немного приходит в себя и уже можно прожимать скиллы.

До этого такого не было.
В Пандарии вон из-за мирового босса сервера специально роняли, а лагать не лагало.
Это уже проблемы твоего компа, который не может своевременно обрабатывать кадры с учётом входящей инфы (те же сотни анимаций спеллов и проков с пула).
В ШЛ появится возможность ограничивать визуальное количество анимаций от других игроков и должно стать полегче.
Как приятно видеть здесь шарящего человека, который разбирается в сниффах  :-X
Я потом еще специально сделаю сниф в скоплении людей и при лагах, посмотрю насколько сильно обработка событий на клиенте отстает от реального времени. Ну по сути если все подытожить, клиент испытывает колоссальную DDOS-атаку. Его сетевой стек не справляется с обработкой всех событий, поэтому клиент фризится и подвисает.

Современные процессоры все же более-менее нормально справляются с этим. Даже на старом i5-4570 у меня не было фризов в замесе на потасовке луноречья (40х40). Держался в районе 25 на минималках  ;D

Со сниффами активно работал в прошлом году, но по большей части интересовала базовая часть в данжах и не приходилось разгребать пвп баталии с их нюансами.
« Последнее редактирование: 13 Июля, 2020, 02:52:15 by Deshang »

Aníra

  • Завсегдатай
  • **
  • Сообщений: 233
Есть ощущение, что близзы так пассивно и вяло реагируют на эти темы / вопросы с оптимизацией и лагами на бг / масс пвп по причине того, что вложения в оптимизацию на текущем этапе очень рисокванны благодаря тому насколько стар вов, поэтому скорее всего нам придется это терпеть до скончания вова  :-X

 

закрыть