Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / CrystalPathFinding (CPF) - экстремально быстрый и простой A*/WA* для карт на тайлах (30 стр)

CrystalPathFinding (CPF) - экстремально быстрый и простой A*/WA* для карт на тайлах (30 стр)

Поделиться

Страницы: 1 2 3 4 ... 16 ... 29 30

MiraПостоялецwww7 мая 201611:01#435
DevilDevil
ну да фиг знает может ты забил на проект.
не, очень сложно трассировать в сервере когда карту последовательно юзают куча ботов.
я бы мог это списать на повреждения памяти, но без этого работает норм.

разбираться в коде с оптимизациями сложно:DDD но я находил в цпф тот участок где он уходит в бесконечный цикл.
кстати тема с "секторизацией" забавная, я даже добавил метод GetSector(x,y):byte вроде норм. я так понял их максимум 255 может быт?

DevilDevilПостоялецwww7 мая 201612:25#436
Mira
> ну да фиг знает может ты забил на проект.

Я его не для того разрабатывал, чтобы забивать )

> я даже добавил метод

Может в этом дело? Там ведь не все так просто

> но я находил в цпф тот участок

А чего не выложил?
В общем предлагаю собраться силами и исправить баг. С тебя сделать проект, в котором можно повторить ошибку, и желательно побыстрее. С меня - исправить и выложить обновление.

MiraПостоялецwww7 мая 201615:03#437
DevilDevil
> Может в этом дело? Там ведь не все так просто
нет, я его добавил после неприятностей с мультипоиском. если не правильно скажи что еще добавить. ну у меня пока работает)
function TTileMap.GetSector(x,y:word):byte;
begin
  if (Self.SectorTest) then
  begin
    if (FActualInfo.SectorsChanged) then ActualizeSectors;
  end;
  result:= PByte(NativeInt(FActualInfo.Sectors) +
        NativeInt(Width) * Y + X)^;
end;

function TTileMap.GetSector(const pt:TPoint):byte;
begin
  if (Self.SectorTest) then
  begin
    if (FActualInfo.SectorsChanged) then ActualizeSectors;
  end;
  result:= PByte(NativeInt(FActualInfo.Sectors) +
        NativeInt(Width) * pt.Y + pt.X)^;
end;
зачем я его сделал? просто иногда случаются ситуации что нужно найти путь из точки помеченной как препятствие, или цель находится на "барьере". пазфиндер в этом случае даст фейл при любых настройках а мне нужно дойти хотябы до ближайшей клетки.
щас я просто ищу свободную точку по бокам этой, и проверяю в том же секторе точка А что и Б или нет. если в том же то создаю путь. костыльно конечно но работает.
DevilDevil
> А чего не выложил?
предупредил вероятных пользователей либы, что могут быть проблемы в этом месте. думал тебя забанили наглухо)

Правка: 7 мая 2016 15:09

DevilDevilПостоялецwww7 мая 201615:43#438
Mira

А разве у меня в аккаунте не пишут, до какого банят? )
То что тебе нужно - делается без проблем с тайлами. Препятствия имеют нулевой тайл

MiraПостоялецwww7 мая 201615:53#439
DevilDevil
ну вот иногда оказывается что в нулевом тайле цель и нужно дойти до соседней клетки. пазфиндер не идет когда цель в барьере
MiraПостоялецwww7 мая 201615:59#440
кстати паралельный поиск из нескольких точек дает профит в скорости кроме удобства или нет?
DevilDevilПостоялецwww7 мая 201619:50#441
Mira

Вот и я про то. Когда ты смотришь клетки рядом - ты можешь смотреть не сектора, а тайлы. Т.е. если тайл не 0 - можешь смело запускать пасфайндинг. Поиск из нескольких точек не медленнее, а в ряде случаев может осуществляться быстрее.

MiraПостоялецwww7 мая 201621:47#442
DevilDevil
угу, а если цель оказалась на замкнутой линии-барьере а первый свободный тайл нащупается внутри периметра, то попытка к нему пройти сфейлится)

Правка: 7 мая 2016 21:50

DevilDevilПостоялецwww7 мая 201622:59#443
Mira

Ну да, а что делать )
Зато корректно )
У тебя кстати в функции будет AV на FActualInfo.Sectors свойство SectorTest не выставлено

MiraПостоялецwww7 мая 201623:24#444
DevilDevil
оно всегда выставлено. но да, нужно добавить проверку)
хорошо бы пазфиндер мог сам находить ближайшую точку куда подойти, но проверка дистанции резко замедлит его работу
MiraПостоялецwww1 июля 201723:20#445
благодарю за техподдержку в модификации кода пф =)

Страницы: 1 2 3 4 ... 16 ... 29 30

/ Форум / Программирование игр / Игровая логика и ИИ

2001—2017 © GameDev.ru — Разработка игр