Wave.dll - Волновой алгоритм поиска пути.
Вобсчем написал волновичокк....просьба потэстить на работоспособность. Версия библиотеки пока еще очень сырая....так что особо не ругать.....Также принимаюцца предложения по улучшению данной библиотеки.
В аттаче : - DLL. - DECLS. - Руководство пользователя на русском. - Пример использования. Качать здесь (30 кб - Версия 0.3 ) : http://ffa.ucoz.ru/Wave_beta.rar |
Re: Wave.dll - Волновой алгоритм поиска пути.
Было бы клево, ОЧЕНЬ клево:
Wave_SetPersPos(id%, x%, y%) - cделать такое же для Wall. Вдруг у меня там дверь или какой-либо перемещающийся обьект?! Далее... ввести 3-ю координату Z (для 3-д приложений). ВВести размеры X-YMap более 127 (например 500-600) Все! И цены тебе бы небыло!!! |
Re: Wave.dll - Волновой алгоритм поиска пути.
Xander
если при таких условиях оно еще не будет тормозить то тогда действительно цены бы ему небыло :) |
Re: Wave.dll - Волновой алгоритм поиска пути.
2 jimon: Главное чтобы эти параметры были. Тормоза будут покрыты тем что будет 3 координаты и больший размер карты. (кто не захочет тот не будет юзать!)
|
Re: Wave.dll - Волновой алгоритм поиска пути.
600*600*600 = =-O
|
Re: Wave.dll - Волновой алгоритм поиска пути.
HolyDel
угу, волновой алгоритм не предзначен для такого для такого вообще ничего из "простых алгоритмов" не предназначено :) |
Re: Wave.dll - Волновой алгоритм поиска пути.
начнем хотябы с массива под ету хрень.
допустим 32битный 3х мерный массив. по 600 в каждом измерении. скока он займет памяти? правильно: 600*600*600*4 = 823,974609375 метра. Не, мне конечно не жалко, но ето тока цветочки. Настоящее начинается при вычислении пути, предположим из одного угла в другой. |
Re: Wave.dll - Волновой алгоритм поиска пути.
Помню в универе на 4 курси по системам Искуственого Интелекта мы писали игру типа танчики каторые искали путь в лаберинте, так вот я использовал волновой алгоритм поиска пути. лаберинт был не больно 20 на 20 вроде так он оказался тормозной... вот тут алгоритм А* там в тексте есть линк на примеры и либы на Blitz написаные http://www.policyalmanac.org/games/a...torial_rus.htm
|
Re: Wave.dll - Волновой алгоритм поиска пути.
Интересно, а как вы его запустили? :) У меня error!
|
Re: Wave.dll - Волновой алгоритм поиска пути.
to Xander.
1)А в чем проблемма? если тебе нужно переместить Ящик на поле - очищай ячейку откуда ящик передвигается (Wave_DeleteWall) и вставляй стену в ячейку куда ящик должен передвинуться (Wave_AddWall), предварительно проверив не стоит ли в этой ячейке кто (Wave_CheckNodePers). А команда о которой ты сказал, у нее смысл гораздо глубже чем ты думаешь - она не тока меняет значения в основном массиве....тама еще паралельно производятся изменения в массиве "Персов". 2) =O-0 А как ты себе это представляешь? Путь вседга ищется в 2Д.....третья ось тока схавает лишних ресурсов....и легче от этого не станет. 3) Даже максимум - 127 для волновичка это уже много. Ты погоди, доделаю эту либу - возьмусь за АСтар! Вот тама будет где разгуляться фантазии! Хоть тыщу ставь! To WaReZ_MEN - значит у тебя волновичок реализован криво.... у меня на функцию Wave_FindPathFast() - ушло 59 строк кода...... и тесты показали что на поле 100*100 время на поиск пути уходит от 9 до 12 миллисекунд....это если старт находиться в одном углу, а финиш - в другом. если растояние до финиша меньше там уже просчет этой команды - не чувствуется (от 0 до 5 мс). |
Re: Wave.dll - Волновой алгоритм поиска пути.
2 Diablo1909:
Ок, по первому пункту ты прав! Насчет размера есть вопрос-предложение. Возможно ли сделать чтобы задавалось большее поле, но я мог устанавливать поиск пути в определенные пределы. Тоесть например поле у меня размера 600х600, а указано искать в педелах 125, от начала точки поиска до конца. Также встречный вопрос - как в 3Д искать путь с помощью твоей библы? например на терайне мне надо найти точку... Координата Y-высота... Z - глубина. X-длинна. Вроде правильно написал. |
Re: Wave.dll - Волновой алгоритм поиска пути.
To Xander
- Так это можно реализовать самому. Сначала вытаскиваешь координаты перса командами Wave_GetStepNodeX( id, чтобы получить Х перса - здесь обязательно ставь 0 !!! ) также и с Y. Затем вычисляй dis=sqr(x1-x2)^2-sqr(y1-y2)^2 - где x2 и y2 - это точка назначения. dis = это и будет расстояние до нужной тебе точки. Если она меньше некоего предела то ищи путь, если больше - уменьш x2 и y2. Волновой алгоритм не будет просчитывать все поле, он сам остановится если найдет целевую точку. В принципе можно поставить и побольше, максимум поставлю X\Y=1000. В 3Д ищется путь также как и в 2Д. А насчет высоты гор и стен и так далее - то это уже забота программистов и гейм-дизайнеров. =))) Ок. Седня вечером будет большой апдэйт. =))) |
Re: Wave.dll - Волновой алгоритм поиска пути.
Люди обьясните плиз, как найти 3Д путь с помощью двух координат х и у? С помощью этой библы.
|
Re: Wave.dll - Волновой алгоритм поиска пути.
|
Re: Wave.dll - Волновой алгоритм поиска пути.
Цитата:
|
Часовой пояс GMT +4, время: 23:22. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot