Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Список действий ботов для хорошего уровня ИИ (3 стр)

Список действий ботов для хорошего уровня ИИ (3 стр)

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 Следующая »
tacПостоялецwww3 июня 201617:11#30
Удивительно, каким типам тут дают статус участника )
pahaaПостоялецwww24 авг. 201613:59#31
Извините, не удержался:
Ведь не секрет, что поведение ботов будет зависеть именно от таких действий, которые вы будете  визуализировать, которые увидит игрок

Я, например, не буду визуализировать повышение статов персонажа, и игрок никогда не увидит лвл-апов, но боты должны по-разному реагировать на персонажей разной силы.
Как мне быть?

Вообще, крайне рекомендую заменить неправильно используемый термин "визуализация" на "поведение" и "параметры".

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

Самое интересное в этом примере то, что все эти варианты используются для одного и того же персонажа в одной и той же игре в одной и той же локации.

P.S. Люди, пожалуйста, прекратите создавать гениальные фреймворки, основательно и подробно изучив всё об ИИ за прошлую неделю. Из-за вас стало крайне сложно найти нормальные статьи.

tacПостоялецwww24 авг. 201616:24#32
пример притянут за уши, в игре нет одновременно 3д и 2д режимов, или то или то, и речь только о 3д, для этого вы придумали якобы 2 варианта бег или ходьба .. но совсем не существенно, посмотрю как вы будите убегать от пули пафасно перемещаясь шагом ))

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

Правка: 24 авг. 2016 16:26

pahaaПостоялецwww24 авг. 201617:17#33
В игре есть одновременно оба режима, могу дать ссылку на репозиторий

как вы будите убегать от пули пафасно перемещаясь шагом

ога, бегать в латных доспехах легко и просто

то что не увидит игрок мне программировать не надо

Это понравилось, добавлю в любимые цитаты. Жаль, что большинству программистов приходится писать гораздо больше, чем систему рендеринга.

Правка: 24 авг. 2016 17:17

tacПостоялецwww24 авг. 201622:22#34
pahaa
> большинству программистов приходится писать гораздо больше, чем систему
> рендеринга

Вы упорно не понимаете о чем в данной теме я спрашиваю

tac
> какие действия в ИИ вы визуально реализуете

это означает, что мне в данном вопросе не интересно, что происходит за кадром ...

почитайте подробнее о чем я спрашиваю и дальше в ряде постов поясняю .. а потом уже пишите по теме

P.S. возможно проблема тех кто в этой теме не понимает, в том, что они используют подход к моделированию снизу вверх, в то время как я прошу подумать исходя из подхода сверху вниз. Разделить на атомарные состояния и действия я уже потом и сам смогу, вопрос же не в этом. Вопрос в том какие комбинированные тактики нужны для ботов, которые могла бы включать система ИИ когда распознает ту или иную ситуацию. Причем именно такие тактики, которые игрок сможет увидеть и догадаться что делает сейчас бот.

Могу упростить, для тех кто все равно остался в танке. /я начинаю просто понимать, что те кто отвечает не имеет в свои играх просто достаточно развитого ИИ, и пытается поставленный вопрос или свести к анимациям или к действиям в смысле состояний - речь не идет ни про то, ни про другое/. Если кому то легче думать не со стороны визуализации - можно попробовать со стороны логики. Тогда вопрос стоит так - к сожалению, только на пример, общую постановку тут сложно сформулировать. Допустим боту нужно убежать от стреляющего игрока - какой набор действий (далее, тактик) ему надо осуществить, чтобы это сделать? Интересует не одна такая тактика, а всевозможные её виды, которые заставят игрока понять, что бот действует не линейно. Например, бот может убежать за угол и пальнуть от туда, или если игрок приближается, удрать за угол, обежать дом по кругу и расстрелять игрока в спину ... вопрос заключается вот только в таких примерах ...

Правка: 24 авг. 2016 22:41

amd.fx6100Постоялецwww25 авг. 20160:22#35
9К720
> Какая то идиотская тема со словесным поносом на тему якобы ии. Кроме поноса и
> глубоких мыслей автора что-нибудь еще есть? Давайте эту тему во флейм, к
> морфиям.
+1.  Много всякой хрени пишут и никто ничего конкретного сказать не может.

По теме самое простое решение всегда и есть самое правильное.
Я лично делаю так.  Создаю дефайны из мелких действий как в нулевом посте. Потом создаю функции которые запускают действие  - записывают список мелких дейсиствий в массив. и в функции update каждый фейм это все дело обрабатываю.

Примерно так.
#define MOVE 0
#define TURN 1
#define ATTAK 2
#define WAIT 3
#define STOP 4
#define DO_NOTHING 5

