Wake of Gods Forum | Форум Во Имя Богов
Методика расчёта значений Fight/AI Value существ - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Библиотека по моддингу (/forumdisplay.php?fid=186)
+--- Thread: Методика расчёта значений Fight/AI Value существ (/showthread.php?tid=4474)


Методика расчёта значений Fight/AI Value существ - MOP - 09.09.2009 17:19

По какому алгоритму рассчитывают Ai Value и Fight Value?
P.S. Убил бы того, кто дал этим характеристикам такие невнятные, подменяющие друг друга названия. Постоянно забываю, что есть что. Можете напомнить ещё раз.


RE: Обсуждение - обо всём - Efrit - 09.09.2009 17:51

MOP, походу никакого алгоритма нету - это просто результаты рейтингового тестирования существ...


RE: Обсуждение - обо всём - MOP - 09.09.2009 18:26

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


RE: Обсуждение - обо всём - Efrit - 09.09.2009 18:41

Так я же и не говорил, что они ставились от балды. Люди смотрели силу существа и в зависимости от неё выставляли рейтинг для этих значений...


RE: Обсуждение - обо всём - Ivor - 10.09.2009 18:49

(09.09.2009 17:19)MOP Wrote:  По какому алгоритму рассчитывают Ai Value и Fight Value?
P.S. Убил бы того, кто дал этим характеристикам такие невнятные, подменяющие друг друга названия. Постоянно забываю, что есть что. Можете напомнить ещё раз.
Не знаю, по какому алгоритму, но
c:\NewEraOfHeroes\Era Софт\MonsterPower\MonsterPower 2B.exe
умеет их рассчитывать


RE: Обсуждение - обо всём - Efrit - 11.09.2009 09:40

Ivor, там вроде бы просто функция, зависящая от параметров каждого существа, только и всего. А настоящие значения этих величин можно определить только долгой серий боёв-тестов...


RE: Обсуждение - обо всём - Ivor - 11.09.2009 10:50

(11.09.2009 09:40)Efrit Wrote:  Ivor, там вроде бы просто функция, зависящая от параметров каждого существа, только и всего. А настоящие значения этих величин можно определить только долгой серий боёв-тестов...
Сильно подозреваю, что эти параметры и есть некие интегральные параметры, функция от боевых параметров юнита.

Если результат работы этой утилиты соответствует существующим значениям, то так оно и есть


RE: Обсуждение - обо всём - Efrit - 11.09.2009 13:05

Да нет же, не существует никакой функции. Я в своё время даже специально пытался восстановить интерполяционный многочлен по значениям Ai Value и Fight Value для неулучшенных существ 4 уровня (так как большинство из них без спецсвойств) - он не восстанавливается. Это как раз и доказывает, что эти параметры - НЕ значения каких-либо функций, а именно что результаты серии тестовых боёв.

Да это и так видно - например, у Арбалетчика (неулучшенного) и Ящера (тоже неул.) эти параметры полностью совпадают, хотя у Ящера все навыки как минимум не хуже, чем у Арбалетчиков - а некоторые просто лучше. Значит, либо просто Арбалетчикам в тестовых боях везло (или на траве тестили Sm ), либо им эти значения "от балды" выставили. А вот уже у улучшенных Арбалетчиков AI Value в 1.6 раза выше, хотя из их навыков улучшается лишь скорость (+2). А всё потому, что они теперь атакуют дважды - а значит, и особые свойства тоже учитывались, чего ни одна функция сделать не может.


RE: Обсуждение - обо всём - Ivor - 11.09.2009 14:45

(11.09.2009 13:05)Efrit Wrote:  Да нет же, не существует никакой функции. Я в своё время даже специально пытался восстановить интерполяционный многочлен по значениям Ai Value и Fight Value для неулучшенных существ 4 уровня (так как большинство из них без спецсвойств) - он не восстанавливается. Это как раз и доказывает, что эти параметры - НЕ значения каких-либо функций, а именно что результаты серии тестовых боёв.
так сама утилита выдает похожие на реальность значения?

(11.09.2009 13:05)Efrit Wrote:  Да это и так видно - например, у Арбалетчика (неулучшенного) и Ящера (тоже неул.) эти параметры полностью совпадают, хотя у Ящера все навыки как минимум не хуже, чем у Арбалетчиков - а некоторые просто лучше. Значит, либо просто Арбалетчикам в тестовых боях везло (или на траве тестили Sm ), либо им эти значения "от балды" выставили. А вот уже у улучшенных Арбалетчиков AI Value в 1.6 раза выше, хотя из их навыков улучшается лишь скорость (+2). А всё потому, что они теперь атакуют дважды - а значит, и особые свойства тоже учитывались, чего ни одна функция сделать не может.
Элементарно может. Если функция расчета интегрального параметра выглядит как Аt*k1+Dам*k2+Def*k3 и т.д., то наличие спецсвойств типа двойного выстрела можно учесть в формуле вида *(Аt*k1+Dам*k2)*(1+DoubleShot)+Def*k3, где DoubleShot - получает значение 0 или 1 в зависимости от наличия спецспособности.


RE: Обсуждение - обо всём - Ganymed - 11.09.2009 15:29

В случае с AI value и Fight value нужно сначала определиться, что, собственно, представляет собой юнит, параметры которого задаются. Например, если это юнит 5 уровня, стрелок, не имеющий штрафа в рукопашной, то отталкиваться нужно от параметров близких по характеристикам монстров, в данном случае, монахов и фанатиков. Если юнит N - сильнее их (либо по ТТХ, либо по абилкам), то задаются параметры большие, чем у сравниваемых, если слабее, то меньшие.
Другими словами, нужно отталкиваться от параметров юнита, родственного юниту N по уровню и характеристикам. Это самый верный способ заставить ИИ адекватно реагировать на нового монстра.
В принципе, есть приблизительный алгоритм вычисления данных параметров, причем это можно проверить на большинстве имеющихся монстров:
1. Вычисляется базовая сила монстра (прога Берсеркера), если юнит не имеет абилок, то это значение (с небольшим "плюс-минус") задается в качестве параметра Fight value. Если это даунгрейд, то, как правило, AI value (ценность для ИИ) не сильно отличается от Fight value.
2. Если у юнита есть абилки, то к базовой силе монстра добавляется приблизительно 30% (реже 40%, если юнит очень сильный и по ТТХ и по абилкам), и это значение соответствует Fight value. Если юнит очень ценный, как правило, апгрейд, то к значению Fight value добавляется еще приблизительно 20-40%, и это значение соответствует AI value.
При этом, цена юнита соответствует Fight value, с поправкой, в большинстве случаев, в меньшую сторону.
Расчеты я производил на довольно большом количестве стандартных монстров, так что алгоритм этот можно считать базисом, на котором разработчики игры определяли шкалу параметров Fight value и AI value.
В целом, эта информация больше для ознакомления, так как лучше ориентироваться, как я писал выше, на конкретного монстра (или монстров), близких по параметрам для моделируемого.


RE: Обсуждение - обо всём - Flashback - 11.09.2009 16:09

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


RE: Обсуждение - обо всём - Efrit - 11.09.2009 16:45

Quote:имхо если бы AI и Fight value вычислялись по формуле их бы тупо не вбивали, а вбили бы формулу через которую они бы и вычислялись.

А интересно - если у лучников кончаются стрелы, то городские башни всё равно бьют именно их? Ведь, по логике вещей, их "ценность" должна поменяться...


