Группа вконтакте! Подпишись!
Форум сайта

Авторизация



Реклама

Опросы

Как вам наш сайт?

Новые пользователи

  • gorniks
  • nensyrsy
  • saneka
  • baxa.0088
  • Persik
  • Evilsoevil
  • Arminaisss
  • ста
  • CharlesBug
  • aseoprodwig

В данный момент в этот раздел идет набор помощников, по написанию и добавлению материалов.

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

Редактор ИИ (Часть 3)

Рейтинг:   / 6
ПлохоОтлично 

Приоритет целей

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


Перечислим возможные приоритеты: 

  • (?)Обычная цель – не совсем понятно. Видимо выбор цели предоставляется самой AI. 
  • Новый лагерь (местность) [/i] – целью для AI станет завоевать участок для строительства новой базы (т.е. крипсы, охраняющие рудники). 
  • Враг (главный лагерь) – нападение на главный вражеский лагерь. Т.е. удар по фабрикам. 
  • Враг (дополнительный лагерь) - нападение на дополнительный вражеский лагерь. Т.е. удар по добыче ресурсов. 
  • Враг (любой лагерь) - Нападение на любой вражеский лагерь. 
  • Лагерь монстров – напасть на базы крипсов. Вы можете определять уровень силы крипсов. Примерно: слабые 0-10, средние 10-20, сильные 20-100. А еще можете указать, чтобы нападение велось на крипсов, среди которых нет летающих юнитов. 
  • Купить дирижабль гоблинов – указание AI идти к лавке гоблинов и купить дирижабль. Имеет смысл на островных картах. 


Итак, создайте приоритеты и расставьте их в нужном порядке. Например, что главный приоритет – вражески базы, затем обычная цель, затем криспсы. Но это еще далеко не все. На приоритеты можно (не только можно, но и нужно!) навесить условия. Если вы не навесите условий, то AI просто зациклится на первых по счету целях. 
К примеру, если первая строка – атака вражеской базы (без условий), то AI вероятнее всего не будет обращать никакого внимания на остальные строки и зациклится на атаках по базе врага. Если первая строка Новый лагерь – то AI поведет воинов в атаку на крипсов, стерегущих рудники (пока не истребит их всех:)). 
Какой из этого вывод? Для каждой записи в списке нужно придумать условия. Например, мы можем сделать первым приоритетом Новый лагерь и навесить условие Expansion spot needed. В итоге AI в обязательном порядке будет нападать на крипсов у рудников ПРИ УСЛОВИИ, что AI собирается строить новую базу, но нет свободных участков. Следующим пунктом можно сделать атаку на вражескую базу, ПРИ УСЛОВИИ, что AI имеет в запасе столько-то воинов и т.п. Лучше всего посмотреть, как это делается в примерах. 

Вкладка “Проверка конфигурации”


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

Скорость игры – скорость, на которой будет происходить тестирование. Можно ставить значения от 1 до 24 от стандартной игровой скорости. Но вообще говоря ставить скорость выше 8 не имеет смысла, т.к. в игре начнется торможение из-за нехватки памяти. 
Туман войны – можно самого начала убрать туман войны и видеть всю карту. 
Условия победы – можно отключить условия победы. Тогда тестирование продолжится даже если все противники побеждены. 
Файл – можно указать сценарий, на котором будет происходить тестирование AI. Карта должна быть пригодна для melee. 
Игроки – это таблица, в которой мы определяем, кто и с кем дерется. 
В колонке Управляет нужно выбрать одного человека-наблюдателя (себя) и пару компьютеров. Чтобы компьютеры сражались друг с другом, их нужно поместить в разные команды. Игрокам вы можете назначить цвета, чтобы различать где какой AI. Игрокам вы можете назначить разные AI: 

  • Текущий – тот AI, который вы создаете. 
  • Стандартный – обычный компьютерный AI. 
  • Нестандартный – AI, который загружается из файлов с расширением ai. Например, вы можете стравить несколько нестандартных стратегий, созданных вами и посмотреть, какая из них сильнее. 
  • Столбец Фора позволяет ослаблять юнитов определенного игрока (давать фору). 
  • Столбец ИИ (сила) позволяет также изменять силу AI, но другим способом. Уровни легкий, средний и безумный отличаются лишь скоростью добычи ресурсов. Первый вариант испытывает нехватку ресурсов, второй – норма, третий – имеет их с избытком (а значит может быстро развиваться и жертвовать войсками). 

 