vector<int> ToDo; // массив где хранится список действий которые надо выполнить.
int CurrentAct; // какое действие сейчас выполняется.


 // ФУНКЦИЯ ЗАПИСЫВАЕТ ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ ДЛЯ АТАКИ ВРАГА.
// Можно создать много таких функций для различных ситуаций.
void AtakEnemy()
{
  ToDo.clear();
  ToDo.push_back(TURN);
  ToDo.push_back(MOVE);
  ToDo.push_back(STOP);
  ToDo.push_back(ATTAK);
}
 


void Update() // вызываем эту функцию каждый фрейм.
{
  if(ToDo[CurrentAct] == MOVE )
  {
    // здесь обрабатываем движение вперед и переключение к следующему действию

     if(проверка нужно ли переключится на следующее действие)
     {
         CurrentAct++; //   переключаемся.
    }
  }else if(ToDo[CurrentAct] == TURN)
  {
    // здесь обрабатываем поворот и переключение к следующему действию

    if(проверка нужно ли переключится на следующее действие)
    {
      CurrentAct++; //   переключаемся.
    }
  }else if(ToDo[CurrentAct] == STOP)
  {
    // здесь обрабатываем остановку и переключение к следующему действию

    if(проверка нужно ли переключится на следующее действие)
    {
        CurrentAct++; //   переключаемся.
    }
  }else if(ToDo[CurrentAct] == ATTAK)
  {
    // здесь обрабатываем атаку и переключение к следующему действию
  
    if(проверка нужно ли переключится на следующее действие)
    {
       CurrentAct++; //   переключаемся.
    }

  }else if(ToDo[CurrentAct] == DO_NOTHING)
  {
      // здесь ничего не делаем.

  }else if(ToDo[CurrentAct] == WAIT )
  {
    // здесь ждем что нибудь.
  
    if(проверка нужно ли переключится на следующее действие)
    {
  CurrentAct++; //   переключаемся.
    }

  }



  
}

Это общая схема. Естественно ее можно усложнить. Можно усложнить переключение между разными действиями и т.д.
Можно дополнительно создать списки для каждого мелкого действия и т.д.

Сейчас как раз пишу бота для одной игры. Именно так как описал у меня и сделано.

Правка: 25 авг. 2016 0:38

tacПостоялецwww13 дек. 20167:39#36
Up скоро вернусь к данной теме, в связи с разработкой системы ИИ и понятия предопределенного поведения и взаимодействия
ShirshПостоялецwww16 дек. 201618:14#37
GOAP: действий мало (двигаться к цели (либо точке маршрута к цели), "выполнять задачу" в радиусе цели - может быть "нажать кнопку атаки", может быть "нажать кнопку защиты" и т.д.), анимации как у игрока, достаточно много (могут быть разные анимации при нажатии кнопки атаки, в зависимости от направления цели, например; разные анимации в зависимости от скорости движения и т.д.).

Правка: 16 дек. 2016 18:24

zlosУдалёнwww16 дек. 201620:09#38
Визуально действия ИИ реализуют аниматоры. Для меня это кружочки с индикаторами, показывающими что ИИ думает.
tac
> все это жестким алгоритмом без никаких ИИ методов - базовое поведение на
> уровне рефлекса. И вот когда ему такое делать уже могут решать ИИ методы или же
> и без них, а лишь на основании состояния агента и наличия угрозы. И да вот это
> и будет одно действие вот с такой описанной визуализацией. И неужели в вашей
> игре такое понятие не используется для ботов?
Слышал про слои? Верхний слой, сделанный например на Utility AI, принимает решение "враг близко, мало здоровья -> бежать туда где по оценке безопасно", путенахождение ищет путь, потом ниже запускается например тупое BT которое разворачивает персонажа и заставляет его двигаться по пути. А ещё ниже анимация которой плевать на то почему персонаж решил побежать, оно просто играет анимации. Никто не делает "тупых алгоритмов" уже очень давно, существуют более простые и гибкие способы достичь того же.
UPD:
А вообще надо различать Model, где жиёт ИИ, и View, что видит игрок.

Правка: 16 дек. 2016 20:21

MiraПостоялецwww17 дек. 20160:23#39
zlos
нет единого способа реализации AI . он в любом случае будет не натуральным, лишь бы был удобен для проекта (ов) и решал нужные задачи
tacПостоялецwww18 ноя. 201723:50#40
tac
> скоро вернусь к данной теме
мм ... затянулось :) появился повод вспомнить об этой теме, в связи с разработкой игры SpaceEvacuation (Космическая эвакуация)
http://www.gamedev.ru/projects/forum/?id=230916

Итак, начнем мы тут с простого ...

Действия в ИИ (которые будут визуализированны):
1. Не управляемые игроком
1.1. Атаковать врага в режиме преследования (кого?)
1.2. Перезарядить оружие (где найти заряд?)
1.3. Отступить в отсек (в какой?)
1.4. Сломать двери (из какого в какой отсек?) [только для вражеских агентов]

