Hask
#1
без гильдии
могущество: 2897

орк Каргрел
109 уровня
Небольшое исследование того, как городские параметры безопасность и транспорт влияют на скорость путешествия героев.
На истину в последней инстанции не претендует)


Пусть
1) транспорт равен s (1 при 100%, 0,9 при 90% и т.п.),
2) безопасность равна p (аналогично),
3) базовая скорость героя v = 0,1 клетки в ход (при Бродяге 5 уровня v = 0,12), и скорость героя с учётом транспорта v' = v*s.

Тогда для прохождения 1 клетки:
1) Среднее количество шагов k = 1/v' = 1/(v*s);
2) Среднее количество боёв m = n-k, где n - общее количество попыток сделать шаг (при успехе происходит передвижение, при неудаче атака монстра);
3) Среднее время: t = k*t1 + m*t2, где t1 - время одного передвижения, t2 - среднее время одного боя с учётом отдыха.

Количество шагов на клетку есть количество успехов k из n попыток с вероятностью успеха p в каждой попытке => биноминальное распределение.
В нашем случае k - среднее количество шагов, т.е. совпадает с математическим ожиданием.
Мат. ожидание для биноминального распределения M = np.
Подставляем:
k = np, откуда следует что n = k/p

Результат:
Количество шагов k на 1 клетку = 1/v' = 1/(v*s)
Среднее количество боёв на 1 клетку m = n-k = k/p-k = k*(1/p-1) = 1/(v*s) * (1/p-1) = (1/p-1)/(v*s)
Среднее время на 1 клетку t = k*t1 + m*t2 = k*t1 + k*(1/p-1)*t2 = k*(t1+(1/p-1)*t2) = k*(t1+t2/p-t2) = (t1+t2/p-t2)/(v*s)
Задача заключается в том, чтобы зная для клетки значения транспорта s и безопасности p, найти:
1) количество шагов k, необходимых на преодоление 1 клетки;
2) среднее количество боёв на этой клетке, которое будет равно n-k (общее количество попыток передвижения минус удавшееся количество попыток передвижения), обозначим его m;
3) среднее время на прохождение клетки t = k*t1 + m*t2, где t1 - время одного передвижения, t2 - среднее время одного боя с учётом отдыха.

Как известно, со стандартной скоростью и транспортом 100% герой проходит клетку за 10 ходов, т.е. здесь и далее стандартная скорость принимается равной 0,1 клетки в ход. Ход - это 2 сказочные минуты или 10 реальных секунд.(API возвращает скорость героя 0,3, однако в игре каждая клетка поделена на 3 части размером 0,333(3), и в пересчёте на целую клетку скорость составляет те же самые 0,1.)

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

Вероятность успешного передвижения равна показателю безопасности владеющего данной клеткой города. Обозначим её как p.

Скорость героя с учётом транспорта обозначим как v'. Напомню, v' = базовая скорость*транспорт, т.е. v*s. (При Бродяге 5 лвл базовая скорость = 0,12)

Соответственно, для перемещения на 1 клетку герою необходимо сделать 1/v' шагов, которые обозначим как k.
Так как герой при попытке шагнуть вперёд может либо передвинуться c вероятностью p, либо попасть в бой с вероятностью 1-p, ему необходимо сделать n попыток передвижения, из которых только k будут удачными, а в остальных он будет атакован.

Из вышесказанного напрямую вытекает математическая модель передвижения героя:
Проход одной клетки можно описать как k успешных шагов из n попыток, где вероятность успеха в каждой попытке равна p.
Эта формулировка отсылает нас к биноминальному распределению, которое будет использовано чуть ниже.
Значения k и p нам известны: k = 1/скорость, p = безопасность.
Таким образом, нам необходимо узнать, какое в среднем количество попыток n с вероятностью успеха p надо совершить, чтобы среднее количество успехов было равно k, т.е. чтобы герой преодолел одну клетку. Иначе говоря, для какого n при заданном p мат.ожидание будет равно k.
Для биноминального распределения мат.ожидание равно n*p.
Подставляем: k = np, откуда следует n=k/p.

В итоге получаем:

