Ai
#1
В этой теме я хочу собрать все способы которые каждый знает по улучшению аи противников.
Мой способ улучшения аи это различные скрипты которые позже нужно будет вставить в мобы.
Ну например скрипт :если здоровье противника стало на 50-60% меньше то он
а)пытается себя вылечить спеллом если таковой имеется
б)начинает убегать от перса к ближайшему юниту враждебному к персу
Так же я хотел бы узнать у Sun 'а возможно ли скриптами реализовать выбор у монстра типа атаки то есть в корпус в голову и тд.?
Вобще я считаю что аи требует улучшения так как монстры достаточно тупы и у них только одно действие при виде перса это атаковать его.Улучшением аи я полагаю будет свобода выбора монстров.
То есть чтоб они при виде перса смогли оценивать ситуацию:напасть им или побежать за подмогой.
Ваши предложения господа ?
"{}•••®/A//P][R[$®•••{}"
Ответ
#2
«Чтобы перс себя лечил и товарищей», такое в ПЗ есть, это тип монстров Шаманы, нужно только дать закл в арсенал монстру. Поведение: «убегать к ближайшему монстру и вызывать подмогу», тоже есть, но не так прямолинейно. Свойство: скрыться, убежать, обладают такие юниты как Орк с тайной запиской убить Избранного на карте «Река и Острова» и другие монстры, например «Батраки».
Отдать команду «скрываться» можно командой: «UMRevenge». Чтобы вернуть монстра в прежнее состояние, нужно отдать две команды юниту: «UMClear», «UMStandard», или новую команду, появившуюся после сервиспаков из-за «Циклопа»: «ResetTarget»

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

Код:
Script VCheck#0#15
(
 if
 (
   IsLess( DistanceUnitPoint( this, 194, 69 ) , 40 )
   IsAlive( this )
 )
 then
 (
   KillScript(  )
   VTriger#0#19( this )
 )
)

Script VTriger#0#19
(
 if
 (
 )
 then
 (
   KillScript(  )
   CreateLightning( GetObjectID( this ) , 193.5, 77, 20.5, GetX( this ) , GetY( this ) , GetZ( this ) , 4 )   /показать молнию бьющую в юнита
   InflictDamage( this, 10 )                                                                /нанести урон в 10 единиц
   Sleep( 15 )                                                            /задержка для визуализации молнии на 1 секунду
   DeleteLightning( GetObjectID( this )  )                                        / удалить объект Молния
   Sleep( 100 )                                                                               /задержка между ударами молнии, как бы пирамида заряжается
   VCheck#0#15( this )                                                                / снова запустить процедуру проверки, находится ли юнит в зоне досягаемости Пирамиды
 )
)
нужно отметить, что этот скрипт многопоточный, и для каждого объекта открывается свой поток и инициализируется переменная: «this», то есть, молния будет бить в каждого юнита индивидуально. Потоки активируется в момент входа на игровую зону. Индивидуальность не совсем логична, так как получается, что молния перезаряжается для каждого юнита персонально, а должна была бы перезаряжаться сама по себе и бить на всех, кто попал в зону одновременно…
В нынешнем исполнении, этот метод убран, и вместо него, есть так называемый объект: «Ловушка» (MagicTrap), который можно установить как объект на карту и активировать/деактивировать его (объект ловушку). Эти два скрипта можно объединить в одну процедуру и сделать локальную, на уровне модуля моб-файла процедуру. Такой метод так же есть в ПЗ, на зоне 19 – эффект бегущих огней в портале. К слову сказать, можно сделать и свои собственные эффекты…
Ответ
#3
2Sun
Спасибо тебе.
А вот скажи что ты думаеш про улучшение аи монстров.С улучшенным аи ведь будет интереснее играть чем просто так ходить и месить всех без особо сложных тактик.
"{}•••®/A//P][R[$®•••{}"
Ответ
#4
Пожалуйста!

Думаю «улучшения враг имеющемуся». Неблагодарное это дело улучшать. Новое нужно придумывать…
Ответ
#5
А что ты имееш ввиду новое , если можно то по конкретней.
"{}•••®/A//P][R[$®•••{}"
Ответ
#6
Дать противникам 2 оружия (например колье и меч) и пусть юзают их толково
Ответ
#7
Думаю движок не позволит противникам юзать два оружия одновременно.
Да я думаю что балланс только усилит или уменьшит сложность игры а не улучшит аи.Нужно искать новые способы.
"{}•••®/A//P][R[$®•••{}"
Ответ
#8
Реплика Сана в похожей теме "Нужно детально описать поведение врага"
Предлагаю вариант
Все монстры, кроме зверей и мертвецов, оценивают силу противника, но не все правильно; это зависит от интеллекта
Причем оценка не только в начале, но и во время боя каждые 15-20 с, с учетом своего HP и прибывающих подкреплений, своих и чужих