2. Управляемые игроком через UI (для управляемых напрямую дружественных ботов) или установленные по сценарию (для вражеских ботов, или не управляемых напрямую дружественных ботов)
2.1. Занять отсек (какой?)
2.2. Охранять отсек (какой?)
2.3. Следовать за лидером в группе (атака в режиме защиты) (кто лидер?)

На днях напишу (было обсуждение в чате, которое нужно оформить) логику поведения ИИ. По сути, ничего истинно интеллектуального - просто будет конечный автомат с памятью. Но наружу будет казаться надеюсь достаточно интеллектуально.

(выше люди путали эти ИИ действия, толи с низким уровнем ИИ типа перемещения агента в точку, толи с анимацией ... все это тут не причем, агент может спокойно перемещаться в точку, огибая препятствия, имеет кучку анимаций, ходить, переминаться с ноги на ногу, стрелять, умирать и прочие ... все это не путаем). Анимации прямо соответствуют состоянию агента (по ним игрок узнает что агент делает в данный момент), а низкоуровневый ИИ - идти, стоять, поднять - это лишь конкретные методы конкретных классов. Мы же будем говорить о действиях, как атомарных более высокого уровневых методах, с которыми напрямую будет работать "мозг" ИИ. Считайте это интерфейс IAiAction (в смысле C#), который должен реализовать любой агент, а использует его "мозг" ИИ. (на самом деле, реализация сложнее, но не суть)

(для любителей нейросетей, в их терминах - это выходы нейросетки, и по сути весь репертуар ИИ, видимый в данный конкретный момент игроком, отсюда и визуализация)

проиллюстрируем что значит "Следовать за лидером"

+ Показать

Так вот, действия с уже заданными параметрами (кто лидер, какой отсек) под цифрой 2. будем называть целью заданной игроком/сценарием.

А действия с уже заданными параметрами под цифрой 1. будем называть подцелью (или вторичной целью), решать осуществлять или нет будет "мозг" ИИ.

"Мозг" ИИ для каждого агента представляет собой некую приоритетную очередь целей/подцелей (которые с его точки зрения не различаются). Тогда весь алгоритм ИИ сводится к построению правил конечного автомата по наполнению очереди и изменению приоритетов в ней. (а задачей разработчика, задать эти правила, что мы сделаем тут позже)

Вот такая формализация.

Продолжение следует ...

Правка: 19 ноя. 2017 0:57

RikkПостоялецwww19 ноя. 20170:47#41
tac
> посмотрю как вы будите убегать от пули пафасно перемещаясь шагом )
стоя на месте не двигаясь (ногами не проходя ни метра) свёртывая-развёртывая корпус тела(а пули пролетают мимо).
ссылка- качание маятника. качать маятник. пример— кино матрица в конце сцена на крыше. иные статьи заявляют что такой метод реально существует от времен второй мировой войны.
MiraПостоялецwww24 ноя. 201718:15#42
я тоже так и не придумал чем занять девок в свободное от "боевого режима" девок) кроме спортзала и пожрать.
на счет ключевых персон знаю, на счет остальных нет (( при этом чтоб было вменяемо реализуемо, а сходить в салон и раскрасить ногти фрактально генерируемым узором
MrShoorУчастникwww24 ноя. 201719:34#43
Mira
> чем занять девок в свободное от "боевого режима" девок) кроме спортзала и
> пожрать.
Собираться в группки и общаться. Смотреть тв, готовить жрат, рисовать, петь, если есть спорт инвентарь - играть в игры (в том числе на свежем воздухе). Пробежки вокруг дома. Поставить им жезлонг на улице, пусть по вечерам лежат и звезды считают. Пьющие курящие пусть курят и пьют. А напившись тягают друг друга за волосы.
MiraПостоялецwww24 ноя. 201720:30#44
MrShoor

MrShoor
> Собираться в группки и общаться
в планах, но пока реализоввывать затейливо. в частности с визуализацией, не будут же они всегда одной фразой общаться. ладно когда формальные диалоги. ну и анимаций кучу надо.
MrShoor
> Смотреть тв
точно, сам не смотрю по этому пришло на ум.
MrShoor
> готовить жрат
буфет есть, хватит того)
MrShoor
> петь,рисовать
слишком индивидуальное увлечение. можно так одну,две персоны выделить
MrShoor
> если есть спорт инвентарь - играть в игры
можно ага
MrShoor
> Поставить им жезлонг на улице, пусть по вечерам лежат и звезды считают
интересно
MrShoor
> Пьющие курящие пусть курят и пьют
тоже есть в запасе, но если будут только заниматься спортом и кутить - будут выглядеть как шаболды  :DDDD

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Игровая логика и ИИ

2001—2018 © GameDev.ru — Разработка игр