Один скрипт AI на несколько обьектов.

Программирование на Юнити.

Re: Один скрипт AI на несколько обьектов.

Сообщение Belfegnar_ 25 дек 2010, 12:15

А нельзя как то прописать кол-во кадров в WaitForSeconds вместо секунд?

Косвенно: время одного кадра * кол-во кадров, которые нужно пропустить :-??
Ну и счетчиками конечно всякими, как выше указали.
В этом есть какой-то особый смысл, что секунды не годятся? Такая ли уж большая разница, пропустит функция 20 кадров, или 21?
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Один скрипт AI на несколько обьектов.

Сообщение Левш@ 25 дек 2010, 13:50

Цикл с WaitForEndOfFrame и счётчик кадров.

Спасибо.

Такая ли уж большая разница, пропустит функция 20 кадров, или 21?

Проблема в том что fps не стабилен и иногда на порядки... хочеться все таки иметь более точные промежутки завязанные на кадры.
Но это не суть, я там уже по другому решил сделать.
Появился новый вопрос, как пускать рейкаст во все стороны (без направления)? :-?
Рылся в мануале, нашел такую штуку: Random.onUnitSphere
Написал:

Синтаксис:
Используется javascript
function EnemySearsh ()  {
                        var directionEnemy : Vector3 = Random.onUnitSphere * enemyDist;
            directionEnemy = new Vector3(directionEnemy.x, 0, directionEnemy.z);
                        var hitEnemy : RaycastHit;
        if (Physics.Linecast (head.transform.position, directionEnemy, hitEnemy))    
                if (hitEnemy.collider.gameObject.layer == 9)
                        enemy = 1;
                else
                    enemy = 0;
}


Не работает... бот не наводиться на FPC, слой указан верно. Где может быть ошибка? :-? Лог ошибок не дает, компилиться норм.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Один скрипт AI на несколько обьектов.

Сообщение Zaicheg 25 дек 2010, 13:55

Левш@ писал(а):Появился новый вопрос, как пускать рейкаст во все стороны (без направления)? :-?

Что-то из этого
Physics.OverlapSphere
Physics.CheckSphere
Physics.SphereCast
Я как-то не ознакомился ещё
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Один скрипт AI на несколько обьектов.

Сообщение Kann 25 дек 2010, 14:48

Левш@ писал(а):В том то и дело, что то не видно демок с большим кол-вом ботов и хорошим AI...


HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://commates-games.ru/Mars/bilds/WebPlayer.unity3d&w=600&h=400&t=true&preview=1' height='"+(400+30)+"' width='600' frameborder='0' scrolling='no'></iframe>"); </script>


и на первой странице я давал ссылку на свою демку, чем не пример нормального ИИ с кучей ботов ? еще раз повторю, что юнити тут не причем, переходите на С#, ибо как я вижу вы совсем не вьесжаете что делает код, Жаба расслабляет своей простотой, но нужно понимать что пишешь.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Один скрипт AI на несколько обьектов.

Сообщение Левш@ 25 дек 2010, 16:08

я вижу вы совсем не вьесжаете что делает код

Ну не совсем, совсем. :) но слабо пока. Вот и учусь потихоньку.
Код привожу в порядок, уже имею 10 персов на локе без глюков и тормозов, функции не урезал, только за счет оптимизации :)
Будем копать дальше.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Один скрипт AI на несколько обьектов.

Сообщение Belfegnar_ 25 дек 2010, 18:04

Появился новый вопрос, как пускать рейкаст во все стороны (без направления)? :-?
Рылся в мануале, нашел такую штуку: Random.onUnitSphere
Написал:

Синтаксис:
Используется javascript
function EnemySearsh ()  {
                        var directionEnemy : Vector3 = Random.onUnitSphere * enemyDist;
            directionEnemy = new Vector3(directionEnemy.x, 0, directionEnemy.z);
                        var hitEnemy : RaycastHit;
        if (Physics.Linecast (head.transform.position, directionEnemy, hitEnemy))    
                if (hitEnemy.collider.gameObject.layer == 9)
                        enemy = 1;
                else
                    enemy = 0;
}


Не работает... бот не наводиться на FPC, слой указан верно. Где может быть ошибка? :-? Лог ошибок не дает, компилиться норм.


Random.onUnitSphere вообще для того чтоб получить точку в пределах сферы. Но, судя по названию функции вы хотите, чтобы бот видел противника в определенном радиусе, или что-то в этом роде, так? Тогда дешевле будет использовать сферу-триггер на боте. В OnTriggerEnter заносим в список ближайших врагов(и проверяем вообще враг ли это), а в OnTriggerExit удаляем из списка. А со списком этим уже работаем как хотим: находим ближайшего и т.п.
Или вам принципиально для чего то нужно пускать лучи во все стороны?
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Один скрипт AI на несколько обьектов.

Сообщение Левш@ 25 дек 2010, 19:31

Все так, тоже пришел к мысли, что к чертям эти грузовые райкасты, оставим их для стволов и стрельбы.
Видимо так и поступлю, поиск препятствий и поиск врага переведу на триггеры. :)
Все таки добился оптимальной работы AI, теперь явно уже графика начала притормаживать при кол-ве ботов, AI больше не грузит локу.
Зря я на юньку бочку катил... :-@
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Один скрипт AI на несколько обьектов.

Сообщение Kann 26 дек 2010, 01:35

учитывайте еще такой фактор, что если у вас по ТЗ по локации бегает 100 ботов, то они не должны быть постоянно активны, бегать должны только те, с которыми имеет взаимодействие в данный момент ГГ, отсюда вывод, что вы должны так же хорошо продумать лвл дизайн....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Один скрипт AI на несколько обьектов.

Сообщение Левш@ 26 дек 2010, 03:20

Kann, спасибо, это ясно и само собой. :))
Я возможности проверил по случаю, на реальном AI. Хочу поймать предел, через который потом не буду переступать. :)
А то можно построить ботов в ряд, пустить их ровным строем на игрока и напрочь подвесить ему комп. :))
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Один скрипт AI на несколько обьектов.

Сообщение Belfegnar_ 26 дек 2010, 19:56

Левш@ писал(а):Я возможности проверил по случаю, на реальном AI. Хочу поймать предел, через который потом не буду переступать. :)
А то можно построить ботов в ряд, пустить их ровным строем на игрока и напрочь подвесить ему комп. :))

А если есть какой-нибудь аи-менеджер, который сам следит за фреймрейтом, и упрощает/усложняет "размышления" каждого бота, решает, сколько ботов обработать в данном кадре и т.п., тогда тормозов не будет, просто боты начнут "тупеть", что в большой толпе возможно будет и не заметно. :)
Так же не стоит забывать, что ботов можно объединять в группы (squad) и управлять уже ими. Тоже своего рода оптимизация (ведь есть разница, пять ботов будут искать противника, или один(группа), который раздаст потом цель остальным).
они не должны быть постоянно активны, бегать должны только те, с которыми имеет взаимодействие в данный момент ГГ

Это в частном случае. А в общем: для аи нужна система LOD'а (в стулкере, например, это разделение на так называемые "онлайн" (полный) и "оффлайн", урезанный вариант аи: строит путь по глобальной карте, а не по локальной, вместо полного расчета события, используется формула, модель этого события), как впрочем наверно и для всего остального в реалтайм 3д-приложении.
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Один скрипт AI на несколько обьектов.

Сообщение Левш@ 27 дек 2010, 02:55

Последний тест. 50 активных ботов - тормозов нет! - http://narod.ru/disk/2230071001/-%3DSDE%3D-.zip.html (15Мб).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Пред.

Вернуться в Скрипты

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

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