Как мне реализовать групповые формирования в 3D RTS?

14

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

Это моя установка до сих пор:

  • Поиск путевой точки
  • Минимальное расстояние между двумя узлами немного больше, чем максимально допустимый радиус ограничивающей сферы для агента.
  • Агенты избегают столкновений с другими агентами, выполняя некоторые действия по управлению, основанные на clearpath

Теперь мне нужно отправить своих агентов куда-нибудь в группу. Я прочитал несколько постов, в которых говорится, что для этого можно создать лидера группы и назначить другим подразделениям смещение на его позицию.

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

xcrypt
источник
2
Я на работе, поэтому у меня нет времени, чтобы написать правильный ответ, но вот мои ноль целых два цента: используйте алгоритм флокирования Boids и затем представляйте препятствия как объекты, от которых отбрасываются Boids.
Nailer
@Nailer алгоритм флокирования будет работать до тех пор, пока они движутся, но тогда как мне определить, что их окончательная позиция «в порядке», и уведомить их, что они могут прекратить движение? Не волнуйтесь, я могу дождаться вашего ответа;)
xcrypt

Ответы:

13

На самом деле в Gamasutra есть довольно хорошая статья об этом. И охватывает такие темы, как формирования и разрешения конфликтов:

введите описание изображения здесь

И еще одна статья от них на ту же тему, которая немного короче, но содержит больше примеров псевдокода:

введите описание изображения здесь

Наконец, при внедрении вашей системы следует подумать об изящной идее «Flow Field», которую использовал Supreme Commander 2 ; И это основано на исследовании Crowd Flows Университета штата Вашингтон .

MichaelHouse
источник
Спасибо, я видел материал по поиску путей в толпе континуума от верховного командира, но я думаю, что буду придерживаться того, что у меня есть. Я попробую это, когда получу немного больше опыта, потому что да, это выглядит действительно изящно; D
xcrypt
2

Я думаю, что вы можете иметь невидимую «стадную сущность», которая является боссом формации, и сделать так, чтобы другие существа позиционировали себя относительно этой сущности. Если этот объект может вращаться, то относительное положение тоже будет вращаться.

... упс .. вы уже делаете это.

Что насчет этого:

Почему вы не можете рассчитать новые позиции для сталкивающихся объектов? Мне не нужно фантазировать, может, просто перетащить линию от желаемой исходной точки и лидера и переместить желаемую позицию в середину этой линии. Проверьте снова на столкновение.

Тей
источник
Ну, это почти то, что я сказал в своем вопросе: D Сложная часть - как справиться со столкновением пласта с местностью / препятствиями / структурами
xcrypt
Извините !, я обновил свой ответ новой идеей.
Тей
Я не понимаю, вы просто вдвое уменьшите величину вектора смещения и продолжите проверять, является ли это положением без столкновений? Это, скорее всего, не
получится