Как загружать AI в карту


Все достаточно просто. Прежде всего запоминаете каталог, в который вы сохранили свою стратегию. Это будет файл с расширением wai. Затем открываете нужный сценарий, загружаете менеджер импорта. В менеджере делаете команду Импорт файла – и в качестве файла указываете файл с вашей стратегией. 

Важно: обратите внимание, что при загрузке файла <стратегия>.wai на самом деле загружается еще один файл <стратегия>.ai. Этот новый файл – и есть настоящая стратегия. Менеджер импорта сам произвел преобразование wai в ai! При желании вы можете экспортировать файл с расширением ai - либо чтобы отредактировать его вручную, либо чтобы использовать его как нестандартный ai при тестировании какого-то другого ai в редакторе. 
После того, как AI загружен в сценарий, посмотрите, что произойдет, если открыть редактор AI. В него автоматически будут загружены все импортированные AI и вы сможете вносить в них изменения напрямую. Т.е. исчезнет необходимость все время импортировать файл с AI. Но с другой стороны, не забывайте, что при этом вы работаете с AI находящемся внутри сценария. 

Как заставить компьютер использовать импортированную AI? 
Заходите в редактор триггеров и создайте команду Start melee AI script for <игрок>: <название стратегии>. Название стратегии берете из списка импортированных стратегий. 

Практические советы



Несколько советов, которые помогут вам работать с редактором AI: 
1. Вы можете копировать элементы многих списков: условия, приоритеты строительства, приоритеты добычи, приоритеты атаки, приоритеты атаки, юниты из атакующей группы. Очень часто проще скопировать и отредактировать запись, чем создавать заново. 
Копировать можно даже с одной AI в другую. Просто откройте несколько AI и переключайтесь между ними через пункт Окно. 
Быстрые клавиши: копировать – ctrl-c, вставить ctrl-v. 

2. На вкладке Общие в качестве расы лучше всего всегда указывать Нестандартная раса (о причинах – см выше). 

3. Помните, что для нестандартных рас вы можете создавать любые юниты и давать им любые заклинания. Но будут ли юниты использовать новые заклинания – совсем не факт. Будет ли использовать юнит заклинания определяется не в AI. Это уже встроено в игру. Например вы можете дать юниту способность создавать иллюзии, но сам по себе он никогда этой способностью не воспользуется. Этого заклинания не было в игре! Какой выход? Проблему можно решить на уровне триггеров. Например дать юниту способность-пустышку на базе скажем frost armor. Это заклинание юнит будет применять самостоятельно, а мы будем отслеживать на кого оно применено и создавать иллюзии. 

4. К сожалению поведение AI нельзя корректировать исходя из мощности противника, также как и вносить элементы случайности. Но при помощи триггеров это можно скорректировать. Например, каждую секунду через команду Send AI command посылать в AI информацию о силе противника. Или передавать AI случайное число. 

