Если сервер потом не засчитывает удар или умение, которые экран игрока уже показал, результат, который игрок точно видел, отменяется.
Почему Эффект удара и анимация умения проигрываются до подтверждения сервера (опережающий фидбек) → Следствие Сервер заново проверяет дальность, позицию цели, кулдаун и ресурсы и отклоняет действие → На экране Кровь брызнула, а урона нет; анимация умения проиграна, а эффекта нет; запустился только кулдаун
Основной ответственный Команда разработки · Разработка клиента · Совместно Команда разработки · Разработка сервера
Команда разработки: задачи
Клиент: по результату сервера показывать только то, что требует подтверждения (цифры урона, смерть, награды), частые причины отказа проверять заранее, при отказе возвращать кулдаун и ресурсы и показывать причину. Сервер: давать запас на пинг при проверке дальности и позиции цели, отправлять причину в ответе с отказом, собирать долю отказов по умениям в метрики.
Цифры для ориентира
Отказ приходит с опозданием на пинг плюс ожидание тика после нажатия. При пинге 150 ms игрок около 0,2 с считает, что попал.
На графике
Высоко только у некоторых · доля отказов сервера по умениям (по диапазонам пинга)
Где смотреть
Собирать на сервере долю отказов по умениям и причины отказов (дальность, позиция цели, кулдаун, ресурсы) в разбивке по диапазонам RTT игроков. На клиенте записывать, сколько раз действия с опережающим фидбеком были отклонены
Подтверждает
Отказы сосредоточены на отдельных умениях и причинах «дальность» и «позиция цели», и с ростом пинга доля отказов растёт
Опровергает
Если причина отказа кулдаун или ресурсы и от пинга это не зависит, проверить, не расходятся ли значения данных (кулдаун, стоимость) у клиента и сервера. Если отказов нет, а анимация начинается только после ответа сервера, это причина «Отклик только после ответа сервера (модель запрос-ответ)»
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Подробнее
Опережающий фидбек лучше всего скрывает пинг. Но чем сильнее расходятся данные, по которым решают клиент и сервер (позиция противника, оставшиеся ресурсы), тем чаще отказы. Если собирать долю отказов по умениям в метрики, места, где проверки расходятся, легко найти.
Источники
Using Gameplay Abilities in Unreal EngineEpic Games Способности Local Predicted сразу выполняются на клиенте, но окончательно решает сервер, и он может отменить результат