RE: Обсуждение - обо всём - Berserker - 11.09.2009 21:09

Как я заметил, Fight Value брали по схожим с моим алгоритмом для монстров с абилками, а вот на AI Value накидывали ганимедовы проценты. Видно потому, что абилки - вещь тонкая.


RE: Ваши вопросы по ERM-скриптам - Sav - 10.07.2010 00:46

Если лазурному дракону все параметры сделать 1, как будет играть за него комп: как за существо со слабыми параметрами, или как за существо, идентифицирующееся, как лазурный дракон?
И вообще комп смотрит на параметры существа, или на его номер?


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 00:50

Вроде как ΑΙ Value за это в ответе.


RE: Ваши вопросы по ERM-скриптам - Sav - 10.07.2010 00:56

А он как работает? Для каждого поведения свой? Или чем он больше, тем ценнее для компа существо?


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 01:04

Чем больше, вроде бы. Здесь, правда, любопытная штука: архангелы компу важнее лазурных.


RE: Ваши вопросы по ERM-скриптам - DracoLich - 10.07.2010 01:10

fight value


RE: Ваши вопросы по ERM-скриптам - gamecreator - 10.07.2010 01:12

(10.07.2010 01:04)GhostManSD Wrote:  Здесь, правда, любопытная штука: архангелы компу важнее лазурных.
так может у них AI Value выше.


RE: Ваши вопросы по ERM-скриптам - Sav - 10.07.2010 09:49

То есть когда мы усилим горыныча, нажо будет увеличить и этот fight value? А если из не стрелка сделать стрелка, тоже надо менять fight value?


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 13:13

Менять-то не обязательно. Разве что по смыслу.
А зачем тогда нужен параметр AI Value? Он за что отвечает?
Добавлено:
Вот что глаголит справка по !!MA:
Code:
F#/$
Монстр имеет боевую ценность $ (используется для ИИ)
I#/$
Монстр # имеет ценность $ для ИИ



RE: Ваши вопросы по ERM-скриптам - DracoLich - 10.07.2010 15:52

ценность закупки/стратегической силы и боевая ценность разные вещи


RE: Ваши вопросы по ERM-скриптам - Sav - 10.07.2010 15:57

Так я не понял, комп ориентируется только на эти value, или ещё на другие вещи (такие как возможность стрелять)?

Большое fight value для компа - показатель силы существа, или того, что его надо больше беречь?


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 16:04

Я вот как понял. Если высокий параметр ценности для ИИ, то он поспешит монстра загрести в армию.

Интересно, можно ли заставить ИИ либо трястись возле монстра, либо отважно нападать, едва его увидев?


RE: Ваши вопросы по ERM-скриптам - Efrit - 10.07.2010 16:07

Quote:Большое fight value для компа - показатель силы существа, или того, что его надо больше беречь?
Первое.

Quote:Интересно, можно ли заставить ИИ либо трястись возле монстра, либо отважно нападать, едва его увидев?
Ты про глобальную карту? Тогда ресивера !!AI вполне хватит...


RE: Ваши вопросы по ERM-скриптам - gamecreator - 10.07.2010 23:15

обычно Fight value = AI value, поэтому не стоит ничего мутить и просто поставить равные значения.


RE: Нейтральные драконы - gamecreator - 01.08.2010 23:20

(01.08.2010 14:57)Sav Wrote:  Какие AI Value Fight и Value по умолчанию у ржавого и кристального?

AI Value по-хорошему надо по системе теста Бастиона вычислять.


RE: Нейтральные драконы - Sav - 01.08.2010 23:42

Это как?


RE: Нейтральные драконы - gamecreator - 01.08.2010 23:43

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


RE: Нейтральные драконы - Efrit - 02.08.2010 07:03

Кстати да, надо будет уже рейтинги окончательно досчитать. У меня они были вычислены, но там не учитывался уровень самого тестера (ориентироваться нужно на средний), да и на тот момент ещё далеко не все тестеры отписались...


RE: Нейтральные драконы - gamecreator - 02.08.2010 11:27

если можно эту формулу рассекретить, то подошла бы отлично для внедрения новых существ (конечно, есть Monsters power Берса, но я не уверен, считает ли оно этот параметр или только цену)


RE: Нейтральные драконы - Efrit - 02.08.2010 11:37

Лады, как дома инет снова появится - формулу выложу. Правда, она только под мой метод тестов подходит...


RE: Нейтральные драконы - Sav - 02.08.2010 13:54

А это принципиально, если AI / Fight Value будет на 1-2 меньше / больше?


RE: Нейтральные драконы - gamecreator - 02.08.2010 14:21

на 100-200 - принципиально, может даже на 10-20 принципиально. а ты что, знаешь их AI/Fight Value что говоришь о такой малой погрешности?


RE: Нейтральные драконы - Sav - 02.08.2010 15:13

AI / Fight Value можно получить скриптом. Также их можно посмотреть в программе, которая лежит вместе с ErmScripter-ом и с помощью которой можно изменять монстров.
Я в точности не помню, но там были довольно большие значения.

А поскольку горынычу в любом случае надо менять AI / Fight value, я хочу понять, насколько точным оно должно быть и насколько хорошо или плохо взять среднее значение между ржавым и кристальным.


RE: Нейтральные драконы - gamecreator - 02.08.2010 15:33

очень плохо. AI/Fight Value обозначает боевую ценность юнита.
Добавлено:
(02.08.2010 15:13)Sav Wrote:  AI / Fight Value можно получить скриптом. Также их можно посмотреть в программе, которая лежит вместе с ErmScripter-ом и с помощью которой можно изменять монстров.
Я в точности не помню, но там были довольно большие значения.
они старые


RE: Нейтральные драконы - Sav - 02.08.2010 15:42

Если по силе горыныч будет примерно между кристальным и ржавым драконами, то и AI value должно быть между AI Value кристального и ржавого драконов, нет?

Я, наверное, неправильно понимаю, как "действует" AI Value (мне казалось, что просто чем оно больше, тем более сильным выглядит юнит для ИИ).


RE: Нейтральные драконы - gamecreator - 02.08.2010 18:34

(02.08.2010 15:42)Sav Wrote:  Если по силе горыныч будет примерно между кристальным и ржавым драконами, то и AI value должно быть между AI Value кристального и ржавого драконов, нет?
так кристального и ржавого то изменили. значит и число это для них изменилось.
(02.08.2010 15:42)Sav Wrote:  Я, наверное, неправильно понимаю, как "действует" AI Value (мне казалось, что просто чем оно больше, тем более сильным выглядит юнит для ИИ).
но мы ведь хотим чтобы ИИ адекватно работал с этими существами?


RE: Нейтральные драконы - Sav - 02.08.2010 20:02

Quote:так кристального и ржавого то изменили. значит и число
это для них изменилось.
Ржавого пока не трогали.Sm
Кристального не так уж сильно изменили.

Quote:но мы ведь хотим чтобы ИИ адекватно работал с этими
существами ?
Конечно, хотим. Видимо, придётся подождать, пока Efrit расскажет формулу. Тестить, правда, придётся.Sm


RE: Нейтральные драконы - GhostManSD - 02.08.2010 20:34

Привожу значения Fight Ualue и AI Ualue для горыныча, ржавого и кристального. Узнал через ERM.

Горыныч: Fight - 5272, AI - 5931
Ржавый: Fight - 24030, AI - 26433
Кристальный: Fight - 30260, AI - 39338

