Подсчет очков в Heroes IV

Информация взята с сайта heroes.ag.ru для heroes.vov.ru

Все вы прекрасно видели, от чего зависят набираемые в Heroes IV очки: это Time, Battle, Army, Golg, Quest, Artifacts, Exploration и Hero. Более или мене ясно, что они означают. Но вот как конкретно влияют на набираемые очки? Так и напрашивается известная реклама: "Формула? Где формула?", только в данном случае Rexon не поможет :). 

И сразу скажу, что вы не увидите такой же красивой простой формулы, как в рекламе. Здесь все запутаннее. Однако это дело удалось распутать Рафаэлю и Амуну, оставившим свои сообщения на форуме http://www.hommportal.com/tavern/viewtopic.php?t=9. Ниже приводится (с разрешения Амуна) копия тех самых сообщений.

Те, кто не хочет вникать в никакие подробности, могут сразу скачать лист Exel, где достаточно только поставить данные прохождения, и вы сразу же получите результат. Затем эти данные можно слегка "подергать", чтобы увидеть, сколь сильно влияет на окончательный результат изменения того или иного параметра. А, вообще, общая картина такова:

Вот и все введение. Обсудить все это дело можно на форумной ветке ГУголка: Таблица рекордов - кто круче?
Далее идет текст с форума
http://www.hommportal.com/tavern/viewtopic.php?t=9

 


Сэр Рафаэль сообщил (дословно)

Author: Rafael
Date: 06-04-02 13:23

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

  1. Time - считается из базовой сложности карты и сложности текущего сценария. На первом дне дается максимум очков. Например, на той же безземельной карте это 750, затем за каждый день вычитается 1 процент.
    Этот пункт меня больше всего сбивает с толку. Во-первых, на некоторых картах уже на второй день идет убавление очков, на некоторых первую неделю дается максимум. Различия я находил только в степени раскрытия карты, т.е. в степени зачистки карты, убиения монстров, выполнения квестов и т.д.
    Для этого пункта нужна довольно большая выборка результатов, поэтому буду очень признателен за предоставление информации. (см. следующий постинг, там этот пункт разбирается).
  2. Battle - тут я даже не разбирался, т.к. в офф-лайн турнире это пункт всегда обнуляется, по крайней мере, до исправления 3DO. Единственное, что могу сказать, то что на очки за битвы влияет полученный опыт в битве и получение нового уровня.
  3. Army - оценивается конечное количество армии. Все войска оцениваются по их рыночной стоимости, так как если бы Вы их купили в замке, только без учета затрат всех ресурсов кроме денег. Например, черный дракон оценивается в 8000 баллов, имп в 18. Затем получившиеся баллы за войска делятся на 1000, в итоге получаем очки за армию
  4. Golg - все оставшиеся ресурсы переводятся в деньги по цене внешнего рынка. Получившаяся сумма делится на 500, получаем очки за ресурсы.
  5. Quest - так же как и с пунктом 2 даже не разбирался, т.к. при загрузке магистратом очки обнулятся.
  6. Artifacts - оцениваются оставшиеся артифакты по следующей шкале:
    treasure - 10 очков
    minor - 20
    major - 40
    relic - 80
  7. Exploration - оценивается степень открытости карты. За 100% открытости дается 12 очков, при меньшей открытости очки даются пропорционально.
  8. Hero - оценивается уровень максимально прокачанного героя. За каждый уровень после 3-го дается по 10 очков.

на пункты Army, Gold, Artifacts, Hero накладывается ограничение: 24, 48, 76, 76 соответственно. На первых двух неделях пункты Artifacts и Hero имеют ограничение в 76 очков, дальше это ограничение снижается. Например? на 3-й неделе это уже 74 очка.

Отдельное спасибо за предоставленную выборку результатов сэра Alan Prost, сэра Mic, сэра Hoher и сэра Melkor (в нынешнем воплощении Amun).

Для тех, кто считает что вышеприведенный алгоритм подсчета очков не является формулой, а является только критерием привожу подробную формулу. Может быть кто-нибудь запрограммирует ее в Excel. (уже запрограммировано, взять можно здесь).

Сразу предупреждаю, что формула приведена для уровня Champion и без учета Battle и Quest

ponts=
int(level_map*level_game*(100-last_days)/100)+ //time
(min(int(cost_units_in_gold/1000);24))+ //army
(min(int((gold+resourses_in_gold)/500);48))+ //gold
(min((treasures*10+minors*20+majors*40+relics*80);76-last_weeks))+ //artefacts
int(12*map_exploration_in_percent/100)+ //exploration
((level_best_hero-3)*10)+ //hero
(min(quantity_towns*30;120)) //towns

Буду признателен за дополнения и исправление данной информации. Как говорится "в споре рождается истина".

Второй этап. Изложенное Рафаэлем толкнуло меня (Мелькора/Амуна) заняться вплотную этим вопросом. Были исправлены недочеты в материале Рафаэля и переработаны некоторые моменты.. Итогом стал доклад на

http://www.hommportal.com/tavern/viewtopic.php?t=9

Дословно

Спешу обрадовать всех, кто заинтересован в формуле подсчета очков по игре HoMM4, я подобрался вплотную к раскрытию параметра очков за тайм (Time). Начисление очков за прочие параметры дал ранее сэр Рафаэль..

Окончательной и единой автоматической формулы расчета очков Time пока нет, есть лист эксела-полуавтомат.

Итак, сначала пара выводов – почти все составляющие очков имеют ограничения (типа 24, 48, 76), очки за тайм такого ограничения не имеют.. Перефразируя Рафа, имеем

