- Сообщения
- 3,608
- Репутация
- 941
Какой самый лучший способ переместить персонажа в игре из пункта А в пункт Б? Правильно, по прямой! А если на пути стоит препятствие? Большинство ботов начинают тупить, дергаться, пытаться отбежать чуть в сторону и снова продолжить путь. Надежности в этом методе мало. Вашему вниманию представляется алгоритм который используется в большинстве рпг игр. По этому алгоритму в них двигается все. Игроки, мобы, и тд и тп. Когда игрок нажимает "бежать туда-то", клиент принимает пункт назначения, смотрит текущее положение, обращается к геодате и расчитывает оптимальный маршрут.
И так, представляю вашему вниманию волновой алгоритм перемещения. Код правда трешевый, но его при желании любой может оптимизировать.
Что мы имеем?
1) Небольшой мирок размером 53х60 клеточек
2) Несколько типов поверхности: Проходимая поверхность, непроходимая поверхность, поверхность которую мы уже просканировали, точка старта и точка конца пути.
Вам представляется возможность создать свой лабиринт и посмотреть как алгоритм проложит в нем свой жизненный путь.
Мир имеет несколько ограничений. Должна быть лишь одна точка начала пути и одна точка конца пути. Между началом и концом пути желателен хотя бы один проход, ведь должен же быть у скрипта шанс на безоговорочную победу?
Действия:
После старта выбираем сверху "тип данных" "непроходимый". Генерируем щелчками по ячейкам "геодату". Черные ячейки - это те ячейки которые скрипт будет считать безоговорочно непроходимыми.
Чтобы заменить "непроходимые" ячейки "проходимыми" выбираем соответствующий тип данных сверху и тыкаем туда куда считаем нужным.
И так, мы создали полный темных закоулков и опасностей мир для нашего скрипта. Добавляем начальную и конечную точку пути, жмем старт. Смотрим результат.
Если вдруг кто-то решит опробовать, выкладывайте варианты своих лабиринтов с проложенным по ним маршрутом скрипта. Вот мой вариант:
Вот видео: http://www.youtube.com/watch?v=tvMQNibhlgU
Найденные и неисправленные баги:
И так, представляю вашему вниманию волновой алгоритм перемещения. Код правда трешевый, но его при желании любой может оптимизировать.
Что мы имеем?
1) Небольшой мирок размером 53х60 клеточек
2) Несколько типов поверхности: Проходимая поверхность, непроходимая поверхность, поверхность которую мы уже просканировали, точка старта и точка конца пути.
Вам представляется возможность создать свой лабиринт и посмотреть как алгоритм проложит в нем свой жизненный путь.
Мир имеет несколько ограничений. Должна быть лишь одна точка начала пути и одна точка конца пути. Между началом и концом пути желателен хотя бы один проход, ведь должен же быть у скрипта шанс на безоговорочную победу?
Действия:
После старта выбираем сверху "тип данных" "непроходимый". Генерируем щелчками по ячейкам "геодату". Черные ячейки - это те ячейки которые скрипт будет считать безоговорочно непроходимыми.
Чтобы заменить "непроходимые" ячейки "проходимыми" выбираем соответствующий тип данных сверху и тыкаем туда куда считаем нужным.
И так, мы создали полный темных закоулков и опасностей мир для нашего скрипта. Добавляем начальную и конечную точку пути, жмем старт. Смотрим результат.
Если вдруг кто-то решит опробовать, выкладывайте варианты своих лабиринтов с проложенным по ним маршрутом скрипта. Вот мой вариант:

Вот видео: http://www.youtube.com/watch?v=tvMQNibhlgU
Найденные и неисправленные баги:
spider_xr сказал(а):нехватает "Else" между 184 и 185 строчкой. из-за чего "бот" не может топать вверх по прямой как следствие не проходит в узкий проход.![]()