Горыныча и впрямь придется весьма и весьма менять в этом плане.


RE: Нейтральные драконы - Sav - 02.08.2010 20:55

Надо заметить, что AI Value у всех трёх драконов больше, чем Fight Value, особенно у кристального (что логично, т. к. он имеет небоевую абилку).
Пока чуть увеличу Value у кристального и сильно у горыныча, а там посмотрим.Sm


RE: Нейтральные драконы - Sav - 09.08.2010 19:34

Кристальному я тоже AI / Fight Value поменял. Но надо ждать формулу от Efritа.


RE: Нейтральные драконы - GhostManSD - 11.09.2010 00:48

Результаты для драконов из MonsterPower.
Лазурный: 21614
Кристальный: 13614
Горыныч: 10960
Ржавый: 8890
Волшебный: 3466


RE: Обсуждение - обо всём - Sav - 20.06.2011 20:44

(17.06.2011 14:56)TurboS Wrote:  Самые сильные существа...

(20.06.2011 16:33)ROSOMAHA Wrote:  самые сильные юниты городов это...
Да что гадать, надо fight value у всех сравнить и не париться. Sm

Поясню..
Fight Value - одна из невидимых игроку характеристик монстра. Для компа означает ценность этого монстра в битве. Посмотреть можно через ERM, может ещё в текстовике каком есть, не уверен.


RE: Обсуждение - обо всём - Berserker - 21.06.2011 00:51

Sav Wrote:Fight Value - одна из невидимых игроку характеристик монстра. Для компа означает ценность этого монстра в битве. Посмотреть можно через ERM, может ещё в текстовике каком есть, не уверен.

Тогда уж AI Value. Fight Value не учитывает скорости, способностей и полезности монстра.


RE: Обсуждение - обо всём - gamecreator - 21.06.2011 02:13

Хм, я почему-то думал что ai value - это ценность вообще (типа кристальные драконы приносят кристаллы).


RE: Обсуждение - обо всём - Berserker - 21.06.2011 02:49

AI Value служит при решении ИИ, кого брать, кого покупать. Например, почти в 1.5 раза больше чем Fight Value у титанов, ибо стрелки рулят.


RE: Обсуждение - обо всём - Marmot - 21.06.2011 18:00

Кстати, и я хочу знать: есть где-нибудь внятное описание AI Value и Fight Value? Или хоть не очень внятное... Sm


RE: Обсуждение - обо всём - Berserker - 21.06.2011 19:49

А что тут описывать? Fight Value служит для оценки силы армии, а AI Value - для выбора приоритета, кого покупать ИИ.


RE: Обсуждение - обо всём - etoprostoya - 21.06.2011 19:54

Никаких формул по их вычислению неизвестно, насколько я знаю. Если Мармот хотел знать об этом.


RE: Обсуждение - обо всём - Berserker - 21.06.2011 21:14

Не знаю как в Fight Value, но даже моя бажная monster power генерирует очень близкое к стоимости в золоте значение.


RE: Обсуждение - обо всём - Marmot - 22.06.2011 00:38

Вот, вот, я как раз и хотел узнать: в каких таких "попугаях" выражены эти AV и FV? Стоимость существ в золоте мы и так знаем...


RE: Обсуждение - обо всём - gamecreator - 22.06.2011 00:44

В у.е. они выражены. Абстрактная величина.


RE: Обсуждение - обо всём - Macron1 - 20.09.2013 01:33

У меня возник вопрос по программе Mon Power.
Я отправил в личку сообщение GrayFace, но он пока не ответил.
Что мне нужно - формулы расчета Fight Value/AI Value, которые в ней использовались.
Как я понял, в них учитывается Hit points/Attack/Defence/Damage.

Или же может у кого есть другие формулы расчета Fight/AI Value?
Мне это нужно для монстров под VCMI (вписать какие-то хоть сколько-то адекватные значения).


RE: Обсуждение - обо всём - Berserker - 20.09.2013 16:19

Да, интересно узнать, какие формулы использовал Серж.


RE: Обсуждение - обо всём - hippocamus - 21.09.2013 01:01

AI value однозначно не выводится только из этих параметров. Безответка, например, серьёзно повышает AI value, не влияя на параметры монстра.


RE: Обсуждение - обо всём - Macron1 - 21.09.2013 01:14

(21.09.2013 01:01)hippocamus Wrote:  AI value однозначно не выводится только из этих параметров. Безответка, например, серьёзно повышает AI value, не влияя на параметры монстра.

Все сразу не учтешь, нужен базовый учет параметров.
Абилки я пока не буду учитывать. Возможно, просто буду накидывать в процентах увеличение Value. Программу расширить можно в любой момент.
У тебя есть формулы расчета (более полные или хотя бы только на базовых параметрах)?

PS Формулами GrayFace со мной поделился. Как дойдут руки, запрограммирую, и если он будет не против, напишу их в форуме.


RE: Обсуждение - обо всём - Macron1 - 29.09.2013 03:45

(20.09.2013 16:19)Berserker Wrote:  Да, интересно узнать, какие формулы использовал Серж.

Накропал на коленке прогу на С++, которая считает AI/Fight values по формулам GrayFace:

http://forum.vcmi.eu/viewtopic.php?p=10495#10495

Надеюсь, все правильно с Pascal перевел.
Еще не проверял сравнением, по результирующим значениям новых монстров для VCMI вроде как похоже получается с соотв. существами из стандартных городов. Лучше, чем ничего.


Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 10:28

Думаю, что многие сталкивались с задачей получения fight/ai value для новых существ героев. Здесь я опишу свой вариант решения, а также приведу полученные цифры для ванильных героев и своего мода.
Чтобы оценить значения fight/ai, можно следовать двумя путями - эвристическим и экспериментальным. В первом случае строится некая функция, получающая на вход параметры и свойства существа и выдающее искомое значение или, скорее, набор эвристик вроде: "каждое очко атаки или защиты дает 1.5 в значение ai", "если существо летающее, увеличим итоговое значение на 10%". На подобном подходе основана программа H3MonPower, оценки эвристиками можно найти на форуме VCMI Project. У данного подхода есть набор плюсов и минусов:
  • + для каждого нового существа ai value считается мгновенно
  • + есть вся логика получения значий, которую можно использовать для других оценок
  • - требование доказательности. Именно такое, а не другое влияние каждого фактора должно быть обосновано каким-либо образом, что вызывает серьезные трудности. Задачу облегчает то, что есть готовые значения в CRTRAITS.TXT, на основе которых можно оценивать полученный результат
  • - при добавлении в игру нового существа значения остальных не меняются. Представьте, добавляем в игру 100 новых стрелков. Однозначно, после этого ai медленных не стреляющих существ должно сильно просесть, а эвристический подход этого не дает.
  • - при сильном изменении статов существ с выходом за существующие диапазоны значений эвристики могут начать вести себя некорректно
И вообще, эвристики можно подбирать бесконечно. Sm
Второй подход основан на получении fight/ai на основе экспериментальных данных. Для этого требуется сравнивать существа в деле, а значит, проводить много битв. Sm
Можно сделать это через редактор карт вручную (что требует очень много работы), а можно написать генератор битв. На основе полученных результатов вычисляются искомые значения.
  • + Система наиболее приближена к "реальным условиям"
  • + Не требуется подбирать эвристики и коэффициенты
  • + При изменении статов существ или добавлении новых происходит автоматический пересчет всех значений
  • - требуется много ручной работы или генератор битв
  • - требуется анализ того, какие битвы и как проводить и как начислять итоговые очки
