forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Wave.dll - Волновой алгоритм поиска пути. (http://forum.boolean.name/showthread.php?t=3768)

Черный крыс 28.06.2007 04:38

Wave.dll - Волновой алгоритм поиска пути.
 
Вобсчем написал волновичокк....просьба потэстить на работоспособность. Версия библиотеки пока еще очень сырая....так что особо не ругать.....Также принимаюцца предложения по улучшению данной библиотеки.
В аттаче :
- DLL.
- DECLS.
- Руководство пользователя на русском.
- Пример использования.
Качать здесь (30 кб - Версия 0.3 ) :
http://ffa.ucoz.ru/Wave_beta.rar

Xander 28.06.2007 10:36

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Было бы клево, ОЧЕНЬ клево:

Wave_SetPersPos(id%, x%, y%) - cделать такое же для Wall. Вдруг у меня там дверь или какой-либо перемещающийся обьект?!

Далее... ввести 3-ю координату Z (для 3-д приложений).

ВВести размеры X-YMap более 127 (например 500-600)

Все! И цены тебе бы небыло!!!

jimon 28.06.2007 11:51

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Xander
если при таких условиях оно еще не будет тормозить
то тогда действительно цены бы ему небыло :)

Xander 28.06.2007 12:12

Re: Wave.dll - Волновой алгоритм поиска пути.
 
2 jimon: Главное чтобы эти параметры были. Тормоза будут покрыты тем что будет 3 координаты и больший размер карты. (кто не захочет тот не будет юзать!)

HolyDel 28.06.2007 21:05

Re: Wave.dll - Волновой алгоритм поиска пути.
 
600*600*600 = =-O

jimon 28.06.2007 21:43

Re: Wave.dll - Волновой алгоритм поиска пути.
 
HolyDel
угу, волновой алгоритм не предзначен для такого
для такого вообще ничего из "простых алгоритмов" не предназначено :)

HolyDel 29.06.2007 01:24

Re: Wave.dll - Волновой алгоритм поиска пути.
 
начнем хотябы с массива под ету хрень.
допустим 32битный 3х мерный массив. по 600 в каждом измерении. скока он займет памяти?
правильно: 600*600*600*4 = 823,974609375 метра. Не, мне конечно не жалко, но ето тока цветочки. Настоящее начинается при вычислении пути, предположим из одного угла в другой.

WaReZ_MEN 29.06.2007 01:42

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Помню в универе на 4 курси по системам Искуственого Интелекта мы писали игру типа танчики каторые искали путь в лаберинте, так вот я использовал волновой алгоритм поиска пути. лаберинт был не больно 20 на 20 вроде так он оказался тормозной... вот тут алгоритм А* там в тексте есть линк на примеры и либы на Blitz написаные http://www.policyalmanac.org/games/a...torial_rus.htm

johnk 29.06.2007 03:23

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Интересно, а как вы его запустили? :) У меня error!

Черный крыс 29.06.2007 03:48

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 мс).

Xander 29.06.2007 10:30

Re: Wave.dll - Волновой алгоритм поиска пути.
 
2 Diablo1909:

Ок, по первому пункту ты прав!

Насчет размера есть вопрос-предложение. Возможно ли сделать чтобы задавалось большее поле, но я мог устанавливать поиск пути в определенные пределы. Тоесть например поле у меня размера 600х600, а указано искать в педелах 125, от начала точки поиска до конца.

Также встречный вопрос - как в 3Д искать путь с помощью твоей библы? например на терайне мне надо найти точку... Координата Y-высота... Z - глубина. X-длинна. Вроде правильно написал.

Черный крыс 29.06.2007 11:01

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Д. А насчет высоты гор и стен и так далее - то это уже забота программистов и гейм-дизайнеров. =)))

Ок. Седня вечером будет большой апдэйт. =)))

Xander 29.06.2007 14:39

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Люди обьясните плиз, как найти 3Д путь с помощью двух координат х и у? С помощью этой библы.

Черный крыс 30.06.2007 16:42

Re: Wave.dll - Волновой алгоритм поиска пути.
 
http://www.dtf.ru/articles/read.php?id=46788

Xander 04.07.2007 13:15

Re: Wave.dll - Волновой алгоритм поиска пути.
 
Цитата:

Сообщение от Diablo1909
Седня вечером будет большой апдэйт. =)))

м-м-м-м... :@ :4to:


Часовой пояс GMT +4, время: 23:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot