Page 1 of 1

GetPathArray3D bug?

Posted: 16.08.2015 5:48
by Wirm
Всем привет.
Заметил следующие поведение функции GetPathArray3D.
Когда только подключился к серверу и взываешь эту функцию, то она отрабатывает быстро. Но если немного побегать по миру, густо населенному домами, то эта функция начинает отрабатывать все дольше и дольше.
Как пример использую тестовый скрипт, вызывая GetPathArray3D для вычисления пути в пределах 8 тайлов, на ровной поверхности. Если в начале она максимум занимает 15мс, то потом (побегав по миру) она начинает увеличиваться до бесконечности (все параметры функции одинаковы, скрипт вызывает только GetPathArray3D и выводит затраченное время)
Насколько я понял, пока бегаешь по миру, stealth кэширует дома, а эта функция походу проверяет весь этот кэш, а не область в пределах маршрута.
Пока нашел единственный вариант обойти эту проблему, отключится от сервера и подключится заново, но это крайняя мера.
Помогите кто знает, есть ли решение этой проблемы? Может можно как то обнулять все параметры мира без переподключения или что-то подобное?
Для измерения времени использовал Timer
tmDelay := Timer;
GetPathArray3D
tmDelay:= Timer - tmDelay;

Re: GetPathArray3D bug?

Posted: 16.08.2015 10:49
by Vizit0r
насколько много\одлго надо бегать по миру, чтобы получить реально заметную задержку (до 100 мс - это запросто могут быть задержки самого стелса и ПС, а не поиска пути) ?

Re: GetPathArray3D bug?

Posted: 16.08.2015 19:15
by Wirm
Если просто бегать по лесу, то вроде все ок. Побегал сейчас 5 мин возле мест густо заселенных кастом домами, задержка с 15мс увеличилась до 600мс (я играю на сервере, где практически нет свободных мест под дом). Нажал Disconnect потом Connect и задержка опять стала 15мс.

Re: GetPathArray3D bug?

Posted: 16.08.2015 19:39
by Vizit0r
вообще при каждом изменении координат чара перебирается весь кешер на предмет обьектов, расположенных дальше чем 30 клеток, далекие - убиваются, для домов и кастомдомов убиваются еще и все части дома.
Проверь сам - далекие дома показываются во вкладке World или нет.

Re: GetPathArray3D bug?

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

Re: GetPathArray3D bug?

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

Re: GetPathArray3D bug?

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


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

Re: GetPathArray3D bug?

Posted: 16.08.2015 22:15
by Wirm
Нет, далекие айтемы не показывает.

Re: GetPathArray3D bug?

Posted: 16.08.2015 22:19
by Wirm
Vizit0r wrote: ну, это надо долго и нудно разбираться.
А какой порог препятствия по z, он регулируется параметрами? Видимо stealth думает что плот низкий и на него можно шагнуть а сервак думает иначе )

Re: GetPathArray3D bug?

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

Самое простое решение - закинуть плот в BadObjectList

Re: GetPathArray3D bug?

Posted: 17.08.2015 18:17
by Wirm
А насчет GetPathArray3D есть какие либо идеи? Как побороть эту проблему? Может какая информация нужна от меня?
Или у тебя особо времени нету на это? :)

Re: GetPathArray3D bug?

Posted: 18.08.2015 0:06
by Vizit0r
в асю мне пиши, буду смотреть. Не так просто и легко там всё.

Re: GetPathArray3D bug?

Posted: 21.08.2015 22:26
by Wirm
У меня аси нет, только скайп. Ты используешь это чудо программу? :)

Re: GetPathArray3D bug?

Posted: 21.08.2015 23:23
by Vizit0r
да, ник тот же. Одесса.