Забегая вперед скажу, что я написал генератор битв, потому что это было проще и интересней (в моей памяти еще живы воспоминания о том, как мы с другом классе в восьмом с помощью редактора карт организовывали битвы 10 на 10 существ седьмого уровня парами все со всеми, для того, чтобы точно узнать, кто из существ и насколько круче Sm).
Допустим, генератор битв есть. Как посчитать ai value? Здесь есть несколько вариантов:
1) Проводить набор характерных битв, за которые начислять очки.
Например, для каждой пары существ проводятся битвы 10 на 10, 1 на 10, 10 на 1, 1 на 100, 100 на 1, 1 на 1000, 1000 на 1, что позволяет покрыть весь диапазон возможных сил монстров друг относительно друга. Полученные каждым существом суммарные очки за все битвы и есть ai value данного существа. Минусы - непонятно, какие именно битвы проводить, как нормировать их результаты друг относительно друга, как начислять очки (по числу убитых, по числу выживших, по числу хп?).
2) Ввести систему рейтинга со стартовым значением, например 1000. После этого проводить итерациями битвы существ всех со всеми, по результатам которых менять рейтинг. В идеале через большое количество битв рейтинг существ сойдется к каким-то устойчивым значениям, которые и будут искомым ai value. Минусы - построение устойчивой сходящейся системы рейтинга та еще задачка. Хотя наверняка на эту тему есть огромное количество литературы.
3) Оценивать существ в лоб - сколько одних существ содержится в других, то есть подбирать значения двух стеков разных существ так, чтобы проведя битву n на m получить выигрыш первых, а битву n на (m + 1) - вторых, при достаточно больших значениях m и n. Значение m/n и будет значением того, сколько существ второго типа "содержится" в существах первого. Минус данного подхода - получение точного сравнения только относительно какого-то существа. Например, мы можем взять архангела и дать ему ai value 10000, узнать, сколько в архангеле существ всех других типов и вычислить их ai в соответствие с полученной пропорцией (например, если в архангеле 50 копейщиков, то ai value копейщика 200). Но после этого мы можем также взять титана, дать ему ai value 7500 (похоже, именно так сделали разработчики игры Sm), вычислить ai других существ относительно него и получить совсем другое соотношение, потому что титан будет иметь очевидное преимущество по сравнению с архангелом перед медленными не стреляющими существами, как стрелок.
Получается, что у нас есть столько наборов различных ai value, сколько есть существ. Для того, чтобы объединить их вместе, требуется решить задачу поиска минимума функции многих переменных - то есть минимума суммы отклонений значений различных наборов друг от друга. А это очень непростая задача.

Я попробовал применить все три подхода, остановился на третьем, придумав, как можно обойти проблему сравнениям рейтингов.
Идея очень проста. В героях присутствует некая аналогия системы "камень-ножницы-бумага". То есть стрелки должны вырезать медленных, но сильных, медленные должны убивать летунов, а летуны вырезать стрелков. Если найти три существа, одно из которых стрелок, одно медленное, а одно летун с такими характеристиками, что друг относительно друга эти существа равны (вырезают друг друга по кругу), то они вместе являются отличным базисом для подсчета ai value всех остальных существ, и значения их "личных" рейтингов можно просто просуммировать. И для своего мода я нашел таких существ, специально подкорректировав их характеристики, чтобы они максимально соответствовали друг другу. В моем моде ими оказались дендроид-солдат, циклоп и жар-птица (подробнее о моем моде и почему эти существа одного уровня (причем, 9-го Sm) как-нибудь в другой раз Sm). Оказалось, что дендроид-солдат это 0.7586 циклопа, циклоп это 0.7676 жар-птицы, а жар-птица это 0.7624 дендроида-солдата. Более точного соответствия получить не удалось, потому что изменение хоть одной характеристики у любого существа на 1 увеличивает разрыв. Но и такого соответствия (точность 1.5%) уж явно достаточно с учетом, какую погрешность вносит выбранная система битв и прочие факторы.
Резюмируя, в текущем виде вычислении ai/fight value существ в моем моде выглядит следующим образом:
  1. Для каждого из трех типов существ - дендроидов-солдатов, циклопов, жар-птиц определяется, какому количеству всех остальных существ в игре они эквивалентны в битве стек на стек. Для этого последовательно проводятся битвы в генераторе битв.
  2. Каждому из этих трех существ задается условное значение ai value 1000 (на самом деле, это значение у этих трех существ немного отличается и подбирается таким, чтобы у титана получалось 7500)
  3. Для всех остальных существ значение ai вычисляется как 1000 * (дендроидов-солдатов в существе + циклопов в существе + жар-птиц в существе) / 3
  4. PROFIT


Теперь о генераторе. Мой генератор битв лишен случайности (использует осредненное повреждение и не использует удачи/морали). Можно проводить битвы стек на стек, стартовое расстояние между существами составляет 15 клеток, двухклеточность существ не учитывается. Существо с большей скоростью ходит первым, если скорость одинакова, то проводится две битвы (ходит первым первое из существ, ходит первым второе из существ) и результат осредняется. Существа используют ожидание, если им это выгодно, иначе подходят и/или нападают/стреляют. Стрелки стреляют, учитывается штраф после дистанции 10 клеток, учитывается штраф стрелков при рукопашной. Существа используют все свойства, которые проявляются постоянно и могут влиять на исход битвы (двойной удар, нет ответа, двойной выстрел, отсутствие штрафа при рукопашной, снижение брони чудищ, отсутствие штрафа дистанции снайперов). Случайно срабатывающие свойства не учитываются.

Ниже приведен результат вычисления ai value для ванильных героев, нормировка на титана. Столбцы: имя существа, мое значение, значение ванильных героев, отношение значений.
Как видно, различия существенны, но в целом рейтинги ведут себя подобным образом. Максимальные различия возникают на существах, чьи свойства я не учитываю (максимальная разница во всем рейтинге, например, у сказочного дракона, который у меня не кастует).