Количество шагов на 1 клетку: k = 1/v' = 1/(v*s)
Количество боёв на одну клетку: m = n-k = k/p-k = k*(1/p-1) = 1/(v*s)*(1/p-1) = (1/p-1)/(v*s)
Время, затрачиваемое на 1 клетку: t = k*время перемещения + m*среднее время боя с учётом отдыха = k*t1 + m*t2 = k*t1 + k(1/p-1)*t2 = k*(t1+t2/p-t2) = (t1+t2/p-t2)/(v*s)
Среднее время боя с учётом отдыха зависит от выбранных способностей, для моего героя оно составляет 2,5 минуты = 150 секунд = 15 сказочных ходов.
В целом по моим прикидкам для большинства героев это время может колебаться в пределах 13-18 ходов.


Это частные случаи для увеличения транспорта на 13.33% или безопасности на 2%. Приросты взяты из возможных параметров законов - за мысль спасибо Argo :) Для других сопоставимых случаев (6,7% - 1%, 3,3% - 0,5%) соотношение в целом сохраняется.

Транспорт
Каждая строка в таблице означает, что при увеличении транспорта на 13,33% время прохождения 1 клетки сократится на указанный процент.
Как пример, при увеличении транспорта с 120 до 133,33 время прохождения клетки уменьшится на 10%.
Безопасность предполагается неизменной.



Безопасность
Каждая строка в таблице означает, что при увеличении безопасности на 2% время прохождения 1 клетки сократится на указанный процент.
Как пример, при увеличении безопасности с 70 до 72 время прохождения клетки уменьшится на 8,01%.
Транспорт предполагается неизменным.




Сообщение изменено
Hamster
#2
без гильдии
могущество: 5163
длань судьбы
гоблин Джеаки
101 уровня
Добавлю, что скорость движения не по дорогам увеличивается в три раза.
А так результаты исследований совпадают :)



Сообщение изменено
Hamster
#3
без гильдии
могущество: 5163
длань судьбы
гоблин Джеаки
101 уровня
Да, и, кстати, не советую вводить магическое число 0.1, а использовать переменную скорость_героя.
Hamster
#4
без гильдии
могущество: 5163
длань судьбы
гоблин Джеаки
101 уровня
Сообщение удалено автором



Сообщение изменено
Argo
#5
[TN] Магистр
могущество: 30154
длань судьбы
мужчина Дориан
285 уровня
Браво! Снимаю шляпу. Превосходная работа, много пищи для размышлений. Ворону определённо стоит добавить эту тему в свой сборник полезной информации.
Грустный Ворон
#6
[LjUA] Магистр
могущество: 47938
модератор
эльф Наэр Крабан
144 уровня
Ворону определённо стоит добавить эту тему в свой сборник полезной информации.
как вкурю так и добавлю.
перед учебой занялся переработкой темы. сейчас проект заморожен, но и учеба сегодня кончилась. быть может сразу в новый вариант добавлю



Сообщение изменено
Hask
#7
без гильдии
могущество: 2897

орк Каргрел
109 уровня
Hamster
Да, и, кстати, не советую вводить магическое число 0.1, а использовать переменную скорость_героя.
Согласен, это я зря)
Подправил, обозначил базовую скорость как v и скорость с учётом транспорта как v'.
FailMan
#8
[-☀-] Боец
могущество: 1913
длань судьбы
эльф Sung-Ki
134 уровня
Спасибо, очень большую работу проделал!
Weirdei
#9
без гильдии
могущество: 675

дварф Чио
51 уровня
А есть где-то информация по параметру s, не совсем понятно сколько у какого транспорта. Вот у меня, например, Каурая кляча - Постоянный бонус к скорости героя. Это много или мало?
Hask
#10
без гильдии
могущество: 2897

орк Каргрел
109 уровня
s не относится к спутнику героя, это параметр транспорт города, в окрестностях которого сейчас идёт герой. Для каждой клетки известно, какому городу она принадлежит.

Бонусы спутника влияют на параметр v - скорость героя. Способность каурой клячи "скакун" увеличивает v в 1,1 раза без прокачки способности Ходок у героя и в 1,15 раза при полной прокачке Ходока.
В вашем случае c 1 уровнем ходока v = 0,1 * 1,11 = 0,111 и вы движетесь на 9,9% быстрее, чем двигались бы без спутника. Много это или мало - вопрос субъективный. При полной прокачке ходока движение с клячей будет быстрее на 13%.
Значения бонусов для клячи взяты из открытых исходников.
К слову, я не копал исходники на предмет того, что это исследование совпадает с реальностью)
Weirdei
#11
без гильдии
могущество: 675

дварф Чио
51 уровня
Hask
Ясно, спасибо.