ПрограммированиеФорумИгровая логика и ИИ

[Unity] TDS как сделать логику жителей города

#0
13:58, 27 авг 2015

Добрый день!

Решил попробовать сделать игру в жанре TDS в городе (а-ля GTA 1-2).

Где будут следующие типы персонажей:
- мирные жители
- полиция
- бандиты

Вопрос пока такой какое должно быть поведение у жителей - алгоритм?
Т.е. обработка должна вестись же не всей карты, а только видимого игроком участка * на коэффициент. Хотелось бы получить чтобы жители бродили по улицам, заходили, выходили из домой, заводы. Если жителей (объектов) в кадре будет много 100-200 штук ведь не каждому ему нужно делать скрипт движения. А должен быть некий общий алгоритм создания жителей и задания им поведения друг относительно друга.

Для меня это самое непонятное какой алгоритм действия должен быть для  жителей (толпы). Поведение при стрельбе для жителей я приблизительно понимаю как сделать (через потенциальные поля, если игрок стреляет то возле него появляется круг с дифферентом '-' поля, а каждый житель должен стремить к '+' полю. Поэтому они будут разбегаться от игрока в определенном радиусе). А вот обычное поведение жителей в городе не понятно.

Не подскажите словами алгоритм поведения жителей для такой игры?

#1
14:11, 27 авг 2015

Не кодь алгоритм толпы.. кодь алгоритм каждого жителя. Они потом сами собьются с толпу..

#2
14:17, 27 авг 2015

Так если жителей много (скрипт на каждого жителя) - это же будет тормозить серьезно в Unity? Особенно если у каждого будет еще алгоритм поиска пути, чтобы на препятствие не врезался.

#3
14:21, 27 авг 2015

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Тут больше 68 NPC. Ничего не тормозит. Сделано нами на Юнити за 3 дня.

#4
14:23, 27 авг 2015

Лил видео хорошо, а свой алгоритм движения отдельного NPС вы можете описать тут?

#5
14:32, 27 авг 2015

Ex_mi, там около 7 моделей поведения. От простого поиска рандомной точки на навмеше и пути к ней до ходьбы по вэйпоинтам и преследования. Есть мелкие трюки, чтобы NPC не застревали когда сталкиваются друг с другом, чтобы преследовали игрока при определенных условиях и возвращались к своим вэйпоинтам при потере цели.

#6
14:39, 27 авг 2015

E-Cone

Ясно, спасибо.  Т.е. хотьба по вейпоинтам и случайным идет по A* алгоритму? А сетка доступности - только по недвижимым объектам (хитрый трюк + чтобы не врезались друг в друга), или динамически меняется с движением других NPC?

А не могли все 7 моделей поведения описать:
1. Рандомная точка идем туда
2. Идем по вейпоинтам заранее расставленные на карте
3. Преследуем  игрока
4. Возврат при потери цели к вейпоинтам
5.  ?
6. ?
7. ?

А остальные 3 какие

#7
14:50, 27 авг 2015

Так как времени на конкурс было мало, я обошелся родным юнитевским поиском пути. Вся логика поместилась в одном-единственном классе.

Поведение было такое:
1. Обычный стоящий. Просто стоит и ничего не делает. В него можно свободно вселяться и управлять.
2. Стрикер. Бегает по вэйпоинтам по всей территории и кричит. Если в него вселиться, он не дает останавливаться.
3. Обычный гуляющий. Раз в 10-15 секунд генерирует себе новую цель, находит рандомную точку возле нее, проверяет, чтобы точка была в пределах навмеша, строит маршрут, добавляет в маршрут немного рандомности и идет к цели.
4. Фанатики. Пока игрок в облике демона - преследуют игрока. Когда игрок вселяется в кого-нибудь, разбегаются как обычные гуляющие. Постоянно молят главгероя и жаждут ему служить.
5. Спортсмены. Бегают по вэйпоинтам вокруг поля до тех пор, как игрок не подберет кубок. Пока игрок держит кубок - бегают за ним. Когда игрок выбрасывает кубок - возвращаются к вэйпоинтам. Должны были кидаться пивом и подручными предметами, но времени не хватило.
6. Зебры. Стоят на месте и смеются. Если игрок поднимает работающую магнитолу - начинают бегать за ним. Когда игрок выбросит магнитолу или сломает - разбегаются как обычные гуляющие.
7. Копы. Как обычные гуляющие, но строят маршрут к игроку. В определенном радиусе от него открывают огонь. Должны были терять игрока из виду, если он вселялся в людей, но времени не хватило.

Благодаря тому, что при построении маршрута маршрутные точки немного рандомно сдвигаются - NPC имеют крайне малый шанс упереться друг в друга и застопориться.
+ вокруг зданий сделан метровый отступ в навмеше, чтобы один NPC не мог впечатать другого в стену.

#8
15:02, 27 авг 2015

E-Cone

спасибо, подумаю как этим воспользоваться - отпишусь тут что вышло

#9
16:56, 27 авг 2015

Скорей оффтопик - о поведении сущностей в игре, набрел недавно на любопытную статью-перевод на хабре - http://habrahabr.ru/post/109406/
в ней создатель Пак-мана рассказывает о поведение приведений в лабиринтах, к gta конечно врядли применить, но почитать интересно.

#10
12:37, 31 авг 2015

http://toolson.net/ImageData/GifAnimation/3149822.gif - сделал генерацию НПЦ, сейчас попробую поведение сделать!

#11
14:05, 31 авг 2015

Я первым делом собрал болванку локации с параллелепипедами вместо препятствий, чтобы было где тестировать

ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.