Quote:0) Pikeman my 84 h3AI 80 Dev 1.05
1) Halberdier my 98 h3AI 115 Dev 0.85
2) Archer my 167 h3AI 126 Dev 1.33
3) Marksman my 242 h3AI 184 Dev 1.32
4) Griffin my 240 h3AI 351 Dev 0.68
5) Royal Griffin my 281 h3AI 448 Dev 0.63
6) Swordsman my 396 h3AI 445 Dev 0.89
7) Crusader my 454 h3AI 588 Dev 0.77
8) Monk my 734 h3AI 485 Dev 1.51
9) Zealot my 763 h3AI 750 Dev 1.02
10) Cavalier my 1251 h3AI 1946 Dev 0.64
11) Champion my 1534 h3AI 2100 Dev 0.73
12) Angel my 4890 h3AI 5019 Dev 0.97
13) Archangel my 8621 h3AI 8776 Dev 0.98
14) Centaur my 79 h3AI 100 Dev 0.79
15) Centaur Captain my 108 h3AI 138 Dev 0.78
16) Dwarf my 149 h3AI 138 Dev 1.08
17) Battle Dwarf my 176 h3AI 209 Dev 0.84
18) Wood Elf my 284 h3AI 234 Dev 1.21
19) Grand Elf my 412 h3AI 331 Dev 1.24
20) Pegasus my 363 h3AI 518 Dev 0.70
21) Silver Pegasus my 497 h3AI 532 Dev 0.93
22) Dendroid Guard my 524 h3AI 517 Dev 1.01
23) Dendroid Soldier my 656 h3AI 803 Dev 0.82
24) Unicorn my 1136 h3AI 1806 Dev 0.63
25) War Unicorn my 1482 h3AI 2030 Dev 0.73
26) Green Dragon my 3069 h3AI 4872 Dev 0.63
27) Gold Dragon my 7356 h3AI 8613 Dev 0.85
28) Gremlin my 38 h3AI 44 Dev 0.86
29) Master Gremlin my 79 h3AI 66 Dev 1.20
30) Stone Gargoyle my 138 h3AI 165 Dev 0.84
31) Obsidian Gargoyle my 160 h3AI 201 Dev 0.80
32) Stone Golem my 241 h3AI 250 Dev 0.96
33) Iron Golem my 318 h3AI 412 Dev 0.77
34) Mage my 565 h3AI 570 Dev 0.99
35) Arch Mage my 636 h3AI 680 Dev 0.94
36) Genie my 537 h3AI 884 Dev 0.61
37) Master Genie my 883 h3AI 942 Dev 0.94
38) Naga my 1482 h3AI 2016 Dev 0.74
39) Naga Queen my 1632 h3AI 2840 Dev 0.57
40) Giant my 2308 h3AI 3718 Dev 0.62
41) Titan my 7500 h3AI 7500 Dev 1.00
42) Imp my 40 h3AI 50 Dev 0.80
43) Familiar my 42 h3AI 60 Dev 0.70
44) Gog my 211 h3AI 159 Dev 1.33
45) Magog my 216 h3AI 240 Dev 0.90
46) Hell Hound my 238 h3AI 357 Dev 0.67
47) Cerberus my 330 h3AI 392 Dev 0.84
48) Demon my 387 h3AI 445 Dev 0.87
49) Horned Demon my 424 h3AI 480 Dev 0.88
50) Pit Fiend my 611 h3AI 765 Dev 0.80
51) Pit Lord my 611 h3AI 1224 Dev 0.50
52) Efreeti my 1259 h3AI 1670 Dev 0.75
53) Efreet Sultan my 1750 h3AI 1848 Dev 0.95
54) Devil my 4371 h3AI 5101 Dev 0.86
55) Arch Devil my 8067 h3AI 7115 Dev 1.13
56) Skeleton my 57 h3AI 60 Dev 0.95
57) Skeleton Warrior my 65 h3AI 85 Dev 0.76
58) Walking Dead my 109 h3AI 98 Dev 1.11
59) Zombie my 147 h3AI 128 Dev 1.15
60) Wight my 179 h3AI 252 Dev 0.71
61) Wraith my 179 h3AI 315 Dev 0.57
62) Vampire my 320 h3AI 555 Dev 0.58
63) Vampire Lord my 533 h3AI 783 Dev 0.68
64) Lich my 815 h3AI 848 Dev 0.96
65) Power Lich my 972 h3AI 1079 Dev 0.90
66) Black Knight my 1523 h3AI 2087 Dev 0.73
67) Dread Knight my 1852 h3AI 2382 Dev 0.78
68) Bone Dragon my 2354 h3AI 3388 Dev 0.69
69) Ghost Dragon my 3960 h3AI 4696 Dev 0.84
70) Troglodyte my 49 h3AI 59 Dev 0.83
71) Infernal Troglodyte my 61 h3AI 84 Dev 0.73
72) Harpy my 123 h3AI 154 Dev 0.80
73) Harpy Hag my 168 h3AI 238 Dev 0.71
74) Beholder my 349 h3AI 336 Dev 1.04
75) Evil Eye my 361 h3AI 367 Dev 0.98
76) Medusa my 512 h3AI 517 Dev 0.99
77) Medusa Queen my 577 h3AI 577 Dev 1.00
78) Minotaur my 662 h3AI 835 Dev 0.79
79) Minotaur King my 833 h3AI 1068 Dev 0.78
80) Manticore my 973 h3AI 1547 Dev 0.63
81) Scorpicore my 1504 h3AI 1589 Dev 0.95
82) Red Dragon my 3937 h3AI 4702 Dev 0.84
83) Black Dragon my 7477 h3AI 8721 Dev 0.86
84) Goblin my 47 h3AI 60 Dev 0.78
85) Hobgoblin my 49 h3AI 78 Dev 0.63
86) Wolf Rider my 104 h3AI 130 Dev 0.80
87) Wolf Raider my 139 h3AI 203 Dev 0.68
88) Orc my 256 h3AI 192 Dev 1.33
89) Orc Chieftain my 294 h3AI 240 Dev 1.23
90) Ogre my 401 h3AI 416 Dev 0.96
91) Ogre Mage my 568 h3AI 672 Dev 0.85
92) Roc my 689 h3AI 1027 Dev 0.67
93) Thunderbird my 1040 h3AI 1106 Dev 0.94
94) Cyclops my 1602 h3AI 1266 Dev 1.27
95) Cyclops King my 1681 h3AI 1443 Dev 1.16
96) Behemoth my 2628 h3AI 3162 Dev 0.83
97) Ancient Behemoth my 4453 h3AI 6168 Dev 0.72
98) Gnoll my 60 h3AI 56 Dev 1.07
99) Gnoll Marauder my 67 h3AI 90 Dev 0.74
100) Lizardman my 198 h3AI 126 Dev 1.57
101) Lizard Warrior my 257 h3AI 156 Dev 1.65
102) Gorgon my 810 h3AI 890 Dev 0.91
103) Mighty Gorgon my 859 h3AI 1028 Dev 0.84
104) Serpent Fly my 216 h3AI 268 Dev 0.81
105) Dragon Fly my 284 h3AI 312 Dev 0.91
106) Basilisk my 399 h3AI 552 Dev 0.72
107) Greater Basilisk my 453 h3AI 714 Dev 0.63
108) Wyvern my 882 h3AI 1350 Dev 0.65
109) Wyvern Monarch my 1466 h3AI 1518 Dev 0.97
110) Hydra my 2754 h3AI 4120 Dev 0.67
111) Chaos Hydra my 3852 h3AI 5931 Dev 0.65
112) Air Elemental my 257 h3AI 356 Dev 0.72
113) Earth Elemental my 367 h3AI 330 Dev 1.11
114) Fire Elemental my 321 h3AI 345 Dev 0.93
115) Water Elemental my 293 h3AI 315 Dev 0.93
116) Gold Golem my 542 h3AI 600 Dev 0.90
117) Diamond Golem my 687 h3AI 775 Dev 0.89
118) Pixie my 31 h3AI 55 Dev 0.56
119) Sprite my 45 h3AI 95 Dev 0.47
120) Psychic Elemental my 1026 h3AI 1669 Dev 0.61
121) Magic Elemental my 1358 h3AI 2012 Dev 0.67
122) Ice Elemental my 464 h3AI 380 Dev 1.22
123) Magma Elemental my 438 h3AI 490 Dev 0.89
124) Storm Elemental my 429 h3AI 486 Dev 0.88
125) Energy Elemental my 371 h3AI 470 Dev 0.79
126) Firebird my 3664 h3AI 4547 Dev 0.81
127) Phoenix my 4396 h3AI 6721 Dev 0.65
128) Azure Dragon my 43206 h3AI 78845 Dev 0.55
129) Crystal Dragon my 24834 h3AI 39338 Dev 0.63
130) Faerie Dragon my 5955 h3AI 19580 Dev 0.30
131) Rust Dragon my 14755 h3AI 26433 Dev 0.56
132) Enchanter my 976 h3AI 1210 Dev 0.81
133) Sharpshooter my 729 h3AI 585 Dev 1.25
134) Halfling my 90 h3AI 75 Dev 1.20
135) Peasant my 9 h3AI 15 Dev 0.60
136) Boar my 129 h3AI 145 Dev 0.89
137) Mummy my 253 h3AI 270 Dev 0.94
138) Nomad my 265 h3AI 345 Dev 0.77
139) Rogue my 102 h3AI 135 Dev 0.76
140) Troll my 473 h3AI 1024 Dev 0.46

