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

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

Поделиться

Страницы: 1 2 3 4 ... 15 ... 28 29 30 Следующая

kiparПостоялецwww19 окт. 20159:59#420
Mira
Если бот убедился что пути нет, он может засыпать до момента когда что-то поменяется (кто-то откроет дверь или игрок в окно выпрыгнет).
MiraПостоялецwww19 окт. 201511:11#421
kipar
Ну понимаешь ведь, что это не решение проблемы. Факт того что сервер на секунду лаганул не будет незаметным, а если там ботов 20...

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

kiparПостоялецwww19 окт. 201511:16#422
Mira
Но сервер то в любом случае лагать не будет, он же многопоточный. Просто бот на секунду замирает, а с учётом того что ему все равно некуда идти этого и не видно.
MiraПостоялецwww19 окт. 201512:16#423
kipar
НПС у меня в одной нити крутятся, встают все мобы. Тут конечно я могу распараллелить но загрузка проца дико прыгает что косвенно все равно приводит к лагулям.
Blew_zcПостоялецwww19 окт. 201519:09#424
Mira
> НПС у меня в одной нити крутятся, встают все мобы
Делай асинхронно, иначе не вариант. Быстрый поиск пути - не значит бесплатный, что его в одном потоке можно крутить. Приоритет ему на минимум еще.
MiraПостоялецwww19 окт. 201520:55#425
Blew_zc
это уже оптримизации на будущее. пока решаю с автором проблему поиска недоступного пути)
ясень пень что любой поиск - это поиск. операция дорогая и емкая особенно с такими объемами. на  карте типа танчиков или бомбермена это роли никакой не сыграет

совсем асинхронно не выйдет, что то типа отложенной очереди или с дубликатами карт, ибо пазфиндер не работает в мультитреде. так как в процеесе поиска модифицирует все свои внутренние структуры.

Правка: 19 окт. 2015 20:58

MrShoorУчастникwww19 окт. 201521:10#426
Mira
На вскидку что я вижу. Есть непроходимые и проходимые участки. На границе этих участков можно построить контур с помощью marching squares. После этого можно построить замкнутые полигоны, и определять, если объекты лежат в разных полигонах - значит они друг для друга не доступны, и нет смысла запускать поиск пути.
Blew_zcПостоялецwww19 окт. 201521:39#427
Mira
> так как в процеесе поиска модифицирует все свои внутренние структуры.
т.е. у него не контекст, а глобальные объекты еще внутри? Ну тогда поиск пути один на все, но в отдельном треде. С очередью, да.
MrShoorУчастникwww19 окт. 201522:10#428
Blew_zc
> т.е. у него не контекст, а глобальные объекты еще внутри?
Контекст вроде там. Внутренние структуры оно меняет внутри контекста. Т.е. не получится в одном контексте искать одновременно из нескольких потоков.
Blew_zcПостоялецwww19 окт. 201522:26#429
MrShoor
> Т.е. не получится в одном контексте искать одновременно из нескольких потоков
Ну и не надо. На поток по контексту.
MiraПостоялецwww20 окт. 20151:16#430
Blew_zc
на поток по карте 2000*2000? у моба не треснет ниче)

PS автор помог зарешать проблему.
проблема была в том что фишка SectorTest проверяющая нахождение цели в непроходимом участке не работала с обычными "непроходимыми" тайлами с индексом отличным от 0,
ей для работы нужен именно 0-тайл (TILE_BARRIER)
Изображение

Правка: 20 окт. 2015 16:48

Blew_zcПостоялецwww20 окт. 20157:17#431
Mira
> у моба не треснет ниче)
А кто говорит, что по количеству мобов?:)
MiraПостоялецwww20 окт. 20159:10#432
Blew_zc
Как и любой пазфиндер, карта что то на подобии большого графа  узлы которого переключают свои состояния в процессе поиска. Если туда запустить 2+ нити, то они заблудятся в лучшем случае :)

Решение с неблокирующей очередью и несколькими экземплярами должно прокатить, но пока оптимизации цпф отложу, если не всплывет ещё никаких проблем.

MiraПостоялецwww16 апр. 201622:37#433
немного некромантии
поиск из сразу нескольких стартовых точек через некоторое время работы дает AV или зависает в цикле внутри CPF
DevilDevilПостоялецwww7 мая 20168:12#434
Mira

Почему некромантии?
Это официальная "страничка обсуждений" библиотеки.
Только что вышел из бани, в следующий раз если буду в бане - пиши в скайп или имейл.

Не разбирался, почему такое происходит?
Может уже нашёл багу?
Мне чтобы исправить нужно простенькое приложение с воспроизведенной ситуацией. За пару шагов желательно )

Страницы: 1 2 3 4 ... 15 ... 28 29 30 Следующая

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

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