Перейти к содержимому
Strategium.ru

Улучшаем поведение ИИ - Легко!


Lazarka

Рекомендованные сообщения

Lazarka

Почему я не могу редактировать тему, вместо этого получаю такое сообщение?

Oops!

Эта публикация больше не может быть изменена. Возможно, она была перемещена или удалена, или прошло слишком много времени с момента её публикации.
 
Ответьте в личку пожалуйста или исправьте это, спасибо.

Lazarka

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

Спойлер

#----------------------------------------------------------------------------------------------
ai_diplo_strategy_bai_1_fra = { # также по аналогии, с админ стратегией, придумываем своё оригинальное название
    icon = "gfx/interface/icons/ai_strategy_icons/maintain_power_balance.dds" # выбираем картинку, которая будет отображаться в профиле страны, когда эта стратегия активна  
    type = diplomatic # и тип, к какому виду стратегий, принадлежит эта стратегия
    undesirable_infamy_level = { value = 25 } # Бэдбой, ИИ будет стараться не превышать этот уровень бэдбоя, только если у него не появится очень веская причина для этого
    unacceptable_infamy_level = { value = 50 } # Бэдбой, ИИ никогда не превысит этот уровень бэдбоя, ни при каких обстоятельствах.
    ideological_opinion_effect_mult = { value = 1.00 }  # желании ИИ дружить со странами, у которых такая же форма правления и схожие законы. 0.0 если мы не хотим этой зависимости     
    diplomatic_play_neutrality = { value = 50 } # желание ИИ оставаться нейтральным в дипломатических играх других стран.
    diplomatic_play_boldness = {

       value = 2  # смелость в дипломатических играх, будет ли ИИ сдаваться если испытывает страх или чувствует себя слабее, или нет.

       # как и во всех других настройках, здесь можно задать условие, под конкретную страну

       # например по умолчанию значение 2, но если это Тайвань, в дипломатической игре против Китая, мы можем прописать чтобы Тайвань не сдавался, несмотря ни на что.

        if = { #Taiping should never surrender against China.
            limit = {
                exists = c:TPG # тэг Тайваня (тэг страны можно увидеть если навести на неё мышкой, в режим разработчика)
                THIS = c:TPG
                exists = c:CHI
                is_diplomatic_play_enemy_of = c:CHI # тэг Китая
            }
            add = 1000 # добавляем 1000 к смелости Тайваня в игре против Китая
        }

    } 
    # Безрассудство - умножает оценку ИИ своей силы, поэтому при уровне безрассудства 2 он считает, что его силы вдвое сильнее, чем они есть на самом деле. 

    # Чтобы ИИ не боялся начинать дипло игру, из соображений рациональности, и был уверен в том что он сильнее, боятся нечего, можно нападать.  
    recklessness = {

       value = 0.25

       if = { limit = { exists = c:FRA THIS = c:FRA scope:target_country = { c:TUN = this } } add = 100 }
       if = { limit = { exists = c:FRA THIS = c:FRA scope:target_country = { c:TUR = this } } add = 100 }

       # выше прописано, чтобы Франция считала себя гораздо сильнее Турции и не боялась нападать на Тунис, который под протекторатом Турции

    }    
    # Агрессия. Насколько вероятно, что ИИ начнет дипломатическую игру против другой страны, если их отношения позволяют сделать это.
    aggression = {

        value = -50

        if = { limit = { exists = c:GBR scope:target_country = { c:GBR = this } } add = -50000 } # Отрицательное значение - ни при каких обстоятельствах не нападать на Великобританию
        if = { limit = { exists = c:TUN scope:target_country = { c:TUN = this } } add = 5000 } # Быть более агрессивным по отношению к Тунису

    }    

 

    # Сколько маневров мы можем использовать на начальном этапе, чтобы добавить больше военных целей?
    # (значения ниже 0 или выше 1 не имеют дальнейшего эффекта)
    wargoal_maneuvers_fraction = {
        value = 0.35
        # ниже написано что надо быть скромнее, если ранг вражеской страны, превышает ранг нашей страны
        if = {  limit = { scope:enemy_country.country_rank > country_rank  }  add = -0.1 }

 

        # ниже: если у США есть задание "Manifest a lot of Destiny", то надо стараться забрать у Мексики все штаты указанные в этом списке.
        if = {
            limit = {
                has_journal_entry = je_manifest_destiny_mexico
                scope:enemy_country = {
                    any_scope_state = {
                        OR = {
                            state_region = s:STATE_CALIFORNIA
                            state_region = s:STATE_NEVADA
                            state_region = s:STATE_UTAH
                            state_region = s:STATE_ARIZONA
                            state_region = s:STATE_NEW_MEXICO
                            state_region = s:STATE_TEXAS
                        }
                    }
                }
            }
            add = 0.25
        }

    }  


    # Что именно должен желать ИИ, по отношению к другим странам: захватить область, аннексировать всю страну или сделать доминионом
    wargoal_weights = {
        conquer_state = 0.0
        make_puppet = 0.0
        make_dominion = 0.0
        make_vassal = 0.0
        annex_country = 1.0
    }    
    # Насколько важно, чтобы ИИ сохранял интерес к конкретному стратегическому региону

    # (добавляется поверх значений региона, установленных в defines)
    strategic_region_scores = {

        # положительное значение, если мы хотим что бы ИИ постоянно держал активным интерес в заданном регионе.

        # и отрицательное значение, если мы хотим чтобы ИИ не имел никаких интересов в заданном регионе.

        #  полный список названий стратегических регионов можно найти в \common\strategic_regions
        region_pacific_coast = { add = 1000 }            
        region_great_plains = { add = 1000 }            
        region_dixie = { add = 1000 }                
        region_the_midwest = { add = 1000 }                    
    }    
    # Здесь задаем колониальный интерес к определенным областям.   
    colonial_interest_ratio = {
        value = -0.5 #например, по умолчанию, колониальный интерес отрицательный, ко всем областям

        # но если мы хотим, чтобы США колонизировали свои области в Америке и не лезли колонизировать ничего в Африке или где то еще

        # то конкретно повышаем интерес США к заданным областям
        if = { limit = { scope:target_country = { any_scope_state = { bai_usa_colonization_states = yes } } } add = 1.0 }    
        if = { limit = { scope:target_state = { bai_usa_colonization_states = yes } } add = 1.0 }     

        # чтобы Франция не лезла в Южную Африку или Конго, а колонизировал только Сенигал и Нигер, то мы тоже это всё можем задать явно

        if = { limit = { scope:target_country = { any_scope_state = { OR = { region = sr:region_congo region = sr:region_zanj region = sr:region_southern_africa } } } } add = -0.5 }
    }
    

    # ниже, также как и в админ стратегии, прописываем к какой стране и при каких условиях, может применятся данная стратегия
    possible = { exists = c:USA THIS = c:USA  }
    weight = {
        value = -100
        if = { limit = { exists = c:USA THIS = c:USA has_strategy = ai_diplo_strategy_bai_1_usa } add = 5000 }    
    }    
}
#----------------------------------------------------------------------------------------------

 

Некоторые дипломатические действия, всё же легче активировать через ивенты.

Например, чтобы ровно в 1846 году США начали войну против Мексики и потребовали все штаты, которые мы укажем ниже.

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

Спойлер

В самом начале, (позже покажу где) мы запускаем ивент, который должен активироваться через 10 лет, это как раз будет 1846 год

trigger_event = { id = bai_1_strategy_diplomatic.2 years = 10 } #Start war with Mexico in 1846

 

И вот сам ивент:

namespace = bai_1_strategy_diplomatic

###------------------------------------------------------------------------------------------
bai_1_strategy_diplomatic.2 = { # --- 1846 ---- WAR WITH MEXICO
    type = country_event
    hidden = yes
    immediate = {
        if = {
            limit = { # тут делаем необходимые проверки:
                exists = c:MEX # что Мексика существует
                c:MEX = { is_subject = no is_player = no }  # что Мексика управляется ИИ, а не игроком 
                exists = s:STATE_ARIZONA.region_state:MEX # и что штат Аризона принадлежит сейчас Мексике
            }
            c:USA = {
                create_diplomatic_play = { # начинаем дипломатическую игру, от имени США
                    type = dp_return_state # тип дипломатической игры, возврат области(это если есть клайм), а если нет клайма, то завоевание области
                    target_state = s:STATE_ARIZONA.region_state:MEX # требуем вернуть себе Аризону

                    # и дополнительные цели войны, где требуем все остальные нужные нам Штаты

                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_TEXAS.region_state:MEX }
                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_CALIFORNIA.region_state:MEX }
                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_NEVADA.region_state:MEX }
                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_UTAH.region_state:MEX }
                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_NEW_MEXICO.region_state:MEX }
                    add_war_goal = { holder = c:USA type = return_state target_state = s:STATE_COLORADO.region_state:MEX }
                    # а это ответная цель, со стороны Мексики, где они требуют возврат Техаса
                    add_war_goal = { holder = c:TEX type = return_state target_state = s:STATE_TEXAS.region_state:USA }

                   

                    # полный список названий дипломатичес игр, можно посмотреть здесь: common\diplomatic_plays
                }                    
            }        
        }        
    }
}
###------------------------------------------------------------------------------------------

 

