Изначально её боевой интеллект был составлен из логических веток-автоматов вида: если происходит А, то делай Б. Так, например, работали блок и увороты. "Если враг атакует, то либо блокируй, либо отскакивай". Данная логика была прикреплена знанием: она "видела" анимацию атаки противника: сколько длится анимация, на каком кадре наносится урон, также видела список сообщении атак противника. В итого её практически невозможно было ранить, она уворачивалась от всего и блокировала абсолютно всё. А прогрессия планировалась введением искусственной паузы и задержки на время её реакции, которое бы уменьшалась по мере роста уровней. Но сейчас, я отказался от этой "нечестной" схемы. Теперь у нее есть блок обучения, опыт, через который она учится и запоминает отдельно каждого противника. То есть чтобы эффективно с кем-то сражаться ей придётся получать "люлей" от этого противника, пока она методом проб и ошибок не выявит приблизительный паттерн эффективного сражения с конкретно этим противником. Также маневры такие как отскок, кувырок, упреждение и т.д. тоже внедрены как варианты на выбор в её блок обучения, она также будет пробовать те или иные движения и в её памяти они будут получать очки эффективности, так она будет на глазах у игрока составлять рисунок боя, подходящий под конкретного противника. В целом, задача по возможности максимально отказаться от заранее прописанных логических веток и дать ей возможность самой выбирать, что делать, а именно выбор вариантов, где каждый имеет статистику удач/неудач, и в данный конкретный момент будет выигрывать вариант с наилучшей статистикой. Ядром её интеллекта будет служить Utility AI - это тот же механизм, завязанный на выбор из доступных вариантов действии, где каждый вариант имеет свой "вес", который в реальном времени получает плюс или минус очки, в зависимости от ситуации и чтения доступных параметров окружения и происходящего. Так, например, при низком ХП вариант сражаться имеет малый вес и она начнёт убегать или кайтить врага. Если в бою герой отошел далеко, то вариант следовать за героем получает тем больше очков, чем дальше отдаляется герой и в конце концов перевесит вариант сражаться. Таким образом её боевая эффективность будет зависит только от того насколько много она сражалась и выживала, боевой опыт будет именно опытом и не будет зависеть от статов или уровней. И сейчас основная сложность состоит в подборе конкретных значений прироста или уменьшения очков в вариантах Utility AI, а также в постройке правильной архитектуры модуля обучения, чтобы статистика набиралась правильно и не "шумела" от рандомных событий и обучение не смазывалось, чтобы не получилась полная каша входящих параметров, где сложно определить что и на что повлияло и невозможно замерить эффективность конкретных действии или решении. Как-то так.