Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

GetPathArray3D bug?

Post Reply
Wirm
Posts: 8
Joined: 16.08.2015 5:11

GetPathArray3D bug?

Post by Wirm »

Всем привет.
Заметил следующие поведение функции GetPathArray3D.
Когда только подключился к серверу и взываешь эту функцию, то она отрабатывает быстро. Но если немного побегать по миру, густо населенному домами, то эта функция начинает отрабатывать все дольше и дольше.
Как пример использую тестовый скрипт, вызывая GetPathArray3D для вычисления пути в пределах 8 тайлов, на ровной поверхности. Если в начале она максимум занимает 15мс, то потом (побегав по миру) она начинает увеличиваться до бесконечности (все параметры функции одинаковы, скрипт вызывает только GetPathArray3D и выводит затраченное время)
Насколько я понял, пока бегаешь по миру, stealth кэширует дома, а эта функция походу проверяет весь этот кэш, а не область в пределах маршрута.
Пока нашел единственный вариант обойти эту проблему, отключится от сервера и подключится заново, но это крайняя мера.
Помогите кто знает, есть ли решение этой проблемы? Может можно как то обнулять все параметры мира без переподключения или что-то подобное?
Для измерения времени использовал Timer
tmDelay := Timer;
GetPathArray3D
tmDelay:= Timer - tmDelay;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

насколько много\одлго надо бегать по миру, чтобы получить реально заметную задержку (до 100 мс - это запросто могут быть задержки самого стелса и ПС, а не поиска пути) ?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

Если просто бегать по лесу, то вроде все ок. Побегал сейчас 5 мин возле мест густо заселенных кастом домами, задержка с 15мс увеличилась до 600мс (я играю на сервере, где практически нет свободных мест под дом). Нажал Disconnect потом Connect и задержка опять стала 15мс.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

вообще при каждом изменении координат чара перебирается весь кешер на предмет обьектов, расположенных дальше чем 30 клеток, далекие - убиваются, для домов и кастомдомов убиваются еще и все части дома.
Проверь сам - далекие дома показываются во вкладке World или нет.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

В чем тогда может быть причина? Есть какие нибудь идеи как это обходить? Если есть возможность, посмотри пожалуйста алгоритм функции GetPathArray3D, возможно логически будет понятно, в чем она так долго ковыряется. Что происходит при реконекте, почему он помогает исправить ситуацию?
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

Так же заметил, что если на пути маршрута стоит плот и движение идет с востока(E) на запад(W), то маршрут прокладывается по плоту (пытается зайти на плот с востока, но сервер не пускает(Runuo)). Если движение идет с запада на восток то маршрут строится корректно в обход плота. NewMoveXY отрабатывает аналогично.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

Wirm wrote:Так же заметил, что если на пути маршрута стоит плот и движение идет с востока(E) на запад(W), то маршрут прокладывается по плоту (пытается зайти на плот с востока, но сервер не пускает(Runuo)). Если движение идет с запада на восток то маршрут строится корректно в обход плота. NewMoveXY отрабатывает аналогично.
ну, это надо долго и нудно разбираться.


а насчет айтемов - говорю же, проверь сам - показываются далекие айтемы или нет. А то гадать можно долго и нудно.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

Нет, далекие айтемы не показывает.
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

Vizit0r wrote: ну, это надо долго и нудно разбираться.
А какой порог препятствия по z, он регулируется параметрами? Видимо stealth думает что плот низкий и на него можно шагнуть а сервак думает иначе )
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

там не настолько линейные проверки))))
стелсовая проверка проходимости совпадает с клиентской где-то на 98%. Вот твой случай попадает в эти 2%.

Самое простое решение - закинуть плот в BadObjectList
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

А насчет GetPathArray3D есть какие либо идеи? Как побороть эту проблему? Может какая информация нужна от меня?
Или у тебя особо времени нету на это? :)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

в асю мне пиши, буду смотреть. Не так просто и легко там всё.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Wirm
Posts: 8
Joined: 16.08.2015 5:11

Re: GetPathArray3D bug?

Post by Wirm »

У меня аси нет, только скайп. Ты используешь это чудо программу? :)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: GetPathArray3D bug?

Post by Vizit0r »

да, ник тот же. Одесса.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply