22 Сентября 2024, 11:55:49
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > ИИ как сделать чтобы враг видел тебя ?
ИИ как сделать чтобы враг видел тебя ?
(Прочитано 13606 раз)
  [1]
Печать
redis | ** | Пользователь | Сообщений: 89 | « 09 Апреля 2009, 21:42:28 »
ИИ как сделать чтобы враг видел тебя ? |
0
Собственно, кто как решал это проблему ? Поделитесь милейшие своим опытом, я решил эту проблему так, при приближении, в конечную точку motionplaning копировалась позиция персонажа и враг шёл на сближение, но когда врагов 40 этот способ не приемлим, как можно подругому ? или же надо прописывать логику каждой позиции ?
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #1 12 Апреля 2009, 08:33:24 »
Re: ИИ как сделать чтобы враг видел тебя ? |
1
Тоже думаю над этим вопросом.
Мои догадки: так как делаю слешер (как Девил Мэй Крей), максимум с игроком может взаимодействовать одновременно 8 противников со всех сторон. Игрок обладает 8мью, окружающими его колижн боксами. Проверка пересечения проводится с окружающим миром и врагами, как только игрок встал к стене спиной, три бокса сзади выдают пересечение, так враг понимает, что сзади к игроку не подобраться. Аналогично, если враг атакует игрока он становится в центр колижн бокса, который тоже активизируется давая понять остальным врагам, что этот сктор занят.

Мне будут крайне интересна информация о продвижении разработки вашего AI.
redis | ** | Пользователь | Сообщений: 89 | «Ответ #2 12 Апреля 2009, 10:57:29 »
Re: ИИ как сделать чтобы враг видел тебя ? |
2
Хм, очень умный ход решения проблемы взаимодействия), а могу я поинтересоваться как идёт проверка колизии ? Если через колизион рей чек, то ведь придётся каждому npc заранее давать позицию главного героя, а если врагов будет 100 ? Или у вас есть более хитрый способ решения проблемы ?

Просто если я не ошибаюсь чтобы шла проверка столкновений, к колизион рей чек нужно подсоединя матрицы обоих обьектов колизии
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #3 12 Апреля 2009, 14:20:00 »
Re: ИИ как сделать чтобы враг видел тебя ? |
3
Нужна конкретная задача, что вы хотите сделать: стратегию, РПГ, экшн, слэшер?
При каких условиях происходит битва, фиксированно растояние до игрока или нет? (холод или огнестр оружие)

По ответу:
Предлагаю использовать Луа скрипт или прямые ссылки, или ОО.
redis | ** | Пользователь | Сообщений: 89 | «Ответ #4 12 Апреля 2009, 14:37:16 »
Re: ИИ как сделать чтобы враг видел тебя ? |
4
Страстно горю желанием сделать РПГ, конкретно вроде Gothic 2, я просто не могу понять как там сдеалан ИИ, например с помощью кодов там можно создавать npc которые будут атаковать врагов, и создавать их можно не ограниченное количество, и мне стало интересно как они узнают позицию врагов
cashis | **** | Старожил | Сообщений: 353 | «Ответ #5 12 Апреля 2009, 15:50:19 »
Re: ИИ как сделать чтобы враг видел тебя ? |
5
А я вот тоже очень хочу сделать игрушку, но не знаю даже как сделать стрельбу из пистолета, пусть даже не по людям а хотябы по мешенькам!!! Как это реализовать ? Ну никак не пойму! И как создавать кучу анимаций в одном персонаже, чтобы для каждой ситуации своя ?
redis | ** | Пользователь | Сообщений: 89 | «Ответ #6 12 Апреля 2009, 16:30:34 »
Re: ИИ как сделать чтобы враг видел тебя ? |
6
Ну чисто теоритически с помощью motionblending можно сделать множество анимаций, а стрельбу я смог реализовать, выложить исходник смогу только на выходных или в пятницу Улыбающийся
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #7 12 Апреля 2009, 17:05:24 »
Re: ИИ как сделать чтобы враг видел тебя ? |
7
Как узнать положения противников.

Сложно это.
Я бы сделал так: есть база(массив переменных Типа Matrix, которые описывают нахождения союзников в пространстве )
Обработаем алгоритм для одного врага.
Врагу предоставляется информация по нахождению всех союзников в пр-ве. Если союзник находится в агро-зоне врага (обычно сфара, которая реализуется нахождением расстояния от точки врага до точки союзника), то враг проверяет клижн рей чеком, направленным в сторону союзника, визуальный контакт, если есть предмет на пути - враг ничего не делает, как только между С(союзник) и В(враг) ничего не будет, В ищет путь до С с помощью встроенного в Квест патчаиндинга.

Как В определит на кого нападать, если С в агрозоне много?
В таком случае проверяется расстояние до каждого и определяется самый близкий враг. ....
могу и дальше рассказывать, но вроде достаточно для тупого бота.
redis | ** | Пользователь | Сообщений: 89 | «Ответ #8 12 Апреля 2009, 19:56:47 »
Re: ИИ как сделать чтобы враг видел тебя ? |
8
Вы бы не могли поподробнее расказать (если есть возможность показать) про определение расстония от союзника до врага ?
cashis | **** | Старожил | Сообщений: 353 | «Ответ #9 12 Апреля 2009, 20:12:16 »
Re: ИИ как сделать чтобы враг видел тебя ? |
9
Как узнать положения противников.

Сложно это.
Я бы сделал так: есть база(массив переменных Типа Matrix, которые описывают нахождения союзников в пространстве )
Обработаем алгоритм для одного врага.
Врагу предоставляется информация по нахождению всех союзников в пр-ве. Если союзник находится в агро-зоне врага (обычно сфара, которая реализуется нахождением расстояния от точки врага до точки союзника), то враг проверяет клижн рей чеком, направленным в сторону союзника, визуальный контакт, если есть предмет на пути - враг ничего не делает, как только между С(союзник) и В(враг) ничего не будет, В ищет путь до С с помощью встроенного в Квест патчаиндинга.

Как В определит на кого нападать, если С в агрозоне много?
В таком случае проверяется расстояние до каждого и определяется самый близкий враг. ....
могу и дальше рассказывать, но вроде достаточно для тупого бота.
Так я непойму. Ты же один враг для AI !!! так вставь value vector на определённое расстояние и если ты попадаешь в эту зону то делается проверка на видимость этого объекта (как я понял ray check) и если да то всё бегом мочить этого врага. Но есть же ещё одна проблема, ты допустим сделаешь такого бота, так он только тебя увидит и в доли секунды тебе башню снесёт ты даже и ничего и сообразить не успеешь! Эт ж всё таки компьютер. Так что надо как-то сделать косячество бота, а ещё хорошо было бы чтобы например если у него закончились патроны он прятался бы за ближайшее укрытие. Но как это реализовывать непонятно!
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #10 12 Апреля 2009, 21:44:58 »
Re: ИИ как сделать чтобы враг видел тебя ? |
10
Редис
смотри в яндексе "Расстояние между точками"
помню вроде так L=sqrt(sqr(x1-x2)+sqr(y1-y2)+sqr(z1-z2));
где х1 и х2 координаты одной оси  первой и второй точки соответственно.

В Квесте это делается ёще проще для этого нам понадобится кинуть на форму каналы:
MatrixOperator(GetMovementFromMatrix)
ValueOperator(GetDistance(vector,vector))

тянем нод из Матрицы в оператор матрицы (получаем на выходе оператора- вектор) у С и В а потом вектора подаются на входы ВальюОператора= результат-расстояние между В и С.


cashis
как я понял, требуется усроить битву "стенка на стенку".


По поводу укрытия за стенкой:
это давно придумано, принцип такой: создаётся дополнительная карта вейпоинтов для случаев укрытия.
redis | ** | Пользователь | Сообщений: 89 | «Ответ #11 13 Апреля 2009, 16:39:10 »
Re: ИИ как сделать чтобы враг видел тебя ? |
11
Большое спасибо за ответ:)
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > ИИ как сделать чтобы враг видел тебя ?
Перейти в: