Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Улучшение ИИ

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Улучшение ИИ

Сообщение AlexSpl » 03 май 2020, 20:34

2Ben80: the_strongest_spell_efficiency_delta - это разница между эффективностью самого сильного заклинания после получения вторичного навыка и до его получения. Самое сильное заклинание после и до получения навыка, естественно, может быть не одним и тем же. Кроме того, необходимо учитывать тот факт, что расчёт итогового Value ведётся после повышения первичных навыков.

Пример расчёта для Wisdom.

Герой 0-0-1-10 (Max_Mana_Points = 100) с 50 кентаврами без артефактов и вторичного навыка Sorcery/специализации по Sorcery имеет в книге одно-единственное заклинание Magic Arrow. Найдём the_strongest_spell_efficiency_delta при условии, что герой не повышает Spell Power на левел-апе:

Для Spell_Power = 1:

spell_efficiency = [Army_Power * min(k1, k2)]

k = 10 * (Spell_Power + Effective_Magic_School_Level) * Spell_AI_Value * Elemental_Orbs_Mod * Sorcery_Mod / Army_Power
k = 10 * (1 + 0) * 10 * 1.0 * 1.0 / 5000 = 0.02

k1 = k * ScaleFactor(min(13, [Max_Mana_Points / Spell_Mana_Cost]))
[Max_Mana_Points / Spell_Mana_Cost] = [100 / 5] = 20, поэтому
k1 = 0.02 * 4.53 = 0.0906

k2 = 4.530 * k, for k < 0.025.
k2 = 4.530 * 0.02 = 0.0906

min(0.0906, 0.0906) = 0.0906

spell_efficiency = [5000 * 0.0906] = 453

Для Spell_Power = 2:

spell_efficiency = [Army_Power * min(k1, k2)]

k = 10 * (Spell_Power + Effective_Magic_School_Level) * Spell_AI_Value * Elemental_Orbs_Mod * Sorcery_Mod / Army_Power

k = 10 * (2 + 0) * 10 * 1.0 * 1.0 / 5000 = 0.04

k1 = k * ScaleFactor(min(13, [Max_Mana_Points / Spell_Mana_Cost]))
[Max_Mana_Points / Spell_Mana_Cost] = [100 / 5] = 20, поэтому
k1 = 0.04 * 4.53 = 0.1812

k2 = 3.947 * k + 0.016, for 0.032 <= k < 0.041;
k2 = 3.947 * 0.04 + 0.016 = 0.17388

min(0.1812, 0.17388) = 0.17388

spell_efficiency = [5000 * 0.17388] = 869

the_strongest_spell_efficiency_delta = 869 - 453 = 416

Value(Wisdom) = [the_strongest_spell_efficiency_delta * Spell_Power * 1/2] = [416 * 1 * 1/2] = 208.

Проверяем отладчиком. Всё сходится.

Если герой повышает Spell Power на левел-апе, результат будет Value(Wisdom) = [the_strongest_spell_efficiency_delta * Spell_Power * 1/2] = [416 * 2 * 1/2] = 416.

Я, конечно, не застрахован от ошибок. Если остался пример неправильного расчёта, я обязательно посмотрю, в чём там дело.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Улучшение ИИ

Сообщение Ben80 » 04 май 2020, 03:30

Я просто сравниваю значения-веса для различных втор. навыков на одном и том же левел-апе. Ведь независимо от the_strongest_spell_efficiency_delta соотношение должно быть постоянным (раз состояние героя одно и то же, и вес линейно зависит от the_strongest_spell_efficiency_delta).

1) В статье соотношение весов для Грамотности и Волшебства 4:1. В реальности 2:1

2) Имеем героя только с Magic Arrow. Смотрим вес для получения магии любой стихии. Для прикола убираем зависимость мана-кост от уровня стихии (ставим везде 5 маны). Тогда по идее the_strongest_spell_efficiency_delta3 должна быть нулевая. А она совсем ненулевая.
***
А, ну да, там же в формуле еще "Effective_Magic_School_Level" фигурирует. Но вопрос по Грамотности и Волшебству остается.
Последний раз редактировалось Ben80 04 май 2020, 04:33, всего редактировалось 3 раз(а).
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Улучшение ИИ

Сообщение Ben80 » 04 май 2020, 03:40

Еще такой вопрос. Общая формула для заклинаний такая:
Код: Выделить всё
Эф = Army_Power * Spell_AI_Value * k

Далее в формуле для расчета k для Воскрешения видим, что нет такого множителя как Spell_AI_Value (и не удивляемся этому). А вот в формуле для Магич. Стрелы - видим (для k3). Не лишнее ли оно там ? Скорее даже не там лишнее, а, возможно для Магич.Стрелы тогда из общей формулы должно уйти Spell_AI_Value (и остаться Эф = Army_Power * k)

***

Посмотрел повнимательнее ваш пост выше. Да, похоже мое предположение правильное. Значит, в статье описка. В Физмиговской статье ! А у вас то в оригинале тут все правильно было изначально, так получается.
Последний раз редактировалось Ben80 04 май 2020, 04:01, всего редактировалось 3 раз(а).
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Улучшение ИИ

Сообщение Ben80 » 04 май 2020, 03:48

И вот еще, по расчету эффективности для бафов-дебафов.

Цитата:
- Для массовых заклинаний формула эффективности аналогична, но MN всегда равно общему количеству отрядов у героя.


То есть для заклинаний, которые становятся массовыми на эксперте, это тоже справедливо, видимо. А далее идут примеры, последний - как раз для массового благословения. И там почему-то MN для Героя № 2 равно 2. А должно быть равно 3, по идее.

И опять же, получается, что это Физмиговская ошибка. Опять приходится к оригиналу на HC обращаться :smile1:
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Улучшение ИИ

Сообщение Ben80 » 04 май 2020, 04:52

Продолжаем разбирать статью под микроскопом ))
Цитата:
AI doesn't use the following spells: Scuttle Boat, Visions, View Earth, Disguise, View Air, Quicksand, Land Mine, Force Field, Fire Wall, Sacrifice, Forgetfulness, Remove Obstacle


Не совсем верно. Sacrifice и Forgetfulness ИИ вполне использует (вот в Физмиге тут как раз правильно написано). Но при оценке цены свитков, втор.навыков и тд эффективность действительно 0.

Исправляется просто - добавляем нужные флаги для заклинаний. Sacrifice отправляем в ту же AI группу, где Воскрешение, а Forgetfulness - где баффы-дебаффы. Проверил, хорошо работает (нужно, конечно, еще и AI_Value изменить)

Код: Выделить всё
o_Spell[SPL_SACRIFICE].flags |= 0x80000;

o_Spell[SPL_SACRIFICE].ai_value[0] = 60;
o_Spell[SPL_SACRIFICE].ai_value[1] = 60;
o_Spell[SPL_SACRIFICE].ai_value[2] = 80;
o_Spell[SPL_SACRIFICE].ai_value[3] = 120;

o_Spell[SPL_FORGETFULNESS].flags |= 0x40000;

o_Spell[SPL_FORGETFULNESS].ai_value[0] = 5;
o_Spell[SPL_FORGETFULNESS].ai_value[1] = 5;
o_Spell[SPL_FORGETFULNESS].ai_value[2] = 10;
o_Spell[SPL_FORGETFULNESS].ai_value[3] = 10;


Для Forgetfullness еще один флаг можно добавить, для фикса бага с действием на Продвинутом уровне (igrik как-то писал об этом):
Код: Выделить всё
o_Spell[SPL_FORGETFULNESS].flags |= 0x40;
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Улучшение ИИ

Сообщение Ben80 » 04 май 2020, 05:06

Баг с эффективностью Грома Титана равным 1 легко поправить, отняв один из флагов:
Код: Выделить всё
o_Spell[SPL_TITANS_LIGHTNING_BOLT].flags &= 0xFFEFFFFF;


Эффективность в этом случае расчитывается как положено, но соответствующий арт на карте ИИ герой все равно подбирать не хочет. Я не стал докапываться, почему :smile1:
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 04 май 2020, 05:53

Цитата:
Если посмотреть непредвзято, что плохого в том, что наряду с 2 настоящими игроками по карте будут бегать (а также развивать свое хозяйство и строить коварные планы) довольно опасные субъекты ? Я вижу только повышение разнообразия и интересности.

Здесь главная проблема в том, что если сделать изменения, которые не сильно повлияют на ИИ, то собственно, в чем тогда смысл?
Если же наоборот, получится значительно усилить ИИ, то на большинстве шаблонов у игрока просто не останется шансов на хоть какую-то раскрутку.
Вся игра сведется к боданию с соседними компами и до встречи с соперником дело даже не дойдет.
Очень часто в Соде и без сильного ИИ весьма непросто раскрутиться.
Естественно, это мнение через призму текущей "про-сетевой" игры.

Возможно существует какой-то промежуточный вариант.
Как раз на новом шаблоне это можно проверить.
Собственно если сделать грамотную прокачку ИИ, грамотный выбор героев в таверне, увеличить число покупаемых героев, AI_ManaSaving и правки с осадой и нападением в городе.
Получится уже что-то на что интересно посмотреть в деле.
Еще бы найти таблицy/функцию приритетов по взятию объектов.
Последний раз редактировалось as239 04 май 2020, 06:11, всего редактировалось 1 раз.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 04 май 2020, 05:59

Есть еще вопросы:
1. BattleAI работает только с нейтралами или в битве с героем ИИ тоже?
Если да, как сделать чтобы с нейтралами он не работал с ИИ работал.
2. Может быть несложно научить ИИ разгоняться в городе.
Т.е. если он "ночует" в городе, то должен оставаться на самом быстром отряде, а остальное войско убираться в форт.
3. Известна ли функция расстановки ИИ перед боем, в ней можно было сделать правильную расстановку при взятии банков - склепов, гномников и т.д.?
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 04 май 2020, 06:00

Ben80 писал(а):

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

Да интересно услышать.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 04 май 2020, 06:00

Цитата:
Но лучше прописать жёсткий выбор на левел-апе компа.

Это наилучший вариант, а что это за функция?
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8