Главная » Уроки » Моддинг » Коддинг » Настройка найма героев искусственным интеллектом (AI)

Настройка найма героев искусственным интеллектом (AI)

Гэндальф, Арагорн, Леголас и Гимли в Медусельде


Вводная часть

Опытным игрокам "Битвы за Средиземье" известно, насколько AI не любит создавать героев. Особенно кольцевых героев. Компьютер может заполучить Кольцо хоть в первые минуты матча, отнести его в свою крепость, и напрочь забыть о возможности создания кольцевого героя. С чем это связано, сказать точно нельзя. Впрочем, выяснять доподлинную причину и не надо, — нелюбовь ИИ к созданию героев исправляется буквально в пару кликов!


Теоретическая часть

Итак, в оригинальных BFME2 и ROTWK список героев для найма искусственным интеллектом (AI) указывается в skirmishaidata.ini, в строках HeroBuildOrder соответствующих фракций. Например, для героев фракции людей это выглядит так:

Код

    HeroBuildOrder = ElvenGaladriel_RingHero RohanFrodo RohanEowyn RohanEomer GondorBoromir RohanTheoden GondorFaramir GondorAragornMP GondorGandalf

В то же время, юниты для AI прописываются по-иному, через блоки ArmyMemberDefinition. Их мы и будем использовать для героев. Взглянем на блок ArmyMemberDefinition солдат Гондора:

Код

    ArmyMemberDefinition GondorFighterHorde_Member
        Unit            = GondorFighterHorde ;infantry
        PercentageOfArmyPhase1    = 40.0
        PercentageOfArmyPhase2    = 40.0
        PercentageOfArmyPhase3    = 30.0
    End

Разберем на составляющие:
ArmyMemberDefinition — тип блока, остается неизменным.
GondorFighterHorde_Member — название блока, должно быть уникальным; для удобства можно использовать шаблон *НАЗВАНИЕ_ОТРЯДА*_Member.
Unit = GondorFighterHorde — строка с указанием названия объекта отряда; при указании названия объекта надо учитывать регистр букв.
PercentageOfArmyPhase1 = 40.0 — строка с указанием доли отряда в армии AI на фазе 1.
PercentageOfArmyPhase2 = 40.0 — строка с указанием доли отряда в армии AI на фазе 2.
PercentageOfArmyPhase3 = 30.0 — строка с указанием доли отряда в армии AI на фазе 3.
End — окончание блока ArmyMemberDefinition.

Фазы обозначают степень развития AI по ходу матча. На старте действует фаза 1, которая имеет ряд ограничений по возможности постройки зданий и их улучшения, найму юнитов, использования заклинаний и изучения апгрейдов. Спустя некоторое время (условно, 10-15 минут) наступает фаза 2, на которой открывается доступ к некоторым недоступным на фазе 1 возможностям. На фазе 3, которая наступает примерно спустя 30+ минут игры, AI как правило получает доступ ко всем постройкам, юнитам, улучшениям и заклинаниям.

Соответственно, в контексте нашей темы мы можем использовать параметры PercentageOfArmyPhase для регулирования доступа AI к героям в зависимости от степени развития, следовательно и времени.


Практическая часть

Требования: FinalBig | BFME2 или ROTWK

Добавим необходимые блоки ArmyMemberDefinition героям фракции людей. Для этого в файле ini.big открываем data\ini\default\skirmishaidata.ini, находим там ArmyDefinition MenOfTheWestArmy, и до окончания этого раздела вставляем следующий код:

Код

    ArmyMemberDefinition RohanEowyn_Member
        Unit            = RohanEowyn
        PercentageOfArmyPhase1    = 0.01
        PercentageOfArmyPhase2    = 0.01
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition RohanEomer_Member
        Unit            = RohanEomer
        PercentageOfArmyPhase1    = 0.01
        PercentageOfArmyPhase2    = 0.01
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition GondorBoromir_Member
        Unit            = GondorBoromir
        PercentageOfArmyPhase1    = 0.01
        PercentageOfArmyPhase2    = 0.01
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition RohanTheoden_Member
        Unit            = RohanTheoden
        PercentageOfArmyPhase1    = 0.01
        PercentageOfArmyPhase2    = 0.01
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition GondorFaramir_Member
        Unit            = GondorFaramir
        PercentageOfArmyPhase1    = 0.00
        PercentageOfArmyPhase2    = 0.01
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition GondorAragornMP_Member
        Unit            = GondorAragornMP
        PercentageOfArmyPhase1    = 0.00
        PercentageOfArmyPhase2    = 0.00
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition GondorGandalf_Member
        Unit            = GondorGandalf
        PercentageOfArmyPhase1    = 0.00
        PercentageOfArmyPhase2    = 0.00
        PercentageOfArmyPhase3    = 0.01
    End
    ArmyMemberDefinition ElvenGaladriel_RingHero_Member
        Unit            = ElvenGaladriel_RingHero
        PercentageOfArmyPhase1    = 0.00
        PercentageOfArmyPhase2    = 0.00
        PercentageOfArmyPhase3    = 0.01
    End

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

Указывать большие значения в PercentageOfArmyPhase для героев не стоит, так как они представляют собой уникальных юнитов для конкретного игрока. Поэтому я остановился на минимальном значении 0.01. Героев по фазам распределил таким образом, что Эовин, Эомера, Боромира и Теодена AI сможет создать со старта матча; Фарамира — со второй фазы; Арагорна, Гэндальфа и Галадриэль — только начиная с третьей фазы развития. Принцип, думаю, понятен: чем сильнее герой, тем позже его будет нанимать AI.


В заключение

Вот и всё! Теперь AI фракции людей будет активно создавать героев. По аналогии можно прописать такие блоки для любого не призывного юнита любой фракции. Таким незамысловатым способом можно сделать искусственный интеллект злее, а игру против него — интереснее.

Категория: Коддинг | Добавил: (25.01.2020)
Просмотров: 148 | Теги: рохан, Гондор, ИИ, герои | Рейтинг: 4.7/3

Комментарии (0):