Run Forrest Run! На чём основывается решение компа покинуть поле боя (сбежать)? Оказывается, главным фактором при принятии такого решения является ценность артефактов, которыми обладает герой компьютерного игрока, а решение о необходимости побега принимается всякий раз перед ходом каждого его отряда.
AI Artifact Values (Ценность артефактов с точки зрения компа) - Код: Выделить всё
+12 Ultimate Book 9000
+12 Ultimate Sword 22000
+12 Ultimate Cloak 18000
+12 Ultimate Wand 14000
+4 Arcane Necklace 6000
+2 Caster's Bracelet 4000
+2 Mage's Ring 4000
+3 Witch's Broach 5600
+1 Medal of Valor 1200
+1 Medal of Courage 1200
+1 Medal of Honor 1200
+1 Medal of Distinction 1200
–3 Fizbin of Misfortune –1200
+1 Thunder Mace 2000
+1 Armored Gauntlets 1800
+1 Defender Helm 1800
+1 Giant Flail 2000
+1 Ballista of Quickness 1000
+2 Stealth Shield 3600
+3 Dragon Sword 5600
+2 Power Axe 4000
+3 Divine Breastplate 5040
+2 Minor Scroll 2700
+3 Major Scroll 3900
+4 Superior Scroll 4950
+5 Foremost Scroll 5850
+1000 Endless Sack 7000
+750 Endless Bag 6000
+500 Endless Purse 4000
+24 Nomad Boots 4500
+12 Traveler's Boots 2250
+1 Lucky Rabbit's Foot 1200
+1 Golden Horseshoe 1200
+1 Gambler's Lucky Coin 1200
+1 Four-Leaf Clover 1200
+20 True Compass 3500
+40 Sailor's Astrolabe 1500
Герой компьютерного игрока никогда не сбежит, если суммарная ценность артефактов, которыми он обладает, меньше 1000. Однако, как видно из таблицы, единственный артефакт, чья ценность меньше 1000, – Fizbin of Misfortune (Символ Неудачи). Поэтому, если у компа есть хотя бы один полезный артефакт (и нет Символа Неудачи), то расслабляться не стоит: его герой может покинуть поле боя в любой момент!
На решение компа о побеге влияют несколько параметров:
1. Соотношение боевых мю-сил армии Вашего героя и армии героя компьютерного игрока (k = M[Opp] / M);
2. Суммарная ценность артефактов у героя компа (ArtValue);
3. Уровень мастерства игры компьютерного игрока (Diff);
4. Опыт (Experience) героя компа;
5. Является ли он инициатором сражения (нападает) или защищается.
Давайте пройдёмся по каждому пункту более подробно.
1. Боевая мю-сила Не буду останавливаться на строгом определении мю-силы: познакомиться с этим понятием можно в моей статье, посвящённой исследованию условий слива героев компьютерного игрока на нейтралах, под названием "Сказание о том, как компы нейтралов пробивают..."
Боевая мю-сила отличается от обычной лишь тем, что при её расчёте берётся модифицированное количество воинов в отряде: если отряд уже ходил в текущем раунде, модификатор количества воинов в отряде равен p = 1, если же нет – p = 1,2. Т.е. для любого отряда i
М(i) = [[p(i) * n(i)] * α(i) * (1 + k(i) * µ([p(i) * n(i)]))]Примечание. Боевая мю-сила отряда защитников при осаде увеличивается в 1,1 раза. В дальшейшем нас будет интересовать только отношение M[Opp] / M, где M[Opp] – боевая мю-сила оппонента компа (т.е. нашей армии), M – собственно боевая мю-сила компа.
2. Суммарная ценность артефактов героя компа Здесь всё просто: суммируем AI Artifact Values всех артефактов у героя компа.
3. Уровень мастерства игры компьютерного игрока (Глупый, Средний, Умный или Гений) Уровень мастерства игры компьютерного игрока (Diff) может быть:
Diff = 1 для Глупого компа;
Diff = 2 для Среднего компа;
Diff = 3 для Умного компа;
Diff = 4 для Гениального компа.
4. Опыт (Experience) героя компа Опыт влияет на расчёты только в том случае, если у героя компа его не менее 200000, что соответствует 25-му уровню.
Введём ключевое понятие
уровня опасности (W).
Уровень опасности учитывает четыре важных фактора:
1. Ценность артефактов W[Art] Увеличивает уровень опасности.
Чем выше суммарная ценность артефактов, которыми обладает герой компьютерного игрока, тем выше коэффициент опасности (компу "жалко" расставаться с артефактами).
2. Сила армии W[Army] Уменьшает уровень опасности.
Чем мощнее армия героя, тем он увереннее чувствует себя на поле боя.
3. Опыт W[Exp] Уменьшает уровень опасности.
Герои компа, достигнувшие заветной отметки в 200000 очков опыта, наглеют и расслабляются.
4. Уровень сложности W[Diff] Уменьшает уровень опасности.
Гениальный комп всегда бдителен. Более низкие уровни сложности дают поблажку игроку.
5. Право первого хода W[Att] Уменьшает уровень опасности.
Белые начинают и выигрывают. Комп считает себя в более выгодном положении, если нападает он, а не на него, что вполне разумно.
Итак, если суммарная ценность артефактов (ArtValue) компа меньше 1000, он никогда не сбежит. В противном случае рассчитывается уровень опасности W.
W = W[Art] – W[Army] – W[Exp] – W[Diff] – W[Att] 1. Ценность артефактов W[Art] W[Art] = 0,22 при ArtValue > 10000;
W[Art] = 0,21 при 5000 < ArtValue <= 10000;
W[Art] = 0,20 при 1000 <= ArtValue <= 5000.
На самом деле, к
базовому уровню опасности W[Init] (0,16) прибавляются значения W[Art] (0,06, 0,05 и 0,04 соответственно). Но зачем усложнять без необходимости?
Иными словами, существует четыре градации ценности артефактов компа:
1. Низкая (ArtValue < 1000);
2. Средняя (1000 <= ArtValue <= 5000);
3. Высокая (5000 < ArtValue <= 10000);
4. Очень высокая (ArtValue > 10000).
Далее, если ценность артефактов героя компа оказалась
средней,
высокой или
очень высокой, значение W изменяется в зависимости от текущей боевой мю-силы армии компа (при
низкой ценности артефактов герой компа будет драться до последнего):
2. Сила армии W[Army] W[Army] = [M / 20000] при M > 40000;
W[Army] = 0,08 при 30000 < M <= 40000;
W[Army] = 0,06 при 15000 < M <= 30000;
W[Army] = 0,04 при 5000 < M <= 15000;
W[Army] = 0,02 при 2500 < M <= 5000;
W[Army] = 0,00 при M <= 2500.
Как видно, при M > 40000 значение W[Army] > 2, что приводит к отрицательному уровню опасности W. Другими словами, пока боевая мю-сила армии компа превышает 40000, комп не сбежит. Скорее всего, это сделано для предотвращения преждевременного побега героя компа с большой армией (например, когда у героя компа всё ещё остаётся достаточно сильная армия, способная потрепать армию игрока без угрозы быть уничтоженной за один раунд). Однако, есть вероятность того, что верхнее условие содержит баг, ведь логично было бы продолжить последовательность 0,00; 0,02; ...; 0,08 значением 0,10, например, так: W[Army] = [M / 400000].
3. Опыт W[Exp] W[Exp] = 0,00 при Exp < 200000;
W[Exp] = 0,03 при Exp >= 200000.
4. Уровень сложности W[Diff] W[Diff] = 0,03 * (4 – Diff).
Подставляя различные уровни сложности (Diff), получаем, что W[Diff] равен:
0,00 для Гения;
0,03 для Умного компа;
0,06 для Среднего компа;
0,09 для Глупого компа.
5. Право первого хода W[Att] W[Att] = 0,06, если комп является инициатором сражения, т.е. нападающим (его армия располагается слева);
W[Att] = 0,00, если комп защищается (его армия располагается справа).
Результирующий уровень опасности W равен
W = W[Art] – W[Army] – W[Exp] – W[Diff] – W[Att] Итак, пусть k – отношение текущих боевых мю-сил армии Вашего героя и героя компьютерного игрока: k = M[Opp] / M, тогда положительное решение о побеге принимается, если выполняется следующее условие:
1 / (1 + 1,1k) <= W Заметьте, что левая часть данного неравенства тем меньше, чем больше отношение k = M[Opp] / M.
Простенький пример расчёта Уровень сложности компа – Умный.
Чернокнижник Виспер (0-0-3-2, без магии) с 1 драконом нападает на Ребекку (0-0-2-3, без магии) с 1 друидом. У Ребекки есть артефакт, дающий +1000 золота в день.
Так как скорость дракона меньше скорости друида, то Ребекка ходит первой. Перед ходом друида она должна принять решение о побеге. Так бежать или нет?
1. Ценность артефакта +1000 Endless Sack (ArtValue) составляет 7000, поэтому драться до последнего Ребекка точно не будет.
2. Далее, 5000 < 7000 <= 10000, поэтому W[Art] = 0,21.
3. Боевая мю-сила армии Ребекки, состоящей из одного друида, равна
M = [[1,2 * 1] * 1019 * (1 + 0,7 * µ([1,2 * 1]))] – 3 = [1019 * (1 – 0,7 * 0,14)] – 3 = 916.
Боевая мю-сила армии Виспера, состоящей из одного дракона, равна
M[Opp] = [[1,2 * 1] * 45258 * (1 + 1,0 * µ([1,2 * 1]))] – 3 = [45258 * (1 – 0,14)] – 3 = 38918.
W[Army] = 0, т.к. 916 <= 2500.
Тут же найдём k = M[Opp] / M:
k = 38918 / 916 = 42,4869.
1 / (1 + 1,1k) = 0,0209.
4. W[Exp] = 0, т.к. у Ребекки меньше 200000 очков опыта.
5. W[Diff] = 0,03 (Ребекка – Умная).
6. W[Att] = 0 (Ребекка защищается).
Тогда уровень опасности для Ребекки составит W = 0,21 – 0 – 0 – 0,03 – 0 = 0,18.
Проверяем условие побега:
1 / (1 + 1,1k) <= W
0,0209 <= 0,18
Условие выполняется. Ребекка бежит сразу же.