Информационные темы по Hearts of Iron IV (День Победы IV):
Привет всем!
Дневник на этой неделе на тему, которую вы ждали очень долго - на тему искусственного интеллекта!
"Поле смехотворно завышенных ожиданий и невероятно низкого исполнения" - Wiz.
Я был единственным, кто был достаточно безумен, чтобы взяться за ИИ в HoI IV. Когда Wiz'а перебросили на другие проекты, я возглавил разработку ИИ больше года назад, и, хотя эта была самая трудная работа из того, чем я занимался за всю свою жизнь, она также была весёлой и полезной.
Итак, давайте окунёмся в это?
У нас сразу было две БОЛЬШИХ проблемы:
1.Поддержание правдоподобного историчного поведения в динамичной игре-песочнице.
2.Сделать автоматизированное выполнение созданных игроком баттлпланов достаточно надёжным и правильным, чтобы игрок чувствовал, что это полезно.
Для решения этих вопросов нам пришлось пролить немало пота, крови и слёз.
По поводу первой проблемы. Пара нюансов отделяет HoI от других тайтлов Paradox. Прежде всего, хронологическая компактность и современность игры означают то, что люди ожидают, то что ИИ в HoI будет действовать более-менее исторически. Хотя HoI IV является песочницей в гораздо большей степени, чем предыдущие игры серии, много в игре остаётся историчным и у многих стран были те или иные причины действовать в определённых ситуациях именно так или иначе.
Здесь нужно сделать так, чтобы ИИ мог обрабатывать ситуации динамически, так, чтобы его решения имели смысл, без разницы, исторические они или нет.
Наше решение этой проблемы - динамический ИИ в основе, с игровыми механиками, толкающими страну в определённом направлении, причём как страну игрока, так и страну, управляемую ИИ. Основная механика для этого - конечно же, национальные фокусы, которые были подробно рассмотрены в предыдущих дневниках. Они направляют игрока и ИИ к различным целям, как до, так и в ходе мировой войны, которая в конечном итоге случается. Но как делает свой выбор фокуса ИИ? Этот выбор может происходить строго по сценарию для каждой страны в режиме с историческими фокусами. Исторический режим может полностью модифицироваться. Если исторический режим НЕ активен, ИИ выбирает фокусы с использованием скриптованных шансов и динамических систем, которые смотрят на реальную ситуацию страны.
Эта динамическая система со скриптованными шансами - основа всего ИИ. Кроме этого, более 200 настраиваемых определителей (defines) определяют различные аспекты динамического поведения ИИ, скриптованные шансы же могут быть переделаны с помощью системы моддинга, описанной в дневника о моддинге. В общем, нет практически ни одного аспекта ИИ, который нельзя изменить через определители, скриптованные шансы или и то и другое.
Например желание Австрии согласиться с аншлюсом будет выглядеть так:
ai_chance = {
base = 30
modifier = {
add = -25
GER = { has_army_size = { size < 20 } }
}
modifier = {
factor = 10
GER = { has_army_size = { size > 19 } }
}
}
Если они откажутся, отношение Германии к ним может измениться так:
anschluss_rejected = {
# Conditions
enable = {
tag = GER
has_completed_focus = GER_anschluss
country_exists = AUS
}
abort = {
NOT = {
country_exists = AUS
}
}
# Modification if strategy is enabled
ai_strategy = {
type = antagonize
id = "AUS"
value = 300
}
}
Чтобы придать странам в поведении ещё больше особенностей, есть способ изменить такие вещи, как отношение к другим странам с помощью.. ну, назовём это модификаторами. Эти модификаторы могут быть прикреплены к министрам, законам и даже лидерам. Это означает, что в зависимости от того, кто отвечает за страну, отношения её с другими странами будут меняться ещё и по этой, личной причине, а не только из-за идеологий. Это то, что я хочу расширить ещё больше в будущем, но возможности моддинга здесь уже ощутимы.
Такой трейт может выглядеть так:
warrior_code = {
random = no
ai_call_ally_desire_factor = -40
}
Или так:
warmonger = {
random = no
ai_focus_aggressive_factor = 0.5
}
Ещё одна область, которая даёт дополнительную свободу мододелам - это создание шаблонов дивизий. Вы можете настроить нужные шаблоны, а также приоритеты создания дивизий по тем или другим шаблонам для каждой страны. ИИ сможет даже создать новый шаблон дивизии, если у страны имеется экипировка, которая не требуется ни одному из имеющихся шаблонов.
Другая интересная система - как ИИ оценивает предложения на мирных конференциях. Мирные договора могут быть полностью заскриптованы, если вы это захотите сделать. Большое спасибо Groogy за это!
Второй важной проблемой было сделать выполнение нарисованных игроком баттлпланов настолько качественным, чтобы составление баттлпланов было реально полезно. Всякий раз, когда вы отдаёте управление войсками компьютеры, вы обнажаете все слабые стороны системы для оппонента. Если вы играете против ИИ, вы вполне можете выиграть, но игра таким образом против игрока приведёт к разочарованию.
Решение этой проблемы в основном дизайнерское: система баттлпланов не создана как волшебная кнопка "выиграть войну". Скорее это инструмент для организации большого числа юнитов, где ни один из них не имеет решающего значения. И ИИ и игрок будут наблюдать за критически важными операциями, но они не должны будут думать о рутинных задачах, и таким образом, свободно управлять гораздо бóльшими армиями, чем могли ранее, когда требовалось непосредственное управление на микроуровне. Это означает, что механики, с помощью которых ИИ обрабатывает юниты, требуют меньше наворотов и в ходе игры не будут происходить сумасшедшие вещи. Тем не менее, мы сделали ИИ баттлпланов настолько сложным, насколько это полезно.
Давайте заглянем "под капот" ИИ.
В данный момент Германия только что вступила в войну против Польши. Эта подсказка говорит нам об общем, долгосрочном отношении страны к другим государствам. Германия, как видно, плохо смотрит на своих демократических соседей, благосклонно относясь к участникам своей фашистской фракции.
Тем временем, Нидерландам жарковато.
Им угрожает Германия и поэтому они хотят либо видеть её ослабленной, либо быть её другом, но не хотят открытого противостояния, ибо рискуют быть разбитыми.
Более детальное рассмотрение отношения Англии к Нидерландам показывает нам, что англичане хотят защитить маленькую демократическую страну в Западной Европе.
Но как только Англия вступила в войну против Германии, Нидерланды не захотели присоединиться к Союзникам, осознавая риск поражения и оккупации немцами.
И наконец, я хочу показать вам, как ИИ определяет численность войск при постройке. Имейте в виду, что войска делятся на разные виды и определённые виды войск могут заказываться в меньших количествах, чем хочет ИИ или это необходимо, если другой вид войск имеет более высокий приоритет.
Какие именно виды войск в конечном итоге будут производиться и в каком порядке - тоже определяется динамически, но у меня нет крутого скриншота для иллюстрации этого.
Я бы сказал, что момент гордости для каждого разработчика ИИ - когда собственное творение побеждает их неожиданным образом. Для меня такой момент наступил недели две назад, когда я играл в одиночную игру за Германию. Я легко взял Западную Европу за счёт тщательного планирования и хорошего вооружения. Желая выбить Англию, прежде чем смотреть на Восток, я прикрыл побережье, а также восточную границу, после чего занялся наращиванием сил для военно-морского вторжения на Британские острова. Именно тогда Англия и США ВМЕСТЕ прорвали итальянскую и испанскую береговую оборону и создали солидный плацдарм. Я отправил войска поддержать моих союзников, но англичане и американцы уже высадили войск больше, чем могли сдержать испанцы и итальянцы даже вместе с моими подкреплениями. Я вероятно мог бы победить одну из этих стран, но не смог разгромить столь большие силы в Южной Европе.
Не считая этого, мои лучшие дни - это когда Da9I приходит и говорит мне, что ИИ крепко дал ему по заднице или просто заставил его изменить свои планы.
Несколько важных моментов:
*Там нет жёсткой запрограммированности. Всё в редактируемых скриптах. Нигде в коде не говорится "если страна X, то она должна сделать Y" или что-то подобное.
*Динамический ИИ не читерит. Он использует ту же самую информацию, что доступна и игроку, включая оценку сил противника на основе данных разведки.
*Кроме повышения популярности партии, в игре нет возможности, которую ИИ полностью запрещено использовать. Функция повышения популярности предназначена для того, чтобы игроки могли делать "песочницу". Кроме того, мы должны ограничить число заговоров и переворотов.
Дополнительный респект Wiz'u, который является шефом по ИИ, который следит, чтобы я ничего не испортил и Groogy, который помогает, когда нагрузка становится непосильной для одного меня.
Я также хочу поблагодарить всех замечательных бета-тестеров, которые предоставили тонны ценных замечаний и помощи!
В заключение я хочу сказать, что хотя никто не может надеяться увидеть в HoI IV лучший игровой ИИ из возможных, нам в Paradox нравится, как всё складывается и я действительно надеюсь, что вы будете наслаждаться игрой также, как и я и даже больше, так как мне приходилось и работать и играть.
Источник -
Для просмотра ссылки Зарегистрируйтесь