Такие дипломатические действия, как: улучшить отношения, предложить/принять торговое соглашение, оборонительный союз и все похожие действия, которые мы делаем через взаимодействие со страной, эти вещи настраиваются для ИИ в папке common\diplomatic_actions. Здесь можно прописать вероятность того что ИИ предложит торговое соглашение, примет или откажется, в случае предложения от другой страны. Страны и модификаторы можно задавать явно. Позже приведу пример как это делать.

 

p.s. позже когда у меня будет возможность редактировать свои посты, я добавлю это к первому посту.


Lazarka

Осталась еще политическая стратегия - как заставить ИИ принимать правильные законы.

Плюс, заключение, как всё правильно организовать, для создания мода по ИИ.

Затем скину файлы собственного мода, он не завершен, но даже если бы я создавал мод с нуля, то постоянно бы подглядывал в эти свои файлы.

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

Сделаю это после 27 октября, когда с моего аккаунта снимут ограничения. Ну и добавило бы мотивации, если кто то скажет что ему эта тема как то интересна.


Херсонський Кавун

Как заставить ИИ отступать в войнах при максимальном страхе? Ладно там, когда полное завоевание страны..но в других случаях...


Lazarka
3 часа назад, Херсонський Кавун сказал:

Как заставить ИИ отступать в войнах при максимальном страхе? Ладно там, когда полное завоевание страны..но в других случаях...

Diplomatic play boldness, открой под спойлером, дипломатическая стратегия, там об этом пишу.


Lazarka

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


Vana332228

Блин(. Тоже хотел сделать мод, но ты перестал дополнять(. Очень жаль


KovAlexey
(изменено)

Да почему? Лишним бы не было.

Материала очень мало, хороший бы гайд не помешал, как вообще писать "скрипты" (если это вообще ими можно назвать) под этот движок, искать модификаторы и тд

У меня с наскока не вышло по крайней мере, несмотря на опыт в нескольких языках

Изменено пользователем KovAlexey

Lazarka

Добро, закончу на днях, как будет время.


Тимстер Липкенс
В 01.11.2023 в 23:23, Lazarka сказал:

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

 

Чувак, ты остановился буквально на самой интересной политической части)


Присоединиться к обсуждению

Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Ваша ссылка автоматически преображена.   Отображать как простую ссылку

×   Предыдущее содержимое было восстановлено..   Очистить текст в редакторе

×   Вы не можете вставлять картинки напрямую. Загрузите или вставьте их через URL.

  • Ответы 10
  • Создано
  • Последний ответ
  • Просмотры 1935

Лучшие авторы в этой теме

  • Lazarka

    7

  • Тимстер Липкенс

    1

  • KovAlexey

    1

  • Херсонський Кавун

    1

  • Vana332228

    1

Лучшие авторы в этой теме

Популярные сообщения

Lazarka

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

Lazarka

Добро, закончу на днях, как будет время.

Lazarka

Ниже под спойлером, рассмотрим как настроить дипломатическую стратегию, а именно, насколько агрессивно, рационально или нейтрально, ИИ выбранной страны, будет вести себя по отношению к другим странам.

Lazarka

Осталась еще политическая стратегия - как заставить ИИ принимать правильные законы. Плюс, заключение, как всё правильно организовать, для создания мода по ИИ. Затем скину файлы собственного

Lazarka

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

KovAlexey

Да почему? Лишним бы не было. Материала очень мало, хороший бы гайд не помешал, как вообще писать "скрипты" (если это вообще ими можно назвать) под этот движок, искать модификаторы и тд У ме

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу
  • Модераторы онлайн

    • alexis
×
×
  • Создать...