Существует ли (формула ,уравнение)для расчета времени жизни игрока?

Допустим есть 3 игрока: a, b, c.

у игрока a:
скорострельность=700 выстрелов/мин.
урон=5 единиц.
здоровье=100 единиц.

У игрока b:
скорострельность=500 выстрелов/мин.
урон=9 единиц.
здоровье=100 единиц.

У игрока c:
скорострельность=1000 выстрелов/мин.
урон=3 единиц.
здоровье=80единиц.

Игрок (a) стреляет в игрока (b), и игрок (c) стреляет в игрока (a).

Вопрос: кто останется жив? Сколько у него останется здоровья? Кто умрет первым, вторым?
  • Вопрос задан
  • 581 просмотр
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Будем исходить из того, что серверный FPS равен 10. И все они начинают стрелять одновременно.

Тогда за кадр игрок (a) сделает 1.17 выстрелов или 5.83 урона.
А игрок (c), соответственно, сделает 1.67 выстрелов или 5 урона.

Очевидно, что игрок (a) наносит урон быстрее.
Таким образом игрок (a) за 18 кадров нанесёт урон 104.94, чтобы снести 100 здоровья игроку (b). Причем, 17 кадров не достаточно, потому что урон будет всего лишь 99.11, что меньше 100.
За те же 18 кадров игрок (с) нанесёт лишь 90 урона, и не успеет снести все 100 единиц здоровья игрока (a).

Не всё так просто, зависит от реализации.
Например, банально, если урон каждый кадр округляется в меньшую сторону, то у обоих урон за кадр будет равен 5.
Поэтому может получиться так, что все умрут одновременно (кроме игрока (c)).
Либо придётся учитывать, кто раньше стрелял, ведь мы предполагаем, что оба начали стрелять одновременно, но так редко случается в реальной игре. Так что в формулу, которую вы хотите получить, придется добавить разницу во времени начала стрельбы.
На сервере также может быть другой FPS, который обычно от 10 до 30, а иногда выходит за эти рамки, и другие правила округления, что внесёт свои правки.
Есть пинг, лаги, они тоже вносят свои коррективы, в зависимости от, повторюсь, архитектуры и реализации.

Далее, если у вас сложная механика и точность стрельбы падает при получении урона, то расчет сильно усложняется. Или если у всех разное оружие, которое имеет разный разброс при стрельбе. Или если оружие перегревается и меняет характеристики или просто выходит из строя (до того, как нанесёт 100 урона игроку). Может быть маленькая обойма и время на перезарядку и т.д. и т.п.

В общем, всё сложно в реальности. А в чистой математике можно, конечно, вывести формулу, но без прочих факторов она мало поможет. Например, в вашем примере DPS практически одинаковый, поэтому всё решает то, кто первый заметит противника (ну и плюс пинг).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы