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

    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 практически одинаковый, поэтому всё решает то, кто первый заметит противника (ну и плюс пинг).
    Ответ написан
    Комментировать