Название: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 09 Апреля 2009, 21:42:28 Собственно, кто как решал это проблему ? Поделитесь милейшие своим опытом, я решил эту проблему так, при приближении, в конечную точку motionplaning копировалась позиция персонажа и враг шёл на сближение, но когда врагов 40 этот способ не приемлим, как можно подругому ? или же надо прописывать логику каждой позиции ?
Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: Sqwer от 12 Апреля 2009, 08:33:24 Тоже думаю над этим вопросом.
Мои догадки: так как делаю слешер (как Девил Мэй Крей), максимум с игроком может взаимодействовать одновременно 8 противников со всех сторон. Игрок обладает 8мью, окружающими его колижн боксами. Проверка пересечения проводится с окружающим миром и врагами, как только игрок встал к стене спиной, три бокса сзади выдают пересечение, так враг понимает, что сзади к игроку не подобраться. Аналогично, если враг атакует игрока он становится в центр колижн бокса, который тоже активизируется давая понять остальным врагам, что этот сктор занят. Мне будут крайне интересна информация о продвижении разработки вашего AI. Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 12 Апреля 2009, 10:57:29 Хм, очень умный ход решения проблемы взаимодействия), а могу я поинтересоваться как идёт проверка колизии ? Если через колизион рей чек, то ведь придётся каждому npc заранее давать позицию главного героя, а если врагов будет 100 ? Или у вас есть более хитрый способ решения проблемы ?
Просто если я не ошибаюсь чтобы шла проверка столкновений, к колизион рей чек нужно подсоединя матрицы обоих обьектов колизии Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: Sqwer от 12 Апреля 2009, 14:20:00 Нужна конкретная задача, что вы хотите сделать: стратегию, РПГ, экшн, слэшер?
При каких условиях происходит битва, фиксированно растояние до игрока или нет? (холод или огнестр оружие) По ответу: Предлагаю использовать Луа скрипт или прямые ссылки, или ОО. Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 12 Апреля 2009, 14:37:16 Страстно горю желанием сделать РПГ, конкретно вроде Gothic 2, я просто не могу понять как там сдеалан ИИ, например с помощью кодов там можно создавать npc которые будут атаковать врагов, и создавать их можно не ограниченное количество, и мне стало интересно как они узнают позицию врагов
Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: cashis от 12 Апреля 2009, 15:50:19 А я вот тоже очень хочу сделать игрушку, но не знаю даже как сделать стрельбу из пистолета, пусть даже не по людям а хотябы по мешенькам!!! Как это реализовать ? Ну никак не пойму! И как создавать кучу анимаций в одном персонаже, чтобы для каждой ситуации своя ?
Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 12 Апреля 2009, 16:30:34 Ну чисто теоритически с помощью motionblending можно сделать множество анимаций, а стрельбу я смог реализовать, выложить исходник смогу только на выходных или в пятницу :)
Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: Sqwer от 12 Апреля 2009, 17:05:24 Как узнать положения противников.
Сложно это. Я бы сделал так: есть база(массив переменных Типа Matrix, которые описывают нахождения союзников в пространстве ) Обработаем алгоритм для одного врага. Врагу предоставляется информация по нахождению всех союзников в пр-ве. Если союзник находится в агро-зоне врага (обычно сфара, которая реализуется нахождением расстояния от точки врага до точки союзника), то враг проверяет клижн рей чеком, направленным в сторону союзника, визуальный контакт, если есть предмет на пути - враг ничего не делает, как только между С(союзник) и В(враг) ничего не будет, В ищет путь до С с помощью встроенного в Квест патчаиндинга. Как В определит на кого нападать, если С в агрозоне много? В таком случае проверяется расстояние до каждого и определяется самый близкий враг. .... могу и дальше рассказывать, но вроде достаточно для тупого бота. Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 12 Апреля 2009, 19:56:47 Вы бы не могли поподробнее расказать (если есть возможность показать) про определение расстония от союзника до врага ?
Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: cashis от 12 Апреля 2009, 20:12:16 Как узнать положения противников. Так я непойму. Ты же один враг для AI !!! так вставь value vector на определённое расстояние и если ты попадаешь в эту зону то делается проверка на видимость этого объекта (как я понял ray check) и если да то всё бегом мочить этого врага. Но есть же ещё одна проблема, ты допустим сделаешь такого бота, так он только тебя увидит и в доли секунды тебе башню снесёт ты даже и ничего и сообразить не успеешь! Эт ж всё таки компьютер. Так что надо как-то сделать косячество бота, а ещё хорошо было бы чтобы например если у него закончились патроны он прятался бы за ближайшее укрытие. Но как это реализовывать непонятно!Сложно это. Я бы сделал так: есть база(массив переменных Типа Matrix, которые описывают нахождения союзников в пространстве ) Обработаем алгоритм для одного врага. Врагу предоставляется информация по нахождению всех союзников в пр-ве. Если союзник находится в агро-зоне врага (обычно сфара, которая реализуется нахождением расстояния от точки врага до точки союзника), то враг проверяет клижн рей чеком, направленным в сторону союзника, визуальный контакт, если есть предмет на пути - враг ничего не делает, как только между С(союзник) и В(враг) ничего не будет, В ищет путь до С с помощью встроенного в Квест патчаиндинга. Как В определит на кого нападать, если С в агрозоне много? В таком случае проверяется расстояние до каждого и определяется самый близкий враг. .... могу и дальше рассказывать, но вроде достаточно для тупого бота. Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: Sqwer от 12 Апреля 2009, 21:44:58 Редис
смотри в яндексе "Расстояние между точками" помню вроде так L=sqrt(sqr(x1-x2)+sqr(y1-y2)+sqr(z1-z2)); где х1 и х2 координаты одной оси первой и второй точки соответственно. В Квесте это делается ёще проще для этого нам понадобится кинуть на форму каналы: MatrixOperator(GetMovementFromMatrix) ValueOperator(GetDistance(vector,vector)) тянем нод из Матрицы в оператор матрицы (получаем на выходе оператора- вектор) у С и В а потом вектора подаются на входы ВальюОператора= результат-расстояние между В и С. cashis как я понял, требуется усроить битву "стенка на стенку". По поводу укрытия за стенкой: это давно придумано, принцип такой: создаётся дополнительная карта вейпоинтов для случаев укрытия. Название: Re: ИИ как сделать чтобы враг видел тебя ? Отправлено: redis от 13 Апреля 2009, 16:39:10 Большое спасибо за ответ:)
|