Тема. Спавн монстров: защита от ботов, численность монстров и зоны локаций.
Дата: 22.04.2021Версия сервера: 2.8
Пусть (M, x) – топологическое пространство с отмеченной точкой. Рассмотрим множество Ω(M, x) путей ϕ: [0, 1] → M, ϕ(0) = ϕ(1) = x, с компактно-открытой топологией (предбаза этой топологии – множества U(K, W) отображений, переводящих заданный компакт K ⊂ [0, 1] в заданное открытое множество W ⊂ M). Тогда Ω(M, x) называется пространством петель для (M, x).
В процессе игры бывает важным в локации находить точки появления (спавна) монстров. Эти точки можно считать вершинами графа V, соединенных ребрами E, таким образом, что ребра этого графа образуют замкнутый путь (когда начальная и конечная точка совпадают) - петлю. Таким образом, выходя из начальной вершины и идя по ребрам от точки к точке, мы прийдем в начало.
Каждое ребро E имеет определенную цену, состоящую из двух компонентов: E=v+p, где v - время убийства монстра, p - время перемещения от только что убитого до следующего монстра. Сама величина v сама может иметь несколько значений, потому что путь может состоять из разных монстров, время убийства которых разное. Величина p также имеет разные значения, потому что расстояние между разными точками спавна мобов не равны между собой. На следующем рисунке представлен путь Sum_i(P)=p1+p2+p3+p4+p5+p6+p7=39. В нашем случае vj - Dion Grizzly, а vk - Hobgoblin. Sum_j(vj)=60, a Sum_k(vk)=34. Таким образом, совокупный путь будет стоить 39 секунд, убийство гризли будет стоить 60 секунд, а убийство гоблинов 34 секунды. Цена этой петли будет составлять 133 секунды. Учитывая, что респавн глобально имеет 120 секунд (2 минуты), наш путь замыкается с определенным излишком (133-120=13 секунд). Мы успеваем завалить начального монстра, оббежать круг из других монстров, чтобы успеть к респавну в исходной точке. Получается компакт.
Ребра графа комбинируются с такой "ценой" времени, чтобы после убийства предпоследнего монстра вовремя появлялся тот, с которого начался путь (учитывая время p, необходимое, чтобы добежать до него). Пример простейшего цикла, состоящего из двух монстров, можно привести из Blazing Swamp, где с орков спойлятся Asofe & Oriharukon Ore. Если забежать в канаву, то вначале можно обнаружить два орка, находящихся друг от друга на таком расстоянии, что можно зациклится на них. Их можно убивать по очереди, бегая гномом-спойлером туда-сюда от одного к другому, даже без WW, спойля эти ресурсы. Там же и DMP можно подспойлить. Штука в том, что они всегда там появляются практически на всех серверах. Я так постоянно спойлю, и думаю, что этот процесс можно автоматизировать.
2. На многих ява-серверах мобы появляются в четко заданных точках, от которых эти мобы не могут отходить дальше, чем на определенную дистанцию. На официальных серверах монстр изначально спавнится не в самой точке, а где-то рядом, что не позволяет строить замкнутые пути. Но в то же время монстры жестко содержатся в заданной зоне локации, не "заплывая за буйки". Таким образом, локации делятся на области, где концентрация определенных монстров выше, чем в других областях. Так обстоит дело, скажем, с глазами Monster Eye (х2) возле диона, которые вместе с орками чемпионами концентрируются в этой области.
3. Я заметил, что в вашем сервере неправильно расквартированы мобы внутри самих локаций по зонам (на примере Dion Territory). К примеру, Dion Grizzly не должны находится здесь:
4. Также плотность заселения завышена в два раза. Это касается не только Dion Territory. То есть, монстров в мире больше в два раза, чем на официальном сервере.
5. Также проблема со случайными перемещениями покоящихся монстров - они слишком часто осуществляют передвижение, оказываясь в местах, где они обычно на PTS не встречаются.
Последнее редактирование модератором: