PDA

Просмотр полной версии : Обход препятствий ботом


Lynx
01.04.2010, 08:26
Здравствуйте! Недавно заинтересовался проблемой поиска пути.
Хотел сначала заюзать алго A*, но у него есть свои минусы. А именно
Неестественное движение(имхо главный-), ресурсоёмкость, ему требуется неподвижность препятствий и цели(с первым проблем не должно быть, со вторым будут.) ну и сложность реализации(для меня).
Плюсы-всегда находит путь.
Короче почитал на эту тему, нашёл другой выход
_http://aigamedev.com/open/tutorials/potential-fields/
короче суть в том, что вокруг препятствий как бы генерируется отталкивающее поле(которое рассеивается пропорционально расстоянию), а цель генерирует притягивающее поле, которое не рассеивается. Мы с какой-то периодичностью считаем направление равнодействующей, и идём в ту сторону.
Немного изменил его. Вот что уже получилось. Да, иногда застревает, но я уже придумал выход.
http://slil.ru/28890290 ПРИМЕР
собирал в freePascal. Управление: при запуске exe появляется окно и консоль. Так вот ставим переключаемся на консоль и на A S D W двигаем цель, на Q выход(смотрим во 2 окно=)).
Вопросы: к какому боту это приделать? К Sky или к локомотиву? других вроде бы нет?
http://i6.fastpic.ru/thumb/2010/0331/d1/e17e895f0074e2263cfe6718592f96d1.jpeg (http://fastpic.ru/view/6/2010/0331/e17e895f0074e2263cfe6718592f96d1.jpg.html)

Добавлено через 13 часов 44 минуты
теперь не застряёт)

alexteam
01.04.2010, 11:12
знакомый метод ) камушки и прочее обойдет.
но зафейлиться на углу в комнате.

http://i.piccy.info/i4/62/86/79c457e62874ed4c15bcce36e833.jpeg

Lynx
02.04.2010, 14:08
ага, знаю. для этого прийдётся другой алгоритм использовать. Но этот мне всё равно очень нравится, поля можно без проблем вешать на любой обьект. Например, чтоб от мобов убегал, чтобы преследовал моба, так пати легко организовать,
бафера за собой водить, ну и многое другое)
А* всё равно не получится, так как стенки очень долго описывать.
Да, кстати ещё никто не научился раскручивать геодату?
alexteam, я посмотрел твоего бота l2ext. Скажи,Откуда ты берёшь карты? Не в ручную же рисуешь) Нельзя ли сделать карту проходимости так же?
Вот нашёл карты катокомб. Если они точные(то есть можно подобрать масштаб при котором стенки на карте и в игре совпадают), то,думаю, может что-нибудь получится.
http://l2db.ru/themes/l2db/images/maps/DE-Dungeon.png
http://l2db.ru/themes/l2db/images/maps/catacombs/necro_of_sacr.gif

alexteam
02.04.2010, 14:51
за карты нужно говорить спасибо deMEV, http://aden.rarus.us/.

Lynx
02.04.2010, 19:49
то что я пытаюсь сделать вообще нужно? или уже есть боты, которые умеют обходить?

Добавлено через 4 часа 14 минут
alexteam, если планируешь сделать бота бесплатным, дай пароль к ветке форума, пожалуйста. Интересно.

alexteam
02.04.2010, 21:11
не планирую. )

nezabudkin
03.04.2010, 02:59
то что я пытаюсь сделать вообще нужно? или уже есть боты, которые умеют обходить?



Lynx, если реализуеш свой алгоритм в скриптах, то будешь просто молодец! Только комментариев по больше к коду пожалуйста. Я в локомотиве пытался реализовать обход прерядствий, но ничего путного не получилось, да и спокойно тестировать мало где получается (везде с ботами борнятся, как забанят IP, потом не докажешь что ты это все в научных целях =)).

Твой алгоритм идеально подходит для катакомб, когда там бегает бото-пати. мой локомотив вечно цеплялся за своих "коллег" и мобов.

Как мне кажется, идея полноценного бота на скриптах, приактического применения не находит, зато это хороший способ что-то проверить, поэкспериментировать.

Lynx
09.04.2010, 22:58
Переписал в dll, добавил функциональности.
Подскажите пожалуйста, надо ли оформлять библиотеку как плагин, если мне не нужно напрямую работать с пакетами из неё? То есть в ней вычисляются чисто математические действия. Если не очень сложно, можно пример как импортировать функцию в скрипте.

Добавлено через 4 часа 38 минут
попробую через loadlibrary