Бывают еще абсурдные ситуации, когда на тесно стоящую группу нападают, некоторые из группы видят, но не предупреждают товарищей криком - это надо исправить
Итак


Гоблины вероятность неверной оценки велика, скорее переоценят и убегут
Орки немного умнее, но склонны недооценивать противника, яростно сражаться до конца
Шаманы умны, они не только усиливают лечат и стреляют, они в первую очередь командиры, отдающие правильные приказы: атаковать, отступить, разойтись(в случае применения противником сильной площадной магии), заманивать и т д, могут послать одного из группы за подкреплением Шаманы никогда не ходят без охраны, причем, стоят они или идут, охрана ведет себя так, чтобы по возможности видеть все вокруг. Однако из-за своей свирепости орки иногда не слушаются шаманов и бьются когда надо бежать.
Люди на Гипате и простолюдины на Ингосе более-менее трезво оценивают ситуацию и действуют по стандартной схеме (биться или бежать) Рабы на Сусле убегают всегда

Воины на Ингосе и Сусле умнее гипатян, но главное что они - солдаты и не занимаются оценкой, а исполняют приказы офицеров

Задача часовых и патрулей - поднять тревогу, а не геройски погибнуть
Задача телохранителей принять удары, охраняемый не сражается, а бежит за помощью

В лагере или казарме всегда должны быть офицеры, которые действуют подобно шаманам, но гораздо умнее и имеют большой радиус обзора, ~ на 7-10 м больше чем у перса с орлиным взглядом и зрением мертвеца Они должны 100% правильно оценивать картину боя и зная + и - каждого подчиненного эффективно командывать, не вступая в драку. Кстати ББ воинов одного типа могут различаться % на 30, как и бывает в жизни.

Варианты действий офицеров

Стандарт Главное - сохранить свой отряд. Если враги гораздо слабее - нападать всем отрядом (в первую очередь нападать на вражеских магов и лучников), иначе уклоняться. Если враг силен и наступает, отступать на позицию, где защитники имеют преимущество,например в узкий проход, где можно сражаться 1 на 1, вперед ставить самого сильного, магов и лучников назад в безопасное место, самого слабого/быстрого послать за помощью, если возможно
При отступлении можно кем-то пожертвовать, приказав ему атаковать вражеского мага. Это должно 100% задержать наступающих.
Еще вариант: всем бежать врассыпную

Охрана ворот Здесь главное умереть, но не пропустить И конечно послать кого нибудь за помощью.

Засада обычная, как у цветка

Ночная ловушка Выставить одинокого стражника в виде приманки. Офицер со своим отрядом находится рядом, все лежат у всех в доспехах невидимость, а у офицера еще и нчное зрение. Он должен оценить, нападать ли Утром все уходят в лагерь отсыпаться Smile

Заманивание 1-2 воина с зельем телепорта заманивают в закрытое пространство (в ущелье, во двор) и телепортируются

Окружение см ниже

Лесовики видят далеко, как офицеры, поэтому стараются не сражаться небольшими группами, отступают, следуют на расстоянии, окружают, потом нападают со всех сторон в большом количестве с единорогами

Остальные монстры действуют стандартно

На первый взгляд невозможно все это реализовать, тем более не перегрузив скриптами mob.
Но если для каждого отряда и каждой местности тщательно продумать варианты действий, то в бою все будет сводиться к выбору набора команд. Например каждый отряд имеет одну-две фиксированных позиции для обороны и по команде отступать все юниты занимают прописанные в mobe позиции.

