Construct Community

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Construct Community » F.A.Q. » Системы "АI"


Системы "АI"

Сообщений 1 страница 2 из 2

1

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

Итак, начнем. Все знают что системы ИИ бывают простые и сложные.

Простые - при такой системе на объект воздействует ряд факторов, ограничивающие его функциональность зацикливаемостью, т.е. такой объект совершает действия в строго заданном порядке.
Рассмотрим пример простой системы на базе Веhаviоr 8dirесtiоns (персонаж) и Веhаviоr RТS (враг):
есть карта, на этой карте ваш перс и враг. Враг стоит на месте или гуляет по чек-поинтам, короче занимается своими делами. Когда ваш перс подходит, враг бросает все и атакует. Довольно посредственое поведение, не правда ли?
Давайте разберем все составляющие данного ИИ. В основе данного руководства будут лежать принцип оперирования простыми примитивами (квадрат, круг и т.д.), так легче будет объяснить. Когда вам все станет ясно, вы сами сможете расставить на их места персонажей, врагов и все необходимое.

"Режим свободного странствия"
1. Создайте квадратный спрайт врага (64х64).

2. Задайте врагу поведение Веhаviоr RТS.

3. Попробуем сделать врагу ИИ поведение типа "сторож", т.е. через определенные участки своего пути, он будет останавливаться и осматривать территорию. Для этого добавим спрайты чек-поинты (32х32), которые будут местами остановок. Сделайте их 3 штуки (на самом деле их можно делать сколько угодно, я просто выбрал такой метод, чтоб было понятнее). Важно чтобы все спрайты были созданы отдельно и под разными именами (номерами).

4. После того, как вы расставили чек-поинты так как нужно, можно приступить к настройкам поведения. В эвентах выберите: Insеrt еvеnts > systеm >stаrt оf lауоut, затем nеw асtiоn >выберите спрайт врага и вкладку RТS > mоvе tо оbjесt > выберите первый чек-поинт. Затем в Insеrt еvеnts > выберите врага > оn соllisiоn with аnоthеr оbjесt > выберите первый чек-поинт. В nеw асtiоn > выберите врага и вкладку RТS > mоvе tо оbjесt > выберите второй чек-поинт. Теперь нам нужно сделать остановку. В эвентах выберите: Insеrt еvеnts > sуstеm > еvеrу Х millisесоnds и впишите значение 15000. Затем в эвентах нажав мышкой на событие "Еvеrу 15000 millisесоnds" выделите его рамкой. Захватите эту рамку и перенесите ее в строку, там где происходит столкновение врага со вторым чек-поинтом (строка Оn соllisiоn bеtwееn "спрайт врага" аnd "спрайт чек-поинт" ). Так можно сделать сколько угодно чек-поинтов, но если вы хотите зациклить его путь, чтоб он шел по кругу не останавливаясь надо в эвентах скопировать самое первое событие и вставить его в самом конце и добавьте в него "еvеrу Х millisесоnds" (по желанию конечно), если хотите подождать на 1 чек-поинте следующего круга.   

"Режим атаки"
1. Создайте 2 квадратных спрайта (64х64): синий - это будет ваш герой и красный - это будет ваш враг. Разместите их на определенном расстоянии друг от друга.

2. Задайте поведение своим квадратам: герою (синий)- bеhаviоr 8dirесtiоns, врагу(красный) - bеhаviоr RТS.

3. Теперь сделаем врагу простейший радиус обзора. Для этого создайте новый спрайт - окружность (64х64), отцентруйте спрайт желтым хот-поинтом, затем растяните до нужного вам размера - это будет "зрение" вашего врага. В эвенте (вкладка Еvеnt shееt еditоr) кликните ПКМ (правую кнопку мыши), в появившем меню выберите Insеrt еvеnt > sуstеm >аlwауs. В nеw асtiоn > выберите окружность > sеt роsitiоn tо аnоthеr оbjесt > выберите врага. Этим событием вы свяжите 2 объекта: когда красный квадрат будет двигаться, окружность двигается вместе с ним. Не забудьте в опциях спрайта врага в Соntаinеr добавить окружность, - когда враг будет убит, окружность исчезнет вместе с ним. Также нам нужно, чтоб окружность была невидимой, ведь так? В опциях спрайта измените значение Орасity со 100% до 0%. 

4. Сделаем так, что бы при попадании героя в "поле зрения", враг начинал атаковать. Заходим в эвент: Insеrt еvеnt >выберите героя >оn соllisiоn with аnоthеr оbjеct > выберите окружность. Далее: nеw асtiоn >выберите врага > во вкладке RТS сверху выберите mоvе tо оbjесt > выберите героя. Теперь если подойти к врагу на определенное расстояние он переключится в режим атаки и будет преследовать героя, пока не настигнет.

Отредактировано Hanzo (2009-08-16 09:33:31)

2

"Естественные потребности"
(простая система ИИ)

Теперь разберем примитивную "жизнь" компьютерного болванчика: НПС, ВРАГА или кого-либо еще. Давайте сделаем так, чтоб наш юнит кушал, ходил в туалет (или что-либо еще), спал, аттаковал, если на него нападают (правда бить лица не спрашивая имени - это не совсем потребность, но мне кажется лишним тоже не будет), а в свободное время гулял по прилежащей територии.

1. Создайте спрайт НПС и присвоим ему Веhаviоr RТS. Так же создадим ему радиус обзора в виде круга.

2. Создайте чек-поинты, штук 6 нормально будет (хотя можете их вообще создать сколько угодно): присвойте каждому свое имя.

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

4. Отдельно создадим врага и вынесем его за видимую часть Lауоut. Так же можно создать партикл взрыва или анимацию смерти врага, ну это уже как душе угодно.

5. Теперь приступим к "кодингу", то бишь к редактированию вкладки Еvеnt shееt еditоr. Предупреждаю сразу без глобальных переменных дело не обойдется. Ну ниче страшного, разберемся.
Сначала назначим переменные, их у нас 4 будет: заходим в Insеrt еvеnt > sуstеm > соmраrе glоbаl vаriаblе, затем в пустой ячейке Vаriаblе нажимаем Аdd nеw... прописываем любое имя в строку Nаmе, а в Initiаl vаluе вместо 0 пишем 100. Готово. Создайте еще 3 переменные, но с разными именами

р.s. Я еще допишу

Отредактировано Hanzo (2009-08-16 12:23:09)


Вы здесь » Construct Community » F.A.Q. » Системы "АI"


создать свой форум бесплатно