Понедельник, 23 Декабря 2024, 02:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
A* pathfinding project
RangerДата: Четверг, 30 Января 2014, 12:34 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Cтолкнулся с задачей поиска пути.Чтобы не велосипедить решил заюзать A* pathfinding project *.
Плагин (даже в свободной форме меня вполне устраивает) очень гибко настраивается, можно в реальном времени сканировать пространство с получением графа, но возникла проблема:


охотники (красные кубы) охотятся за целью ( зеленый куб).
Охотников может быть много. Я хочу, чтобы охотники обходили других охотников по A*, но если я вешаю ТЭГ на охотников как на препятствие, при построении графов под каждым охотником непроходимое место. Охотник не может найти путь до цели.
Как быть? Что делать?

как бы вижу 2 пути:
1 хранить для каждого из охотников свой grid
2 модифицировать один грид выставляя узлам разный вес. (не ковырял еще нужно разобраться)

Если кто имел опыт решения такой задачи на сабже, поделитесь пожалуйста


KamiRoninДата: Четверг, 30 Января 2014, 12:48 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
грид не меняется.

- в А* Project есть пример где в гористой местности бегает бот и ездят два куба. там бот видит кубы и обходит их.. сорри не могу посмотреть сейчас детали реализации..

- и вот тут есть обсуждение точно такой же темы.


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
RangerДата: Четверг, 30 Января 2014, 14:16 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата KamiRonin ()
грид не меняется.

как бы меняется... smile
Цитата KamiRonin ()
- в А* Project есть пример где в гористой местности бегает бот и ездят два куба. там бот видит кубы и обходит их.. сорри не могу посмотреть сейчас детали реализации..

Это легко делается. Но мне нужно, чтобы охотники обходили других охотников.
Цитата KamiRonin ()
- и вот тут есть обсуждение точно такой же темы.

здесь стандартный навмеш.
мне он не подойдет, так как там присутствует проблема "сисек"




Сообщение отредактировал Ranger - Четверг, 30 Января 2014, 14:19
KamiRoninДата: Четверг, 30 Января 2014, 18:04 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата Ranger ()
присутствует проблема "сисек"

smile даа.. проблемы с "сиськами" это серьезно! smile
мне кажется стоит в ИИ привнести немного интеллекта.. например проверку - если цель есть, а путь навмешАгент не нашел, тогда создавать флуктуации - отклонять точку таргета программно, просчитывать путь через нее и таким образом обходиться без "сисек".

в той теме что я дал - вроде были варианты как отлавливать столкновение двух ботов.. жаль в АПИ не предусмотрен дополнительный OnObstacleCollision метод...
вот еще может подойдут идейки

но я думаю дело в идиологии формировании навмеша... ну не должно быть там ... "сисек"! smile


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
allodsДата: Четверг, 30 Января 2014, 23:14 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Как сделать обход юнитов других юнитов я так и не понял, уже давно эта проблема.
KamiRoninДата: Пятница, 31 Января 2014, 09:04 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
все таки я считаю что путь не должен считаться так, как будто другой агент - это препятствие. тут все таки лучше расширить алгоритм поведения до "вижу - обхожу", имхо.
во второй ссылке есть все необходимое (сорри не пробовал, сужу по отзывам).


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Пятница, 31 Января 2014, 09:07
RangerДата: Пятница, 31 Января 2014, 10:26 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
KamiRonin,
1. читал я этот материал. он на стандартном pathfinding от юнити. я показывал на рисунке, почему это меня не устроило.
2. кроме как
Цитата KamiRonin ()
другой агент - это препятствие
сделать не получится. представь что у тебя пачка охотников забила основной проход к цели. тогда последние охотники должны найти обходной путь.. как здесь применить "вижу- обхожу" не представляю.

Добавлено (31.01.2014, 10:26)
---------------------------------------------
Кароч... победил я ее.