Points = Time + Extens, где Extens – это суммарные прочие параметры…Получается, что при максимально хорошей игре у всех игроков Extense будет почти одинаков. К примеру, Army=24, Gold=48, Artifact=76, Hero=76, Towns=120, Explore=11 ..все вместе = 355. Отличия будут только в засветке карты и очков за битвы, а они незначительны.

Теперь подойду к параметру Time. Он рассчитывается, исходя из трех главных параметров, а именно Сложность, Сложность карты, текущая неделя - все эти параметры так и идут по порядку в финале сценария. Неделю каждый знает, Сложность карты задана автором карты и может иметь 5 значений novice=50 intermediate=75 advanced=100 expert=125 champion=150, а Сложность берется из маленькой таблички (в листе эксела она приведена), она известна до начала игры – суть там вот в чем: в строчках размер карты (S, M, L, XL) в столбцах сложность игры (у нас всегда Champion), на их пересечении стоит цифра – она и есть Сложность.

Теперь как ведет себя параметр Time – у него есть так называемая стабильная площадка, соответствует норме, т.е все коэф=0, и эти очки начисляются довольно продолжительное время (несколько недель подряд).. Если кто выходит по времени из нормы то появляется отрицательный коэф., очков соответственно получит меньше. Кто проходит быстро, получает положительный коэф. И таких коэффициентов три: 5 (самый быстрый проход - всех больше очков за тайм), 2 и 1, далее идет норма..

Конкретно поясню формулу далее.. а сейчас закончу вывод. ЕСЛИ ЗА ОСНОВУ турнира брать расчет очков – то у многих эти очки будут совпадать с разницей в пределах десятка, ибо супер проход (k=5) – довольно проблематичен, остальные и особенно норма – идут неделями.. те ДНИ НЕ УЧИТЫВАЮТСЯ, считаются только недели с момента наступления оной. И значит к примеру, что 8 день (начало 2 недели) равен 14 дню (конец 2 недели).. ПОЭТОМУ ГЛАВНЫМ КРИТЕРИЕМ ПРОХОДА могут быть только ДНИ, а Очки будут второстепенным параметром.

А сейчас конкретный расчет: к примеру, карта dungeon (малая), ее сложность map=75, при игре на уровне Champion Сложность level= 700 (подтверждение этому получите в финале сценария). Очки, соответствующие норме, считаются очень просто – по экселу – ОТБР(level*map/100) =  700*75/100=525: столько очков дают начиная с 7 и заканчивая 16 неделями (все недели здесь и далее указаны для данной карты). К примеру, мы прошли супер быстро – то есть уложились в 2 недели, получим 712 очков, к=5, формула такая ОТБР(level*map/100 + map*k/2) = 700*75/100 + 75*5/2 = 712. Если мы прошли на 3 или 4 неделях то к=2, формула та же, если на 5-6 недели, то к=1. Начиная с 7 недели, начинается норма в 525 очков. Если мы проходим очень долго, то вводится понижающий коэффициент к=2,86 (для dungeon’a). Прошли на 17-18 неделе (первый цикл торможения t=1) формула такова: ОТБР(level*map/100 – map*t / k). Далее каждые две недели увеличивают t на единицу. То есть, 19-20 неделя t=2, 21-22 неделя t=3 и так далее…

Вот собственно и все… Как видите, все довольно просто.. по формуле – есть основа (норма), три плюсовых довеска, и куча минусовых.

Окончательный вариант в экселе выйдет после того, как будут проанализированы все варианты, их довольно много.. 4 размера карты* 5 уровней карты * 5 уровней игры = 100 вариантов. Для турнира меньше – всего 20 вариантов.

Спасибо всем, кто отозвался и предоставил мне статистические данные,

С уважением, Мелькор (КоН).. не утративший в обличии тигра Амуна навыков астрономии..

Этап 3. Последнее на данный момент времени сообщение от меня (Мелькора)

Прошла неделя с момента моего первого доклада по расчету очков для HMM4. На основе собранной статистики и анализа данных была выведена формула по параметру Time. Теперь основная работа завершена, определились недели, соответствующие очкам. Я аппроксимировал итог на все карты и сделал общую формулу. Теперь она просто нуждается в тестировании. Замечу, что моя формула может отличаться от зашитой в игре (я ее не знаю), но дает такой же результат.

Напомню, все карты условно разбиваем на классы, буквой обозначаем размер карты (S-M-L-XL), цифрой сложность карты (50-150). К примеру Занфас - это XL75.

Очки понижаются ступенчато в зависимости от текущей недели. Начиная с наибольших очков, различаем 4 ступени (1 – лучшая, 2, 3, 4 – норма), далее идут понижающие коэф-ты. (я их пока подробно не рассматривал, ввиду того, что это явно плохие результаты).

Норма (4 ступень) обладает особенностью, что она длится ровно 5 циклов. 1, 2, 3 ступени длятся ровно по 1 циклу каждая.. В цикле может быть 1-6 недель.

Цикл S-класса=1 недели, M-класса=2 недели, L-класса=4 недели, XL–класса=6 недель

Итого имеем табличку:

Ступени / коэф

Недели S-класс

Недели M-класс

Недели L-класс

Недели X-класс

1 / 5

1

1-2

1-4

1-6

2 / 2

2

3-4

5-8

7-12

3 / 1

3

5-6

9-12

13-18

4 / 0

4-8

7-16

13-32

19-48

 Выводы делайте сами – это не трудно.

Формула

Points= ОТБР(level*map/100 + map*k/2), где level – сложность, map – уровень карты, к –коэф. ступени).

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

P.S. Буду признателен, если кто-нибудь что-нибудь добавит к этому, или заметит какие-либо нюансы.