Проверка на перекрытие пути

Форум для всего, что связано с ИИ.

Проверка на перекрытие пути

Сообщение Kp0c 20 окт 2013, 00:44

Здравствуйте, игра на подобии TD, собственно вопрос: как при установке здания можно проверять на перекрытие пути к концу (то есть чтоб крипы всегда имели хоть 1 дорожку ) и сделать ее материал красным(this.renderer.material.color = Color.red;). Для поиска пути использую Не сочтите за рекламу, пока идей нет, хотя были разные пробы. Если надо, могу отписать что пробовал :(
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Проверка на перекрытие пути

Сообщение Woolf 20 окт 2013, 01:39

А у вас карта традиционно-клеточная или вот так просто объекты накиданы? Если клеточная (что для TD характерно), то тогда курите волновую трассировку, там все просто. По карте на коллайдерах увы, ничего не скажу.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Проверка на перекрытие пути

Сообщение Syberex 20 окт 2013, 11:46

А на вейпоинтах если? Удаляем связь между вейпоинтами и проверяем найден путь или нет ...
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Проверка на перекрытие пути

Сообщение Kp0c 20 окт 2013, 11:50

Волновая трассировка = алгоритм Ли? Если так, то я пробовал, возможно плохо реализовал алгоритм, но постоянно лагает, проблема в том что поле 13*37 клеток, и каждый кадр при стройке вышки проблемно проверять. Пока что, пока не нашёл способ, сделал так: при установке вышки, если хоть 1 из объектов "enemy" выдаёт ошибку что не может найти путь, я разрушаю последнюю установленную вышку, путём обычного Destroy();
Syberex, за идею спасибо, но опять же, не затратно ли для памяти каждый раз проверять путь? Я думаю, что если проверять даже только тогда, когда переместил вышку, то уже будет заметно подлагивать т.к. постройка нового пути и его поиск затратная штука (~50ms для каждого раза).
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Проверка на перекрытие пути

Сообщение Syberex 20 окт 2013, 13:09

Обычно в ТД на пути башню поставить нельзя ...
Ну если уж так задумано :) ты же не будешь искать пути каждый кадр, пути надо запоминать, и при постройке башни, забывать те пути, которые содержат в себе заблокированную точку.
Я делал очередь на поиск пути, и сам поиск в корутине - на мобиле работало, в профайлере смотрел, правда граф был маленький, обычно точек 20-30.
Делал по Дейкстре, примерно кратчайший :)
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Проверка на перекрытие пути

Сообщение Kp0c 20 окт 2013, 13:23

Беда в том что такая задумка игры :). То есть путь для крипов делаешь делая из башень разные лабиринты (Если играли, много похожих карт было в wc3). То есть нужно сделать проверку от того, чтоб игрок случайно не перекрыл путь для крипов к концу
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Проверка на перекрытие пути

Сообщение BornFoRdeatH 20 окт 2013, 13:26

Kp0c писал(а):Волновая трассировка = алгоритм Ли? Если так, то я пробовал, возможно плохо реализовал алгоритм, но постоянно лагает, проблема в том что поле 13*37 клеток, и каждый кадр при стройке вышки проблемно проверять. Пока что, пока не нашёл способ, сделал так: при установке вышки, если хоть 1 из объектов "enemy" выдаёт ошибку что не может найти путь, я разрушаю последнюю установленную вышку, путём обычного Destroy();
Syberex, за идею спасибо, но опять же, не затратно ли для памяти каждый раз проверять путь? Я думаю, что если проверять даже только тогда, когда переместил вышку, то уже будет заметно подлагивать т.к. постройка нового пути и его поиск затратная штука (~50ms для каждого раза).

Так зачем же каждый кадр проверять то? Раз у вас сетка, так и проверяйте когда изменяется ячейка а не каждый кадр в пустую одно и то же.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Проверка на перекрытие пути

Сообщение beatlecore 02 фев 2014, 11:22

Kp0c писал(а):Волновая трассировка = алгоритм Ли? Если так, то я пробовал, возможно плохо реализовал алгоритм, но постоянно лагает, проблема в том что поле 13*37 клеток, и каждый кадр при стройке вышки проблемно проверять. Пока что, пока не нашёл способ, сделал так: при установке вышки, если хоть 1 из объектов "enemy" выдаёт ошибку что не может найти путь, я разрушаю последнюю установленную вышку, путём обычного Destroy();
Syberex, за идею спасибо, но опять же, не затратно ли для памяти каждый раз проверять путь? Я думаю, что если проверять даже только тогда, когда переместил вышку, то уже будет заметно подлагивать т.к. постройка нового пути и его поиск затратная штука (~50ms для каждого раза).

Для этого ивенты придумали и асинхронность
Аватара пользователя
beatlecore
Старожил
 
Сообщения: 964
Зарегистрирован: 05 фев 2013, 21:26
Откуда: Sun Crimea


Вернуться в Искуственный Интеллект

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3