All pastes #879585 Raw Edit

Anonymous

public text v1 · immutable
#879585 ·published 2008-01-29 17:40 UTC
rendered paste body
Задача: "умный" респаун, т.е. реcпаун, максимально удаленный от всех игроков на карте.


Имеем конечное количество респаун-точек. Вводим координаты XOY, и для каждого игрока на карте (в момент респауна) определяем координаты (x,y). Далее вводим функцию потенциала зависящую как f(r)=(k/r),  где k - некоторая вличина (не обязательно константа), r - расстояние от игрока до респаун-точки (r=sqrt((X-x)^2+(Y-y)^2), где координаты точки (X,Y), а игрока (x,y)). Затем высчитываем общий потенциал в каждой точке как сумму потенциалов каждого игрока. У той точки, где будет наименьший потенциал, производим возрождение, если такая точка будет не одна, выбираем из них случайно. 

P.S. Какова может быть польза от величины k? Чтобы максимально уберечь игрока от "плохого" респауна, можно вввести функцию силы игрока k=k(p), зависящую от количества вооружения, патронов, здоровья и брони. Тогда у точки рядом с сильным игроком потенциал будет выше, чем у точки, где рядом бегает игрок с начальным вооружением.

P.P.S. Так же неплохо добавить "Respawn Protection Time" ~2 секунд, для большей защиты вновь возрожденных игроков.