Залипает Босс

Роман

Heir
Customer
10 Years Anniversary
QA Engineer
Всем привет! Подскажите, пожалуйста, сталкивался ли кто-нибудь с похожей ситуацией.

На сервере реализован универсальный босс, который:

• флагает всех игроков вокруг после своей смерти
• выдаёт ачивку за убийство

Проблема долгое время не проявлялась, пока босса фармило 10–15 человек. Однако при увеличении числа участников до 50–100 игроков появляется следующая аномалия:

После убийства босс не умирает корректно - вместо стандартной анимации смерти он просто останавливается.
С него выпадает дроп, но он остаётся стоять с нулевым HP до тех пор, пока не исчезнет по таймеру.
Из-за этого:

• не срабатывает флаг игроков вокруг
• ачивка выдаётся некорректно - кому-то засчитывается, кому-то нет, хотя все условия для зачисления ачивки были соблюдены.

Изначально я связывал проблему с умирающим диском на старой серверной машине. После переезда на новое, значительно более качественное железо, большинство проблем, связанных с производительностью, исчезли - сервер работает стабильно и быстро.
Однако данный баг с боссом сохранился, что исключает проблему железа.

Есть вероятность, что это я где-то накосячил, но выявить причины не удалось. Проверить ситуацию возможно только при большом количестве участников:
если убивать босса соло или небольшой группой - всё отрабатывает практически мгновенно и корректно. Проблема возникает исключительно при массовом фарме.

Буду благодарен за любые идеи, наводки или похожие ситуации.
 
с пакетником случаем не шаманил)?


если верить рассказу то при X=10 - True если Х>50 -False
Наводит на мысль, что в какой то момент просто обрывает пакет.. при превышении лимита запросов в момент убийства босса если 10- игрокам разом дает, а к примеру из 100 дает тем же 10-20% то вывод очевиден..
Аи верный стоит)?
 
Было дело, пробовал менять некоторые параметры в packetfilter.xml , но по итогу вернулся к исходному варианту без изменений - не помогло.

Верный AI, в смысле эти настройки внутри NPC?
<set name="ai_type" value="UniversalFighter"/>

<ai_params>
<set name="SelfAggressive" value="100"/>
<set name="isMadness" value="15"/>
<set name="flagging_around_players_on_dead" value="true"/>
</ai_params>

Еще пробовал менять этот параметр до 2 и 3, но вернулся к 1.
# Количество менеджеров для задач AI
AiTaskManagers = 1
 
Еще я делал вот такие запросы в базу данных сервера:
mysql -u root -p -D ServerDB -e "ALTER TABLE items ADD INDEX idx_owner_location (owner_id, location);"
mysql -u root -p -D ServerDB -e "ALTER TABLE characters ADD INDEX idx_pvp (pvpkills);"
mysql -u root -p -D ServerDB -e "ALTER TABLE characters ADD INDEX idx_pk (pkkills);"
mysql -u root -p -D ServerDB -e "ALTER TABLE character_quests ADD INDEX idx_char_id (char_id);"
mysql -u root -p -D ServerDB -e "ALTER TABLE items ADD INDEX idx_item_type (item_type);"
mysql -u root -p -D ServerDB -e "ALTER TABLE character_friends ADD INDEX idx_friend_id (friend_id);"
mysql -u root -p -D ServerDB -e "ALTER TABLE character_skills ADD INDEX idx_char_obj_id (char_obj_id);"
mysql -u root -p -D ServerDB -e "ALTER TABLE character_subclasses ADD INDEX idx_char_obj_id (char_obj_id);"
 
23.10.2025 были правки в эту сторону,там действительно не совсем корректно было с раздачей флагов/ПК.
Скажи плиз у тебя обновления более свежие ? Если да, могу пересмотреть еще раз, хотя уже предварительно было все проверенно.
Так же скинь полный конфиг для НПЦ в data/npc. Прямо всего НПЦ скинь.
Так же посмотри в services.log есть какие-то ошибки или в stdout
 
Last edited:
23.10.2025 были правки в эту сторону,там действительно не совсем корректно было с раздачей флагов/ПК.
Скажи плиз у тебя обновления более свежие ? Если да, могу пересмотреть еще раз, хотя уже предварительно было все проверенно.
Так же скинь полный конфиг для НПЦ в data/npc. Прямо всего НПЦ скинь.
Так же посмотри в services.log есть какие-то ошибки или в stdout
Пишу тут, чтобы не засирать ЛС в ТГ.

Только что удалось протестировать убийство босса на лайв-сервере с крайней обновой и вместе с AI "Fighter" вместо "UniversalFightr".

Босса фармило примерно 20 человек — проблема повторилась. После убийства дроп падает на землю, затем у босса наблюдается лаг около 3 секунд, и после этого он умирает.
По моим наблюдениям, если бы участников было 50+, босс завис бы до самого исчезновения (despawn), и флаг вокруг не сработал бы.

Возможно, это важно: ранее я замечал похожую задержку при добавлении нового сабкласса. После выбора саба возникал лаг 4–5 секунд — персонаж не мог двигаться, и только после этого применялась новая профессия. Но после последних обновлений эта проблема полностью ушла: сабы добавляются моментально. Я читал, что ты заметно ускорил процесс.

Еще, когда было относительно много людей, во время отправки на ТвТ, участники весьма долго сидели в городе с аурой от ТвТ (примерно 5-7 сек.) и постепенно отправлялись на арену. Ошибок не было, просто ощущался временной лаг.

Из-за этого у меня есть ощущение, что причина может быть не в сборке, а в том, как сборка взаимодействует с моей базой данных. Возможно, я где-то допустил ошибку при слиянии серверов или при создании индексов на отдельных таблицах.
 
и так, ровно так же все и при "Fighter" и при "UniversalFightr" ?
 
100% дело в его текстуре.
Важно отметить, что используемая текстура взята от обычного классического моба Interlude.

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

Единственный зафиксированный случай произошёл, когда босса одновременно фармило около 200 человек — после убийства также появился временный лаг, но в итоге флаг вокруг босса всё же сработал, пусть и с небольшой задержкой.
 
Использую флаг при смерти всех в радиусе и флаг при нанесении урона, палет нормальный на рб.
 
Использую флаг при смерти всех в радиусе и флаг при нанесении урона, палет нормальный на рб.
Из-за этого у меня есть ощущение, что причина может быть не в сборке, а в том, как сборка взаимодействует с моей базой данных. Возможно, я где-то допустил ошибку при слиянии серверов или при создании индексов на отдельных таблицах.
 
Из-за этого у меня есть ощущение, что причина может быть не в сборке, а в том, как сборка взаимодействует с моей базой данных. Возможно, я где-то допустил ошибку при слиянии серверов или при создании индексов на отдельных таблицах.
Стараюсь не лазить в бд, и не делал слияний, но от старта к старту, проблем с универсалами не было.
 
@Deazer
Привет. Похоже, я нашёл возможную причину этого «залипания», но для начала ещё раз всё перепроверю на тестовом сервере.

Предварительно картина такая: если система ачивок включена - босс замирает перед смертью; если отключаю систему - умирает сразу.

В целом это выглядит логично: после убийства система начинает распределять достижения всем, кто подходит под условия. Чем больше людей участвовало в убийстве, тем больше проверок и начислений нужно выполнить, поэтому и появляется задержка. Судя по всему, из-за этого и залипают любые боссы, включая эпиков, когда их бьёт большое количество игроков.

С точными выводами вернусь после полноценного тестирования.
 
@Deazer
Предположение подтвердилось! С отключенной системой ачивок всё работает идеально.
 
Back
Top