Страница 1 из 4

Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 29 авг 2015, 18:02
jack1111
Добрый день. Хотелось бы узнать как сделать генерацию NPC (мирные жители) в большом городе.

Делаю игру в жанре TDS как GTA 1-2. Т.е. есть у нас большой город (3 вида - дорога (могу жители ходить), газон (могут если сильно хочется), здания (запретные зоны). Хотелось бы понять как лучше генерировать NPC в этом городе?

1) Следует ли создавать отдельные точки spawn? Если нет то каким образом генерить их тока на дороге или газоне, а не на домах?
2) Т.к. город большой то всех как я понимаю жителей не надо генерить, а генерить только в некоторой области относительно игрока (радиус <= 100) 100 жителей, а всех кто находится за этим радиус удалять (если игрок движется). Игрок же может зайти в зону где практически только здания(запретные зоны), т.е. генерация всех 100 жителей вокруг не удастся.
3) Каким образом проводить респаун жителей, если игрок стоит на месте, а жители умирают потиху (как определять зоны с наименьший плотностью)

Ну или это все надо делать как то по другому. Сможете помочь?

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 29 авг 2015, 19:24
Cr0c
Карта плотности населения плюс пул жителей? Статус жителей учитывать при генерации (испуг, агрессия, норма, дружелюбие, етц) для зоны респа (дорога, газон, тротуар).

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 29 авг 2015, 19:30
Diab10
Разделите все задачи на более мелкие части и начните с чего то одного. Сейчас сильно много задач, чтобы что то можно было советовать.

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 29 авг 2015, 19:44
jack1111
Cr0c писал(а):Карта плотности населения плюс пул жителей? Статус жителей учитывать при генерации (испуг, агрессия, норма, дружелюбие, етц) для зоны респа (дорога, газон, тротуар).


пул жителей - это что?

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 29 авг 2015, 19:45
jack1111
Diab10 писал(а):Разделите все задачи на более мелкие части и начните с чего то одного. Сейчас сильно много задач, чтобы что то можно было советовать.


ну я попытался так и сделать. Поведения и генерацию разделил. Пока хочу именно генерацией статических объектов сделать. Вот с чего начать трудно понять. Если 1 то:

- Как сделать генерацию: через точки spawn, либо как то по другому будет лучше? Если точки то их получается надо вручную ставить в большом городе это будет проблемно.

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

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 09:43
EagleOwle
Ну, вряд ли у тебя больше десятка префабов домов, вот и сделай точку спавна(пустой ГО) дочерней к дому (на пример возле дверей дома, спавнится типа выходит из дома). И далее расставляя/генерируя дома будешь иметь сразу точку спавна.
Ну а скрипт спавна вешай на ГО точку спавна.

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 10:20
Cr0c
EagleOwle писал(а):Ну, вряд ли у тебя больше десятка префабов домов, вот и сделай точку спавна(пустой ГО) дочерней к дому (на пример возле дверей дома, спавнится типа выходит из дома). И далее расставляя/генерируя дома будешь иметь сразу точку спавна.
Ну а скрипт спавна вешай на ГО точку спавна.

Если быстро перемещаться, то улицы будут пустые, только возле подъездов будут кучки мобов. Не лучше брать шанс спавна в зависимости от карты плотности? Тогда можно сделать густо- и малонаселенные районы с равномерными плотностями.

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 10:32
Diab10
Делать не точки спавна, а зоны спавна. В зоне рандомно выбирать точку и спавнить

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 10:53
jack1111
Cr0c писал(а):Если быстро перемещаться, то улицы будут пустые, только возле подъездов будут кучки мобов. Не лучше брать шанс спавна в зависимости от карты плотности? Тогда можно сделать густо- и малонаселенные районы с равномерными плотностями.