если вкрадце каждый охотник, через определенные промежутки времени находит других охотников и выставяляет им layer препятствие. Всем кроме себя.
и запускает на грффы на апдейт .

т.к. апдейт может идти несколько кадров, выставлен глобальный булевый флаг не допускающий параллельного апдейта.
.

еще кое-что допилить нужно, но основная проблема решена.

Cheeeeeers!!! smile




Сообщение отредактировал Ranger - Понедельник, 03 Февраля 2014, 20:35
KamiRoninДата: Пятница, 31 Января 2014, 10:31 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
smile молоток!! smile "находит других охотников" - эт как раз "вижу обхожу"! smile

Добавлено (31.01.2014, 10:31)
---------------------------------------------
доберусь до А* прож - свой вариант зашлю.. млин прям интуиция вопит что усложняешь..


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Пятница, 31 Января 2014, 10:29
RangerДата: Пятница, 31 Января 2014, 10:37 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
т.к. апдейт идет в фоне, самое сложное здесь было понять, какой метод какого класса вызывается по окончанию апдейта графа.
надеюсь несколько часов ковыряния доков я читателям сэкономил. smile


allodsДата: Понедельник, 23 Июня 2014, 14:41 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Ranger
Можешь сказать, какие скрипты изменял? Спасибо
RangerДата: Понедельник, 23 Июня 2014, 15:46 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата allods ()
Ranger
Можешь сказать, какие скрипты изменял? Спасибо

Цитата
+ изменение метода в public abstract class GraphModifier

Нет под рукой проекта.
Посмотри сам в каком скрипте этот класс


allodsДата: Понедельник, 23 Июня 2014, 16:08 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
а StaticMainVarClass это что такое? его нигде нет .
RangerДата: Понедельник, 23 Июня 2014, 16:55 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
это мой статический класс для хранения UpdateBusyFlag
if (!StaticMainVarClass.UpdateBusyFlag) тогда обновляем графы.
см код выше.


allodsДата: Понедельник, 23 Июня 2014, 17:14 | Сообщение # 14
почти ветеран
Сейчас нет на сайте
Можешь сказать где ты его создавал? Я плохо разбираюсь в C и с классами. Я не понимаю где мне его нужно прописать и как оно выглядит , особенно если это не мой код
RangerДата: Понедельник, 23 Июня 2014, 17:42 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
Код
public static class StaticMainVarClass{
        public static bool UpdateBusyFlag = false;
       /// у меня в этом классе еще много чего болтается, но тебе это не надо.  
}

это в отдельный скрипт. присоединять к объектам не надо. т.к. класс статический.
просто положи в проект.

Удачи..




Сообщение отредактировал Ranger - Понедельник, 23 Июня 2014, 17:44
allodsДата: Понедельник, 23 Июня 2014, 18:13 | Сообщение # 16
почти ветеран
Сейчас нет на сайте
Все я понял , спасибо еще раз

Добавлено (23.06.2014, 18:13)
---------------------------------------------
еще один вопрос

_updater.GetComponent<GraphUpdateScene>().Apply();

на чем должен висеть это скрипт? на самих юнитах ?

makc12Дата: Суббота, 26 Июля 2014, 18:17 | Сообщение # 17
почетный гость
Сейчас нет на сайте
а где пиратку скачать
попробывать а потом заплотить а то фри версия обрублина


геймдизайнер
RangerДата: Суббота, 26 Июля 2014, 20:52 | Сообщение # 18
почти ветеран
Сейчас нет на сайте
фри хватает

robertonoДата: Суббота, 26 Июля 2014, 22:56 | Сообщение # 19
Чокнутый Кот
Сейчас нет на сайте
Ranger, кстати да, а во фри есть встроенный pathfinding или нужно писать свой AI / использовать какой нибудь готовый бесплатный ?
allodsДата: Воскресенье, 27 Июля 2014, 01:38 | Сообщение # 20
почти ветеран
Сейчас нет на сайте
в pathfinding нет pathfinding ?
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг