2 bakТы что ли?
Цитата(Algor @ 23 May 2008, 12:06)
2. Алгоритм начисления опыта за битвы. Очевидно, что начисление опыта за бой, в виде суммы погубленных хит-пойнтов врага, не совсем корректно. Забить сотню чертей отрядом из 10 титанов далеко не то же самое что отрядом из 10 дварфов, и это должно отражаться на полученном игроком опыте за бой. Чтобы не уходить глубоко в оценку рисков и эффективности применения боевых средств, предлагаю СКОРРЕКТИРОВАТЬ получаемый опыт одним из следующих способов:
а) по сотношению суммы ХП нападающего к сумме ХП защищающегося
б) по сотношению уровней нападающего и защищающегося героев (для нейтралов уровень героя - 1)
в) прибавлять к очкам опыта сумму загубленны ХП своих воинов (за тяжелый бой опыта больше)
Я недавно придумал формулу для Русских Героев, сейчас скорректировал -- и вот она:
(Random [x..z] + d * ((d + r) * a - c) - L div(5*d)) * q * B = tIf t>=q then Experience = t else Experience = q
где
d -- уровень убитых существ,
r -- ранг убитых существ,
L -- уровень героя,
q -- количество убитых существ,
c -- уровень самого сильного существа в армии героя.
x и z -- два числа, одно больше, другое меньше числа Y на 25--50%. Число Y вычисляется по формуле, учитывающей атаку, защиту, скорость, урон (МАХ и MIN), интуицию, ловкость, скорость и включает в себя 50% ХП существа.
B -- бонусы за убийство сильного существа более слабыми (ниже уровнем).
Общий опыт равен сумме этих формул.
Перед боем происходит проверка (через Fight value каждого существа) на размеры армии и её общую силу (по FV). Силы армий делятся друг на друга и записываются в а1 и а2 соответственно. Если побеждает 1 армия, то а = а2 (т.е. 2 армия/1 армия), иначе а = а1.
B = 1 при одинаковых уровнях либо уровень убитых существ ниже уровня ваших существ,
1,1 -- если убитые выше на 1 уровень,
1,25 -- если на 2 уровня,
1,5 -- 3 уровня,
2 -- 4 уровня,
2,5 -- 5 уровней,
3,5 -- 6 уровней,
5 -- если разница в 7 и более уровней.
Вот пример использования этой формулы:
Возьмём Копейщиков. У них ХП 10, атака 4, защита 3, скорость 4, урон 2-3. Уровень нашего героя 20. У нас МАХ уровень существ 3. Пусть Y будет равным 10, а ранг 4. А приравняем к 1. Тогда получится следующее:
(Random [x..z] + d * (d + r - c) - L div(5*d)) * q * B =
(Random [8..13] + 1 * ((1 + 4) * 1 - 3) - 20 div5) * 70 = [420..770] Exp.
Аналогично и другие существа и уровни.
Формула универсальна и может быть применена где угодно в битве с любыми существами. L div(5*d) -- штраф за уровень героя, его в принципе можно убрать. Формулу можно подкорректировать, если она кажется немного корявой.