Ну и на сладкое, для тех, кто хотел бы узнать, кого в ком сколько:
http://rusfolder.com/40275854
Большой текстовый файл, если будут проблемы со скачиванием, могу выложить в другое место по просьбе.

Если интересны исходники генератора/расчета ai value, причешу и скину.

Буду благодарен дельным замечаниям и предложениям. Sm


RE: Методика расчета значений Fight/AI Value - gamecreator - 30.03.2014 11:59

Берсеркер когда-то писал программу для вычисления этих значений.


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 13:09

Способности существ не могут быть оценены таким образом. Потому что их использование зависит от АИ. А они могут давать львиную долю Fight/AIValue.
И раз в этой методике выкидываются неудобоваримые существа типа сказочного дракона, она будет не очень применима к "новым" существам.

ЗЫ В своей программе (на основе программы Grayface) я просто примерно оценил процентами ту или иную способность (программа для VCMI).
http://forum.vcmi.eu/viewtopic.php?t=763
Дорабатывать пока что лень. Надо бы на perl переписать, потому что в vcmi добавилась поддержка юникода, а Билдер с ним из коробки не работает.


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 15:39

Quote:Берсеркер когда-то писал программу для вычисления этих значений.
Интересно, какой подход он применил. Надеюсь, отпишется.

Quote:Способности существ не могут быть оценены таким образом. Потому что их использование зависит от АИ. А они могут давать львиную долю Fight/AIValue.
Я не понял мысль совсем.
Quote:И раз в этой методике выкидываются неудобоваримые существа типа сказочного дракона, она будет не очень применима к "новым" существам.
Во-первых, существа не выкидываются. Во-вторых, данная методика не является получением конечных значений. Такие существа, как сказочные драконы (которые являются редким исключением наряду с птицами грома, наносящим не только физ дамаг) должны получать надбавки за свои способности. Но это единичные существа, а не вся система существ в целом!
Я могу реализовать в генераторе битв большинство остальных способностей (да в принципе и эти, если заморочиться), но есть ли в этом большой смысл? Большинство особых способностей (вроде окаменения) в среднем в битвах стек на стек могут дать от силы 5-10% прибавки к рейтингу, что не является большой погрешностью для подобной системы.
Что для вас "новое" существо? Имеющее свойство, которого нет в игре на данный момент? Ну так ему в любом случае придется какие-то поправочные коэффициенты вводить.
Моя система позволяет аргументировано построить количественные отношения между существами на основе их боевых характеристик. Такая задача у меня появилась, чтобы получить fight/ai value для существ из своего мода. Я переработал всех существ в игре по количественным показателям, но не меняя их свойств. Их у меня 12 уровней в замках + 2 уровня на ржавых-лазурных драконов. И вот все это месиво нужно адекватно расставить по силе. Эмпирическая система Роженко, и Ваша, основанная на ней, уж извините, никак с этой задачей не справится. В случае, когда у вас большинство существ из ванильных героев с не измененными характеристиками, разумеется, Вы можете позволить себе построить эвристическую систему формул, которые как-то приближают ai value к исходным значениям, которые лежат в CRTRAITS.TXT и, получив соответствие, говорить о том, что Вы именно для этого множества существ подобрали правильные значения и если Вы будете добавлять других существ с характеристиками из уже существующего диапазона (и разумеется, без каких-либо новых свойств), Вы можете с некой степенью достоверности утверждать, что новые существа получат значения, соответствующие их реальной силе. В любых других случаях это будет гадание на кофейной гуще.
Я молчу о том, что H3MonPower сильно расходится с ванильными значениями уже на базовом наборе существ.
Quote:В своей программе (на основе программы Grayface) я просто примерно оценил процентами ту или иную способность (программа для VCMI).
Прежде чем написать свою реализацию, я искал на форумах существующие решения. Я разговаривал с Роженко на тему, откуда он взял такие формулы для своей программы и получил от него исходный код. Что касается Вашей программы, то и ее я видел. Вас не смущают изыскания в стиле огненное дыхание считается как удвоенное верхнее повреждение? Откуда такая информация? Какими экспериментами было подтверждено? И Вы правда думаете, что это адекватная система оценки?


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 16:13

(30.03.2014 15:39)Arseniy Wrote:  Что касается Вашей программы, то и ее я видел. Вас не смущают изыскания в стиле огненное дыхание считается как удвоенное верхнее повреждение? Откуда такая информация? Какими экспериментами было подтверждено? И Вы правда думаете, что это адекватная система оценки?

Свои цели она выполняет. Тут как говорится, сделай лучше.
Почему вам не нравится оценка дыхания двойным макс. уроном? Формулы используют значение максимального урона, а при случайном выпадении макс. урона или под блессом дыхание может принести макс. двойной урон. Или тут что-то не так?

И далеко не все способности существ могут быть оценены вашим способом. Например, у черных драконов иммунитет к любой магии. С кем бы из стандартных существ вы не устраивали бы бои, никто из них не может использовать магию 3-5 уровней, кроме выкинутого вами волшебного дракона. То есть способность, которая проявляется только в бою против прокаченного героя-мага, будет неооценена, а значит, АИ не будет брать черных драконов при прочих равных.
Как вы сможете оценить в бою способность кристалических драконов генерировать кристаллы?

И вообще, 3D0 вполне могла и с потолка свои AI/Fight Values взять.

И чем вам не нравится моя система оценки? Она не требует симулировать 100500 боев, не требует использования AI (а если AI не использует способность существа, скажем, кастовать заклинание, то для АИ существо будет переоцененным).

В любом случае, в идеальном варианте можно взять любую систему оценки этих значений. Только они должны быть пересчитаны для всех существ, в том числе стандартных. Потому что это значение используется для сравнения силы мобов и армий, только и всего.

Впрочем, я не навязываю свою методику. Я собираюсь как-нибудь доработать программу и переписать на Perl. к тому же, в VCMI появятся новые бонусы, их тоже нужно будет учитывать по возможности.
В VCMI я предлагал разработчикам вообще отказаться от Ai/Fight values существ в настройках и считать их динамически. Тем более, что в VCMI есть опыт существ (опция), теоретически он должен влиять на AI/Fight value, чтобы AI мог выбрать более опытных солдат.
Ну и плюс там есть артефакты для слотов, которые повышают параметры или добавляют способности, что тоже не учитывается при постоянном AI/Fight values.
Пока предложение отклонили, "потому что формул нет".


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 16:42

