Методика расчёта значений 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?Не знаю, по какому алгоритму, но 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 уровня (так как большинство из них без спецсвойств) - он не восстанавливается. Это как раз и доказывает, что эти параметры - НЕ значения каких-либо функций, а именно что результаты серии тестовых боёв. Да это и так видно - например, у Арбалетчика (неулучшенного) и Ящера (тоже неул.) эти параметры полностью совпадают, хотя у Ящера все навыки как минимум не хуже, чем у Арбалетчиков - а некоторые просто лучше. Значит, либо просто Арбалетчикам в тестовых боях везло (или на траве тестили ), либо им эти значения "от балды" выставили. А вот уже у улучшенных Арбалетчиков 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: Да это и так видно - например, у Арбалетчика (неулучшенного) и Ящера (тоже неул.) эти параметры полностью совпадают, хотя у Ящера все навыки как минимум не хуже, чем у Арбалетчиков - а некоторые просто лучше. Значит, либо просто Арбалетчикам в тестовых боях везло (или на траве тестили ), либо им эти значения "от балды" выставили. А вот уже у улучшенных Арбалетчиков 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#/$ 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:так кристального и ржавого то изменили. значит и числоРжавого пока не трогали. Кристального не так уж сильно изменили. Quote:но мы ведь хотим чтобы ИИ адекватно работал с этимиКонечно, хотим. Видимо, придётся подождать, пока Efrit расскажет формулу. Тестить, правда, придётся. 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 у кристального и сильно у горыныча, а там посмотрим. 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 у всех сравнить и не париться. Поясню.. 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? Или хоть не очень внятное... 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. У данного подхода есть набор плюсов и минусов:
Второй подход основан на получении fight/ai на основе экспериментальных данных. Для этого требуется сравнивать существа в деле, а значит, проводить много битв. Можно сделать это через редактор карт вручную (что требует очень много работы), а можно написать генератор битв. На основе полученных результатов вычисляются искомые значения.
Допустим, генератор битв есть. Как посчитать 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 (похоже, именно так сделали разработчики игры ), вычислить ai других существ относительно него и получить совсем другое соотношение, потому что титан будет иметь очевидное преимущество по сравнению с архангелом перед медленными не стреляющими существами, как стрелок. Получается, что у нас есть столько наборов различных ai value, сколько есть существ. Для того, чтобы объединить их вместе, требуется решить задачу поиска минимума функции многих переменных - то есть минимума суммы отклонений значений различных наборов друг от друга. А это очень непростая задача. Я попробовал применить все три подхода, остановился на третьем, придумав, как можно обойти проблему сравнениям рейтингов. Идея очень проста. В героях присутствует некая аналогия системы "камень-ножницы-бумага". То есть стрелки должны вырезать медленных, но сильных, медленные должны убивать летунов, а летуны вырезать стрелков. Если найти три существа, одно из которых стрелок, одно медленное, а одно летун с такими характеристиками, что друг относительно друга эти существа равны (вырезают друг друга по кругу), то они вместе являются отличным базисом для подсчета ai value всех остальных существ, и значения их "личных" рейтингов можно просто просуммировать. И для своего мода я нашел таких существ, специально подкорректировав их характеристики, чтобы они максимально соответствовали друг другу. В моем моде ими оказались дендроид-солдат, циклоп и жар-птица (подробнее о моем моде и почему эти существа одного уровня (причем, 9-го ) как-нибудь в другой раз ). Оказалось, что дендроид-солдат это 0.7586 циклопа, циклоп это 0.7676 жар-птицы, а жар-птица это 0.7624 дендроида-солдата. Более точного соответствия получить не удалось, потому что изменение хоть одной характеристики у любого существа на 1 увеличивает разрыв. Но и такого соответствия (точность 1.5%) уж явно достаточно с учетом, какую погрешность вносит выбранная система битв и прочие факторы. Резюмируя, в текущем виде вычислении ai/fight value существ в моем моде выглядит следующим образом:
Теперь о генераторе. Мой генератор битв лишен случайности (использует осредненное повреждение и не использует удачи/морали). Можно проводить битвы стек на стек, стартовое расстояние между существами составляет 15 клеток, двухклеточность существ не учитывается. Существо с большей скоростью ходит первым, если скорость одинакова, то проводится две битвы (ходит первым первое из существ, ходит первым второе из существ) и результат осредняется. Существа используют ожидание, если им это выгодно, иначе подходят и/или нападают/стреляют. Стрелки стреляют, учитывается штраф после дистанции 10 клеток, учитывается штраф стрелков при рукопашной. Существа используют все свойства, которые проявляются постоянно и могут влиять на исход битвы (двойной удар, нет ответа, двойной выстрел, отсутствие штрафа при рукопашной, снижение брони чудищ, отсутствие штрафа дистанции снайперов). Случайно срабатывающие свойства не учитываются. Ниже приведен результат вычисления ai value для ванильных героев, нормировка на титана. Столбцы: имя существа, мое значение, значение ванильных героев, отношение значений. Как видно, различия существенны, но в целом рейтинги ведут себя подобным образом. Максимальные различия возникают на существах, чьи свойства я не учитываю (максимальная разница во всем рейтинге, например, у сказочного дракона, который у меня не кастует). Quote:0) Pikeman my 84 h3AI 80 Dev 1.05 Ну и на сладкое, для тех, кто хотел бы узнать, кого в ком сколько: http://rusfolder.com/40275854 Большой текстовый файл, если будут проблемы со скачиванием, могу выложить в другое место по просьбе. Если интересны исходники генератора/расчета ai value, причешу и скину. Буду благодарен дельным замечаниям и предложениям. 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:Почему вам не нравится оценка дыхания двойным макс. уроном? Формулы используют значение максимального урона, а при случайном выпадении макс. урона или под блессом дыхание может принести макс. двойной урон. Или тут что-то не так?Да, не так. Полное отсутствие математических выкладок или статистических данных, подтверждающих гипотезу. Quote:И вообще, 3D0 вполне могла и с потолка свои AI/Fight Values взять.Так как эти значения справляются со своими функциями, я совершенно уверен, что это не так. Более того, из-за общей кривизны этих значений (красивое значение только у титанов), я почти уверен, что эти значения получены экспериментально, скорее всего, в битвах, и нормировка производилась на значение титана или относительно титана. Только для этого использовался доступный движок битв героев 3, а не самопальный эмулятор, который использую я. Поэтому и сказочные драконы могли честно получать свои высокие значения именно тем, что кастовали в битвах. Quote:И чем вам не нравится моя система оценки?Тем, что можно придумать десятки таких систем (или коэффициентов в Вашей системе), в каждой из которых значения будут получаться разными для разных существ, и каждая будет иметь одинаковое право на существование, потому что не подтверждена. Видимо, поэтому в VCMI Вас и отправили за формулами. Может, это вопрос мироощущения. Мне, как физику по образованию, не важно, какие конкретно будут значения с точностью там до 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 используется АИ для оценки армий и мобов на карте.Коллеги, вы противоречите друг другу. Кому верить? Если 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 А ведь еще есть командиры, оруженосцы, матерь божья!.. 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. Только непонятно, зачем вообще 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 фантазия с установкой на сохранение баланса + руки |