5. Может быть у вас возникнет соблазн заставить AI строить все в определенном порядке (так, как строили бы вы, если бы играли на его месте). Понимаю ваше желание, но не забывайте, что AI не обладает вашим интеллектом. AI всего лишь выполняет план сверху вниз. Причем чем ниже находится запись, тем больше вероятность, что AI в силу сбоев не будет ею заниматься. 
Первый пример. Допустим, в ваших приоритетах строительства: 
.. 
Построить дворец орков 
Построить тотем тауренов 
Построить таурена 
Построить таурена 
Построить таурена 
.. 
Неожиданно приходит враг и самоубийственной атакой уничтожает дворец орков. Что произойдет с AI? У нее в распоряжении будет тотем таурена, но он им не сможет воспользоваться. Он будет ждать, пока не будет заново построен дворец орков! И все это время будет пользоваться устаревшими войсками. Этот AI практически обречен против умного противника. 
Или еще один пример: в ваших приоритетах строительства первые строки: 
Дом вождей 
Раб 
Раб 
Раб 
.. 
Все тут нормально? А если враг придет, уничтожит пару ферм и большую часть строителей? Т.е. по приоритету AI должен строить раба, но для этого не хватает пищевой мощности. Нужна бы ферма, но он ее построить не сможет – ее нет в приоритетах. Значит, наступит ступор и этот AI также обречен. 
Третий пример: скорее всего в начале вы будете давать команды AI строить грантов. Но когда уже есть тотем таурена, выгоднее строить тауренов. Но ваш AI все равно будет строить грантов – ведь их приоритет сохранился и он даже выше, чем у тауренов. Весело? 

Как же с этим бороться? 
Используйте свой интеллект :). Вы должны навешивать на приоритеты строительства определенные условия! Не даром условный оператор называется также оператором ветвления. При помощи условий мы производим ветвление алгоритма, делаем его более универсальным. 
Рассмотрим еще раз наши примеры с учетом условий. 
Пример 1: произведем некоторую перестановку. Переместим все что связано с тауренами ближе к началу приоретов строительсвта. 
.. 
Построить бараки 
Построить тотем тауренов 
Построить таурена 
Построить таурена 
Построить таурена 
.. 
Построить дворец орков 
.. 
Законный вопрос: т.е. как? AI построит бараки, захочет построить тотем, но ведь необходимого для этого дворца нет? Ответ: мы навесим на пункт Построить тотем тауренов условие Количество дворцов таурена больше 0 (integer comparison), а на постройку каждого таурена навесим условие Количество тотемов таурена больше 0. Наша задача решена. Как только будет готов дворец, будет построен и тотем и AI будет его использовать даже если дворец будет снесен. 
Пример 2: очевидно нужно расставить приоритеты. После дома вождей следующим приоритетом должна быть постройка нужного числа ферм, а затем уж постройка рабов. Но фермы нужно строить только ЕСЛИ в них есть необходимость. Можем мы определить, когда в ферме есть необходимость? Да. Я эту задачу решил создав специальное условие need farm: Food Produced – Food used меньше или равно 4. Т.е. если количество производимой еды минус количество используемой еды меньше 4 – пришло время для фермы. Поэтому у меня первые строки приоритетов выглядят так: 
Дом вождей 
Логово орка 
Логово орка 
.. 
Логово орка 
Раб 
Раб 
.. 
На каждое логово навешено условие need farm. 
Только есть одно но. Если оставить все как есть, то при нехватке еды доблестные работнички примутся строить столько ферм, на сколько им хватит денег (подумайте почему?). Я же хочу, чтобы одновременно строилось не более 1 фермы. Поэтому я модернизировал условие need farm: (Food Produced – Food used меньше или равно 4) and (количество логов орков - количество логов орков завершенных равно 0). Т.е. если у нас строится хоть одна ферма, то количество логов больше чем количество построенных логов. А значит AI не сможет строить одновременно более одного логова. 
Задача решена: в случае нехватки еды AI не будет впадать в ступор, а будет оставшимися рабочими строить фермы. Более того, мне больше не нужно вообще заботится о постройке ферм в приоритетах строительства. 
Третий пример: я думаю вы уже и сами поняли, что нужно делать. Как избавить AI от необходимости строит устаревшие юниты? Всем юнитам, которые впоследствии устареют ставим условие – строить их только ЕСЛИ компьютер не дошел до определенной стадии развития. Например, строить грантов до тех пор, пока количсетво тотемов таурена = 0. 

Добавить комментарий

Защитный код
Обновить

    © Собщество игроков. 2012.

Рейтинг игровых сайтов