Quote:Почему вам не нравится оценка дыхания двойным макс. уроном? Формулы используют значение максимального урона, а при случайном выпадении макс. урона или под блессом дыхание может принести макс. двойной урон. Или тут что-то не так?
Да, не так. Полное отсутствие математических выкладок или статистических данных, подтверждающих гипотезу. Sm
Quote:И вообще, 3D0 вполне могла и с потолка свои AI/Fight Values взять.
Так как эти значения справляются со своими функциями, я совершенно уверен, что это не так. Более того, из-за общей кривизны этих значений (красивое значение только у титанов), я почти уверен, что эти значения получены экспериментально, скорее всего, в битвах, и нормировка производилась на значение титана или относительно титана. Только для этого использовался доступный движок битв героев 3, а не самопальный эмулятор, который использую я. Поэтому и сказочные драконы могли честно получать свои высокие значения именно тем, что кастовали в битвах.
Quote:И чем вам не нравится моя система оценки?
Тем, что можно придумать десятки таких систем (или коэффициентов в Вашей системе), в каждой из которых значения будут получаться разными для разных существ, и каждая будет иметь одинаковое право на существование, потому что не подтверждена. Видимо, поэтому в VCMI Вас и отправили за формулами. Sm
Может, это вопрос мироощущения. Мне, как физику по образованию, не важно, какие конкретно будут значения с точностью там до 1, но очень важно, чтобы сами оценки этих значений были корректны, а не взяты с потолка.
Например, Вы бы могли оценить, как часто в битве есть шанс проявить свойство двойное дыхание (а это совсем не тривиально), привести соответствующую статистику. Использовать этот шанс, чтобы подсчитать, на сколько увеличиваются средние повреждения существа с двойным дыханием. После чего (о, чудо), получить, что средние повреждения увеличиваются не на 37.46%, а ровно в полтора раза, что, обычно, соответствует увеличению максимальных повреждений в два. И в таком случае я бы принял Вашу оценку. Но иначе она ничем не лучше той, в которой максимальное повреждение увеличивается на 50%. Или на 70%. Или на 5..

Меня очень интересует до сих пор один вопрос. Чем различаются ai/fight value. Нигде ясного ответа на него не нашел. Понятно только то, что основное для оценки действий компа ai, а fight используется редко. Но это очень размытые формулировки.
Quote:Как вы сможете оценить в бою способность кристалических драконов генерировать кристаллы?
Это как раз очень хороший пример, который относится к моему вопросу. Разумеется, очень сложно оценить вообще общее влияние существ в игре, и то, какие существа предпочтительней. Например, существа с большей скоростью выгодны не только в битве, но и для того, чтобы быстро бегать по карте. Стрелки дополнительно выгодны тем, что исключают потери войск в битвах с более слабым противником. Иммунитет черных драконов вообще противоречив - как нельзя на него накастовать молнию, так нельзя и благославление.
Поэтому я решил считать за аксиому, что ai value используется именно для расчетов силы нейтральных армий и героя компьютером, то есть боевых характеристик. Если же это другая оценка, например, общей полезности существа (какое лучше сейчас купить), то нужно считать по совсем другой системе.


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 17:01

(30.03.2014 16:42)Arseniy Wrote:  Например, Вы бы могли оценить, как часто в битве есть шанс проявить свойство двойное дыхание (а это совсем не тривиально), привести соответствующую статистику. Использовать этот шанс, чтобы подсчитать, на сколько увеличиваются средние повреждения существа с двойным дыханием. После чего (о, чудо), получить, что средние повреждения увеличиваются не на 37.46%, а ровно в полтора раза, что, обычно, соответствует увеличению максимальных повреждений в два. И в таком случае я бы принял Вашу оценку. Но иначе она ничем не лучше той, в которой максимальное повреждение увеличивается на 50%. Или на 70%. Или на 5..
В формулах GrayFace используется макс. урон, поэтому я не вижу ничего некорректного в том, что учитываю дыхание как 2*max урон.
И при чем здесь вообще ваши шансы и средние значения? AI/Fight Value должны оценивать не среднее состояние, а максимальное. Потому что вы не можете дать гарантий, что я возьму черного дракона и он выдаст 10 раз среднюю атаку, а не максимальную.

Про шанс выпадения дыхания я вообще не понял. Если игрок атакует юниты в ряд, оно всегда выпадает. Если игрок атакует одиночный отряд, дыхание не проявляется.

Вы начинаете говорить про вероятности, а как известно, есть ложь и есть статистика. Я говорю про оценку максимальной полезности существа. Например, у стрелка 20 выстрелов. У там какого-нибудь гоблина с бластером 4 выстрела.
Ваша методика симуляции боев не оценит всей пользы владения 20 выстрелами, потому что бой может закончиться раньше, чем кончатся стрелы.
Ну или возьмем пит лордов. Их способность вызывать демонов из трупов союзников вообще не может быть оценена по вашей методике.


RE: Методика расчета значений Fight/AI Value - gamecreator - 30.03.2014 17:04

(30.03.2014 16:42)Arseniy Wrote:  Поэтому я решил считать за аксиому, что ai value используется именно для расчетов силы нейтральных армий и героя компьютером, то есть боевых характеристик.
Нет, для этого используется Fight value.


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 17:07

(30.03.2014 16:42)Arseniy Wrote:  Меня очень интересует до сих пор один вопрос. Чем различаются ai/fight value. Нигде ясного ответа на него не нашел. Понятно только то, что основное для оценки действий компа ai, а fight используется редко.

AI Value используется АИ для оценки армий и мобов на карте.
Fight Value используется АИ в режиме боя.
В VCMI вроде как Fight value не используется (алоритмы АИ другие - но сам параметр есть).
Соответственно Fight Value обычно больше. чем AI. по идее, в нем учитываются уже свойства и параметры существ, важные только в бою (там всякие заклинания, иммунитеты и тп)


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 17:18

Quote:Нет, для этого используется Fight value.
Quote:AI Value используется АИ для оценки армий и мобов на карте.
Fight Value используется АИ в режиме боя.
Коллеги, вы противоречите друг другу. Кому верить?

Если ai value используется для оценки силы армий (стоящих на карте, в замке, у героя), а fight для оценки того, на кого нападать уже в самой битве, то я правильно рассчитываю первое, а над вторым надо подумать, но оно позволяет тогда более свободные значения (в стиле +50% у стрелков, например) и им можно серьезно улучшить поведение компьютера.


RE: Методика расчета значений Fight/AI Value - gamecreator - 30.03.2014 17:38

Судя по игровым значениям, AI value меньше, чем Fight value у медленных существ, а больше - у стрелков. Возможно, Fight value - это просто какое-то промежуточное значение, которое не содержит информации о способностях и небоевой ценности существа.


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 17:44

(30.03.2014 17:38)gamecreator Wrote:  Судя по игровым значениям, AI value меньше, чем Fight value у медленных существ, а больше - у стрелков.
Что похоже на правду.
Стрелки опаснее, чем медленные юниты.


RE: Методика расчета значений Fight/AI Value - gamecreator - 30.03.2014 17:49

Но это значит, что Fight value не используется ни в бою, ни на карте.

Кстати, а вдруг это значение определяет когда нейтралы убегают от героя?


RE: Методика расчета значений Fight/AI Value - Папаган - 30.03.2014 18:05