Представьте как изменится игра если хоть половина этого будет реализована
Ответ
#9
Никто не отвечает...
Сан, я совсем ахинею нереальную написал?
Ответ
#10
Я извеняюсь, что немного не в тему, но улутшение аи - будет слишком, по-моему, если враг тебя увидел, но ты при этом успел отбежать на солидное расстояние, враг будет тебя преследовать, постоянно, и побежит за тобой, хоть на край карты :angry: .... И от него не скроешся.... никак.... Я представляю что будет если улутшить аи..... Наверное натравит всех монстров карты на тебя, пока будет за тобой бежать..... И еще одно: далеко от него не убежиш, по скольку у монстров не заканчивается стамина Sad .........
Если пацан сказал - пацан сделал, если пацан не сделал - у пацана не получилось... :о)
Ответ
#11
Почему же ахинея? Очень правильно и грамотно ты написал. Можно поэкспериментировать со скриптом, и реализовать твои задумки. Главное, это играбельность!
В ПЗ для каждого юнита зарезервировано 5 позиций тревоги. Первая позиция – это обычно поведение, а остальные практически не используются. Можно сделать как бы 5 уровней интеллектуальной сложности на игровой зоне, которые динамически могут изменяться в процессе игры. Например, чем больше убиваешь врагов тем тревожнее у них поведение, и так далее. Это я так, к размышлению написал…
Вообще, Нивал не использовал огромное количество возможностей движка ПЗ. Например, есть три параметра чувств не использованных у персонажа игрока: Обоняние, Слух, Предчувствие…. И многое другое, в том числе и баланс скорости передвижения.
Ответ
#12
а вот еще что:
почему бы не сделать некие разные группировки у разных категорий врагов ( такое реыльно - клан ШайВаров и Ящеры в сингле)
Например, разбойников стравливать с лягушками. Вообще всех животных со всеми разумными.
Кабаны только с теми кто на него самого нападает.
Банбш и стражу.
Тигров и простолюдинов....
И т. д.
Очень поможет...
Поднимите мне веки
(с) Гоголь
Откройте мне веки...
(с) ВиЙd
************************************************
Моя фотка - логотип Царства Магии
*************************************************
Зак forever, Ат-Зако в отстой....
Ответ
#13
Это реализуется очень легко. В пз есть дипломатические группы, вроде от 0-31.
Между ними может быть три состояния: враждебное, не враждебное, нейтральное. Таким образом, как выразился ВиЙd, можно будет стравливать монстров на карте. Я попробую это реализовать, а точнее отредактировать скрипт. Ждите результатов.
"{}•••®/A//P][R[$®•••{}"
Ответ
#14
прально, так намного реалестичнее будет - но:
1) Оставь нейтрал между лесовиками и всякой живностью, кроме единорогов, так же с троллями...
2) У хищников поставь ВРАГ с зайцами и оленями....
3) сам подумай...
Спасибо
Поднимите мне веки
(с) Гоголь
Откройте мне веки...
(с) ВиЙd
************************************************
Моя фотка - логотип Царства Магии
*************************************************
Зак forever, Ат-Зако в отстой....
Ответ
#15
Для тех кто собирается работать в направлении улучшения аи.
Процедуры AI

SetDiplomacy ( nPlayerA , nPlayerB , flDiplomacy )
Изменяет дипломатию - кем является игрок nPlayerB для игрока nPlayerA. Возможные значения flDiplomacy:
1 - союзник
0 - нейтрал
-1 - враг
См. также SetPlayer(), GetDiplomacy() и GetPlayer().
Примеры:
SetDiplomacy(0,

SetPlayer ( objUnit , nPlayer )
Объявляет юнит objUnit принадлежащим игроку nPlayer. См. также SetDiplomacy(), GetDiplomacy() и GetPlayer().

Подробнее здесь http://www.eicheats.hotbox.ru/
"{}•••®/A//P][R[$®•••{}"
Ответ
#16
Я тут темку про тактику толкал, правда в Посёлке:
http://gipat/forum/viewtopic.php?t=3191

Так вот.. Если реализовывать некие тактические фишки: Даже на Гипате в сингле, расставив Гоблинов пограмотнее(Когда разбойники предали Зака. надо было помощника Атамана мочить), то Зака там Могли ой завалить!
Ответ
#17
Циклопы ( Выход из укрытия опасен!) Ваще наглые
Папа то еще по правилам беьтся, а мелкие ноги
уносят, но камнями кидаются!
А что сверх всего этого, сын мой, того берегись: составлять много книг - конца не будет, и много читать - утомительно для тела.
Выслушаем сущность всего: бойся Бога и заповеди Его соблюдай, потому что в этом все для человека;
Ибо всякое дело Бог приведет на суд, и все тайное, хорошо ли оно, или худо.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)