ММО базовый АИ

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

ММО базовый АИ

Сообщение Xenogear 01 сен 2011, 15:21

Здравствуйте, подскажите(а лучше пример приведите :D ) хорошо оптимизированного аи, как в ммо играх(чтобы можно было много ботов создать), с простейшими функциями: 1)Заметил игрока - идёт к нему 2)Если игрока нету - перемещается от точки А в точку Б (и так бесконечно между ними)
Смотрел туториалы по аи, но там реализовано всё через апдейт, хотелось бы почитать ваши советы)функцию OnTriggerEnter надо копать?)
Аватара пользователя
Xenogear
UNIт
 
Сообщения: 94
Зарегистрирован: 31 июл 2011, 15:26

Re: ММО базовый АИ

Сообщение stasprototype 01 сен 2011, 16:25

Лучше использовать расстояние и угол для создание АИ когда очень много объектов с проверкой коллайдера будет (P).
stasprototype
UNец
 
Сообщения: 18
Зарегистрирован: 29 июл 2011, 11:05

Re: ММО базовый АИ

Сообщение Xenogear 02 сен 2011, 16:40

Эх, с ответами не густо

stasprototype писал(а):Лучше использовать расстояние и угол для создание АИ когда очень много объектов с проверкой коллайдера будет (P).


Спасибо,буду разбираться
Аватара пользователя
Xenogear
UNIт
 
Сообщения: 94
Зарегистрирован: 31 июл 2011, 15:26

Re: ММО базовый АИ

Сообщение stasprototype 02 сен 2011, 17:20

Перемещение АИ туда сюда кажеца есть в уроках ogasoda, потом http://ogasoda.ru/talking/viewtopic.php?f=116&t=4483 сдесь есть зона видимости. Главная сделать сам процес на кубе, а анимацию в любой момент прикрутить можно.
stasprototype
UNец
 
Сообщения: 18
Зарегистрирован: 29 июл 2011, 11:05

Re: ММО базовый АИ

Сообщение Xenogear 02 сен 2011, 19:36

stasprototype писал(а):Перемещение АИ туда сюда кажеца есть в уроках ogasoda, потом http://ogasoda.ru/talking/viewtopic.php?f=116&t=4483 сдесь есть зона видимости. Главная сделать сам процес на кубе, а анимацию в любой момент прикрутить можно.


Там через Update работает,не слишком ли это будет ресурсозатратно для большого кол-ва кубов?
И ещё в том примере таргетом бота является объект с тэгом Target,а если на сцене объектов с данным тегом 10 и более,позиция на карте у всех разная,как проверить расстояние в таком случае и реагировать,на того,кто в зоне видимости?
Аватара пользователя
Xenogear
UNIт
 
Сообщения: 94
Зарегистрирован: 31 июл 2011, 15:26

Re: ММО базовый АИ

Сообщение seaman 02 сен 2011, 21:31

как проверить расстояние в таком случае

Так же как и в любом другом - расстояние = (позиция игрока - позиция объекта).magnitude
и реагировать,на того,кто в зоне видимости

Ну это уж Вам виднее как реагировать на того, кто в зоне видимости.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: ММО базовый АИ

Сообщение Xenogear 02 сен 2011, 22:40

seaman писал(а):
как проверить расстояние в таком случае

Так же как и в любом другом - расстояние = (позиция игрока - позиция объекта).magnitude
и реагировать,на того,кто в зоне видимости

Ну это уж Вам виднее как реагировать на того, кто в зоне видимости.

Про расстояние ничего нового из этого поста не узнал,а про реакцию я не так написал,это сам умею
Может быть меня неправильно поняли,приведу пример опять же из ММОРПГ...допустим у нас 10000 ботов в игровом мире и 500 игроков,мне что у каждого из 10к ботов проверку ставить для вычисления расстояния с каждым из 500 игроков?Меня только вопрос данной оптимизации интересует
Аватара пользователя
Xenogear
UNIт
 
Сообщения: 94
Зарегистрирован: 31 июл 2011, 15:26

Re: ММО базовый АИ

Сообщение waruiyume 02 сен 2011, 23:15

Разделить мир на секторы.
Приписать ботов к секторам.
Игрок находясь в секторе обновляет мозги ботов, если в секторе никого нет боты стоят смирно/действуют по упрощённому алгоритму/вырубаются нафик.
P.S. Хотя может я фигню сморозил.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: ММО базовый АИ

Сообщение seaman 02 сен 2011, 23:18

В-общем да, вопрос был непонятен до этого.
Решение может быть, например, следующим.
На всех НПС и на всех Игроков вешаем дочерний пустой объект. К нему цепляем сферический коллайдер диаметром таким, на котором нужно определять наличие врага и устанавливаем у этого коллайдера галку IsTrigger. К НПС и Игрокам цепляем скрипт, в котором реализуем метод OnTriggerEnter. В этом методе проверяем в какой триггер вошли и видимость "обладателя" триггера. Если вошли в триггер иного игрока/НПС и обладатель виден - делаем что надо.
Как определить что вошли в нужный триггер? В OnTriggerEnter передается Collider, а по нему легко найти gameObject и все что с ним связано.
Как определить видимость? Пустить луч из позиции gameObject1 (этого скрипта) в позицию gameObject2 (с которым столкнулись). Если луч ударится в gameObject2 - значит ничего его не загораживает.
По моему это наименее затратный метод в Вашем случае. Есть еще варианты с пусканием нескольких лучей, но мне кажется, что это более затратные методы.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: ММО базовый АИ

Сообщение Xenogear 02 сен 2011, 23:46

Спасибо вам, более вопросов нету по данной теме
Аватара пользователя
Xenogear
UNIт
 
Сообщения: 94
Зарегистрирован: 31 июл 2011, 15:26


Вернуться в Почемучка

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

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


cron