Спасибо. А как это сделать?
1) Карта плотности - это будет обычная текстура с точками от 0 до 255 - серая, так? Которую я заранее подготовлю, с рамзером - 1 пиксель, на 1 точку размещения НПЦ. И она будет выглядтиь как квадртаная (каждый квадрат оттенок серого) - ее я преобразую при загрузки в двумерный массив?

2) Карта плотности - учитывает дома (закрытые зоны для размещения НПЦ). Если да то если игрок возле домой - то средняя плотность будет возле домом уменьшаться, и все НПЦ будут на середине улицы. Если по другому, то необходимо будет еще кроме карты плотности - иметь карту доступности (только по домам, статическую) и поверх нее еще накладывать доступность в зависимости от нахождения в точке НПЦ?? А если они будут двигаться - не будет ли это слишком затратно для (100-200 нпц в кадре)?

3) Как я понимаю необходимо иметь 2 радиуса: радиус видимости камеры (10 м) - там не должно быть спауна, и радиус больший (20 м) в том секторе будет спаун происходить. (а что за этим радиусом, объекты будут уничтожаться)

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 10:55
jack1111
Diab10 писал(а):Делать не точки спавна, а зоны спавна. В зоне рандомно выбирать точку и спавнить


Их вручную создавать?- ввиде прямоугольников? (просто город большой 1 км^2) либо использовать любое проходимое место как зону спауна (дороги). Если второе, и она у меня не квадратная же, а представляет собой сетку (пересекающиеся прямоугольники)? Зона должна храниться на всю карту города, или тока на радиус возле игрока (20м) и обновляться при движении?

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 11:00
Diab10
jack1111 писал(а):
Diab10 писал(а):Делать не точки спавна, а зоны спавна. В зоне рандомно выбирать точку и спавнить


Их вручную создавать?- ввиде прямоугольников? (просто город большой 1 км^2) либо использовать любое проходимое место как зону спауна (дороги). Если второе, и она у меня не квадратная же, а представляет собой сетку (пересекающиеся прямоугольники)? Зона должна храниться на всю карту города, или тока на радиус возле игрока (20м) и обновляться при движении?


Город генерируется программно? Тогда и зоны генерировать.
Зачем же дорогу? Для машин зона спауна - дороги. Для пешеходов - тратуары.

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 11:10
jack1111
EagleOwle писал(а):Ну а скрипт спавна вешай на ГО точку спавна.


Ну если будет 1000 домов со спауном - выйдет 1000 скриптов - так оптимизации не добьешься. Юнити такое не любит. Лучше 1 скрипт менеджер для всех точек тогда

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 11:11
jack1111
Diab10 писал(а):Город генерируется программно? Тогда и зоны генерировать.
Зачем же дорогу? Для машин зона спауна - дороги. Для пешеходов - тратуары.


Нет город создает дизайнер. Пока машин нет, поэтому пока тока дороги и дома - на дорогах могут жители ходить. на домах нет?

Т.е. зоны вручную делать - прямоугольными так?

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 12:10
Cr0c
1) Карта плотности - это будет обычная текстура с точками от 0 до 1, масштаб - любой удобный (от 1 пиксель = 1 юнит до 1пиксель = 10 юнитов, к примеру)

2) Карта плотности - учитывает дома (закрытые зоны для размещения НПЦ). Дома учитывает спаунер, генерация должна быть только на "новой" территории, то есть на той, которая получилась из разницы между старой и новой после смещения игрока.
3) три зоны: зона жизни мобов и зона смерти мобов, зона генерации мобов. Новая зона - старая зона = зона генерации; старая зона - новая зона = зона смерти; новая зона - (зона смерти + зона генерации) = зона жизни.

Re: Генерация NPC в городе а-ля GTA 1-2

СообщениеДобавлено: 30 авг 2015, 13:21
jack1111
спасибо! Все стало яснее, а вот по 1 пункту что значит точки от 0 до 1? - вероятнсоть повяления объекта в данной точки? Если так то сообразил ))