У меня за длительное время атаки расхождение в 1 удар
Тестировал я на локальном, полагаю что проблема может заключаться в серверной задержке. Учитывая, что данный тип атаки довольно быстрый, то кратковременные резкие скачки серверной задержди могут вызвать подобный эффект
http://s020.radikal.ru/i700/1505/f8/b903a4275dfa.png
Занимаюсь исключительно мирами Logon 3
Реалмлист: set realmlist logon3.wowcircle.com
Личный кабинет: http://cp3.wowcircle.com
Правила игровых миров Logon 3
Во первых, если делаете тест, показывайте, что скорость атаки у кота действительно равна 1. Я понятия не имею, что на вашем коте одето, но у моего кота БЕЗ шмота значения автоатаки в 3 раза меньше ваших.
Сделайте тест с хастой и без. Дело в том что если одеть кота на хаст, то разница будет значительная, и на неточности рекаунта это уже не спишешь.
Полоска, которая наложилась на чат, там написано 1,0. Она показывает свинг тайм, то есть это скорость атаки.
Да и что, ты думаешь разраб будет скрывать баги?
Хотя вообще странно что при быстрой скорости атаки есть зажевывание, а при медленной нет. И вызвано это задержками
Хм, ну там с одной стороны 1.0 с другой 0.5, а полоска посередине. Честно говоря я хз что это.
Даже если проблема в серверной задержке, это не отменяет тот факт, что классы с быстрой скоростью атаки по сути не играбельны, так как не могут тягаться с классами на которые серверная задержка значительно не влияет.
http://s020.radikal.ru/i700/1505/f8/b903a4275dfa.png
Занимаюсь исключительно мирами Logon 3
Реалмлист: set realmlist logon3.wowcircle.com
Личный кабинет: http://cp3.wowcircle.com
Правила игровых миров Logon 3
Но, если смотреть теже логи этого не было. И иногда видны автоатаки или спэллы на много ближе друг другу или даже одновременно, потому как спэллы вставали в очередь и не терялись.
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Прошел год с последнего коммента и полтора с создания темы. Кот с 1.0 скорость автоатаки: 1000автошотов = 1114 секунд. Кот теряет 11% урона автоатаки. Автоатака кота делит 1-2 строчку со шредом и дает 30-35% общего урона. Мб стоит уже шевелится а не делать списки рейдов и апать до бесконечности треш в цлк.
Апну тему, и поделюсь своими наблюдениями, т.к. на данный момент это одна из важнейших проблем и возможно я чем-то помогу в её решении. Все виды автоатаки, на игровых мирах Логон 3, происходят со статичной задержкой. На х1 это приблизительно 100мс, вне зависимости от онлайна, времени суток и серверной задержки. На х3 приблизительно 50мс, на опентесте её нет. В спойлере скрины, на которых это видно. Таймер запускался одновременно с началом автоатаки.
х1 ПВЕ
600/543=1,105
Задержка 105мс[свернуть]
х3 ПВП
600/570=1,053
Задержка 53мс[свернуть]
Public Test Realm
600/597=1,005
Задержка 5мс(незначительна)[свернуть]
Проводил данные тесты в разное время суток и при разных значениях онлайна на х1, результат всегда одинаковый (расхождения в 10мс). Ну и логично предположить, что причина не в серверной задержке. Смущает, что на тесте и х3 при отстутствии онлайна разная задержка (на тесте она вообще отсутствует). Так же у Вероны, при проверке на локальном сервере, не было данной задержки. Насколько я помню на тесте отключен античит, возможно проблема в нем? Тогда почему такая разница в задержке между х3 и х1? Возможно разные настройки античита или влияние конфигурации сервера или настройки базы данных.
Данная проблема не критична для классов с медленной скоростью атаки, но такие классы как рога, кот, энх ощущают её в полной мере. К примеру кот и мутирога разгоняют автоатаку в рейде до 0,5сек, а по факту имеют 0,6сек, в итоге теряют 20% автоатак.
Так же пытался разобраться в ядре тринити, что бы понять алгоритм события автоатаки.
Player.cpp
Код:if (isAttackReady(BASE_ATTACK)) { if (!IsWithinMeleeRange(victim)) { setAttackTimer(BASE_ATTACK, 100); if (m_swingErrorMsg != 1) // send single time (client auto repeat) { SendAttackSwingNotInRange(); m_swingErrorMsg = 1; } } //120 degrees of radiant range, if player is not in boundary radius else if (!IsWithinBoundaryRadius(victim) && !HasInArc(2 * float(M_PI) / 3, victim)) { setAttackTimer(BASE_ATTACK, 100); if (m_swingErrorMsg != 2) // send single time (client auto repeat) { SendAttackSwingBadFacingAttack(); m_swingErrorMsg = 2; } } else { m_swingErrorMsg = 0; // reset swing error state // prevent base and off attack in same time, delay attack at 0.2 sec if (haveOffhandWeapon()) if (getAttackTimer(OFF_ATTACK) < ATTACK_DISPLAY_DELAY) setAttackTimer(OFF_ATTACK, ATTACK_DISPLAY_DELAY); // do attack AttackerStateUpdate(victim, BASE_ATTACK); resetAttackTimer(BASE_ATTACK); } }[свернуть]
Тоесть после готовности таймера автоатаки, сервер делает проверку на возможность атаки ренжа, проверку на лос и наличие цели перед лицом (выделил красным проверки и событие сброса таймера автоатаки), а это все обращения к координатам через базу данных. И только после этого наностися урон и сбрасывается таймер автоатаки. Возможно, данные обращения к координатам и вызывают задержку. Но я все равно не могу понять, почему эта задержка всегда статична и не изменяется от кол-ва онлайна. В общем, надеюсь вы найдете причину задержки и найдете возможность от неё избавиться или по крайней мере снизить до приемлемых значений.
P.S. Я не уверен что это взаимосвязано, но смею предположить, что причина у них общая. На применение спелов тоже есть задержка. К примеру год или два назад, точно не помню уже, но точно на новом ядре, решил я сделать дц. Пошел я в рейд и обнаружил, что я за 30сек (время которое висит Слово силы: Щит) немогу защитовать фул рейд (25 человек). При том, что хасты для гкд у меня был жуткий перекап (холи шмот). Тоесть я шел по порядку и щитовал группу за группой и когда я заканчивал щитовать последних, с первых уже спадал щит (не от урона, а конкретно истекало время бафа). Так же после этого тестировал другие заклинания, засекал таймер и всегда фактическое кол-во скастованых заклинания было значительно меньше кол-ва которое я теоретически должен был скастовать. Так же это заметно в пвп, многие это уже писали в игровом разделе, т.к. заклинания используются с небольшой задержкой.
Между серверами в коде(античиты и т.д.) врятле есть разница, и все же, наверняка влияет именно нагрузка на сервер потому как между х3 и х1 ее точно быть не должно.
Скорее всего баг действительно глобален, и он относиться к любому взаимодействию клиента и сервера. Решить наверное можно вычитая сервер делай от следующего возможного времени использования.
Я лишь высказал свои мысли на этот счет. Тогда не понятно почему на х3 есть задержка а на тесте нет, ведь ядра одинаковые и онлайн на них одинаковый (его нет). Если бы влиял фактор нагрузки на сервер, тогда бы эта задержка росла с ростом онлайна и падала с его понижением. А она каким-то магическим образом, что утром с онлайном в 1к, что вечером с онлайном 5к всегда одинакова. Если у тебя скорость аттаки 3,7 фактически ты будешь бить со скоростью 3,8. Если скорость атаки 0,5, фактически будет 0,6. Насчет вычитания из времени использования тоже думал. В ядре, в методе класса задающего скорость атаки (скорость каста, гкд), дописать вычитание этой задержки. Но что тогда будет если скорость аттаки разогнать до значения меньшего данной задержки? Сейчас это по идеи можно сделать с адкшным вурдалаком.