Довольно интересную тему подняли вы, товарищи. С тех пор, как начал играть в Вог, хотелось увидеть адекватную систему ai/fight value как для новых, так и для старых существ. Ибо есть такая штука, как опыт армии, и, понятное дело, какая-нибудь пикси 10-го ранга будет сильнее пикинеса 0-го ранга, ибо +статы, +новые способностти, етц . Вдобавок существуют такие опции как "изменение существ", "усиление существ", "сложные битвы" и "доп.бонусы нейтралам", которые тоже добра не желают. Ну и на закуску есть наркоманские правила карты (двойная плюха, плюха отрыжкой и т.д). Так вот, с учетом всего вышеперечисленного вообще реально создать "универсальный калькулятор" который бы все это учитывал?

PS А ведь еще есть командиры, оруженосцы, матерь божья!.. Dash1
PPS Ах да, еще и Era scripts.


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 19:36

(30.03.2014 18:05)Папаган Wrote:  Так вот, с учетом всего вышеперечисленного вообще реально создать "универсальный калькулятор" который бы все это учитывал?

Да, это было бы супер.


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 20:37

Quote:Судя по игровым значениям, AI value меньше, чем Fight value у медленных существ, а больше - у стрелков. Возможно, Fight value - это просто какое-то промежуточное значение, которое не содержит информации о способностях и небоевой ценности существа.
Понятно. То есть четкой информации все равно нет.
Значит, единственный способ проверить - занулить сначало одно, потом другое или обратить (сделать маленьким для крутых существ и большим для слабых) и посмотреть, что происходит.


RE: Методика расчета значений Fight/AI Value - igrik - 30.03.2014 21:27

Quote:Понятно. То есть четкой информации все равно нет.
Советую спросить у Sav'a на форуме DF2, где то там он немало описал по Fight/AI Value


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 23:03

Quote:Советую спросить у Sav'a на форуме DF2, где то там он немало описал по Fight/AI Value
Спасибо! Нашел некоторые посты Sav на эту тему. Он пишет о том, что ai value используется для расчета количества существ для охраны при генерации случайных карт (для неслучайных используется значение из CRTRAITS.TXT).
Что касается моих собственных изысканий. Я провел некоторые игровые тесты и выяснил следующее.

- Компьютер для оценки силы существ на карте, для оценки результата битв с ними, а также для оценки важности существ в битве однозначно использует fight value.

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


RE: Методика расчета значений Fight/AI Value - Macron1 - 30.03.2014 23:23

(30.03.2014 23:03)Arseniy Wrote:  - Компьютер для оценки силы существ на карте, для оценки результата битв с ними, а также для оценки важности существ в битве однозначно использует fight value.

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

Только непонятно, зачем вообще 3DO сделало две величины, а не одну? Тем более, что они отличаются процентов на 10% примерно максимум.


RE: Методика расчета значений Fight/AI Value - Arseniy - 30.03.2014 23:39

Quote:Только непонятно, зачем вообще 3DO сделало две величины, а не одну? Тем более, что они отличаются процентов на 10% примерно максимум.
У титана отличаются в 1.5 раза.
Мне непонятно обратное, почему только две величины? Есть сила существа, есть его полезность, есть приоритет его атаки в битве. Есть уйма других аспектов.
Вообще, очень грустно, что они поленились вынести все константы в текстовые файлы.


RE: Методика расчета значений Fight/AI Value - gamecreator - 30.03.2014 23:39

(30.03.2014 23:03)Arseniy Wrote:  - Компьютер для оценки силы существ на карте, для оценки результата битв с ними, а также для оценки важности существ в битве однозначно использует fight value.
Это очень странно, зачем брать значение которое не учитывает способности существа (в т.ч. стрельбу) и, возможно, другие параметры, если есть значение которое это всё учитывает.


RE: Методика расчета значений Fight/AI Value - Berserker - 31.03.2014 03:06

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


RE: Методика расчета значений Fight/AI Value - Arseniy - 31.03.2014 07:36

Quote:Это очень странно, зачем брать значение которое не учитывает способности существа (в т.ч. стрельбу) и, возможно, другие параметры, если есть значение которое это всё учитывает.
Во всяком случае, это объясняет, почему компьютер так легко расправляется со стрелками, меня это всегда удивляло.
Я бы посмотрел на это с другой стороны - fight value учитывает боевую силу существ (в том числе стрелковую), но как-то плоховато. А ai value используется для определения, сможет ли нейтральный отряд нанести повреждения в битве, и поэтому у стрелков и летунов оно выше (думаю, многим знакомо ощущение облегчения, когда нападаешь на такой отряд и знаешь, что потеря части армии неизбежна, а этот отряд сбегает).

Получается, в целом я правильно сделал, что посчитал fight/ai через битвы и сделал их одинаковыми (единственное, ai требует тщательной нормировки, потому что в коде есть значения суммарного ai, которые используются для определения охраны при генерации случайных карт, например)
Но можно пойти дальше, как в оригинале. Если ai используется для определения, сбежит отряд противника или нет, то вполне осмысленно серьезно увеличить его на какие-то коэффициенты для стрелков или летунов, которые долетают за один ход, так как они, даже когда их мало, способны нанести ощутимые повреждения. С другой стороны, если из-за этого охрана в таких существах на случайных картах просядет, это тоже нормально.


RE: Методика расчета значений Fight/AI Value - Папаган - 31.03.2014 10:41

(31.03.2014 03:06)Berserker Wrote:  Только у титанов бонус 1.5х как раз за стрельбу начислен.
Обана! Так титаны не наносят доп. урона черным драконам, когда махаются с ними врукопашную? Спасибо, буду знать.
Из этой же серии: а если стоят рядом два стека титанов, и дракон поражает огнем оба, бонусный урон получат тоже оба, или только первоначальная цель атаки?


RE: Методика расчета значений Fight/AI Value - gamecreator - 31.03.2014 12:06

(31.03.2014 03:06)Berserker Wrote:  В бою уже параллельно может быть, стреляет титан или нет, если драконы долетают за ход. Только у титанов бонус 1.5х как раз за стрельбу начислен.
Так и у драконов бонус за скорость есть.
(31.03.2014 10:41)Папаган Wrote:  Обана! Так титаны не наносят доп. урона черным драконам, когда махаются с ними врукопашную?
Что значит не наносят? Всё там в порядке.


RE: Методика расчета значений Fight/AI Value - Berserker - 31.03.2014 21:40

И всё же у Титанов самое высокое значение ИИ. За скорость меньше начисляют. По моим расчётам, мизерно.


RE: Методика расчета значений Fight/AI Value - gamecreator - 01.04.2014 02:04

(31.03.2014 21:40)Berserker Wrote:  И всё же у Титанов самое высокое значение ИИ.
Нет.


RE: Методика расчета значений Fight/AI Value - Berserker - 01.04.2014 03:24

У кого выше-то? Насколько я помню у титанов 6000+.


RE: Методика расчета значений Fight/AI Value - gamecreator - 01.04.2014 03:36

У титанов всего лишь 7500. У архангелов, золотых и чёрных драконов - 8776, 8613, 8721 соответственно.


RE: Методика расчета значений Fight/AI Value - Berserker - 01.04.2014 05:41

Значит мои воспоминания ошибочны. В текстовике глянул?


RE: Методика расчета значений Fight/AI Value - gamecreator - 01.04.2014 10:07

Да.


RE: Методика расчета значений Fight/AI Value - Папаган - 01.04.2014 14:21

Глянул тут Физмиг, и вопрос сразу возник: а для существ причала каким образом AI/fight value определялось?


RE: Методика расчета значений Fight/AI Value - igrik - 01.04.2014 16:29

фантазия с установкой на сохранение баланса + руки 118