Внедрение игровых сетевых снарядов / выпуск концепции [закрыто]

Я пытаюсь найти какое-то решение распространенной проблемы с синхронизацией стрельбы снарядами и игровой сетью в целом, но я не уверен, что подойдет лучше всего.

Это боковой скроллер 2D-действия с несколькими снарядами (без оружия мгновенного попадания) и уже имеет большую часть инфраструктуры (C # XNA Framework и библиотека Lidgren).

В настоящее время я думаю, что архитектура будет смоделирована подобно движку источника полураспада. Клиенты будут интерполировать удаленные объекты ~ 100 мс или около 3 кадров в прошлом (фиксированный шаг 30 к / с) с использованием предсказания на стороне клиента. Сервер обладает полномочиями по моделированию. Думать о кодировании реализации с движением кажется нормальным, но когда дело доходит до снарядов, я не уверен, как лучше всего будет обеспечить лучший игровой процесс для всех игроков.


EXAMPLE PROBLEM:

Клиент А
Клиент Б
сервер

Client A and B are just standing facing each other. Client B starts to fire toward A and sends input to server as usual. Server detects fire input and starts to fire weapon in its simulation while relaying the event to client A. Client A receives the message but is still interpolating client B in the past (meanwhile the projectile is now coming toward A on the server and client Bs machine). Client A's rendering finally gets to the point where B shot the projectile and starts rendering that. Client A sees it and jumps, easily clearing it on his screen. However, the projectile hits him on the server and on client Bs point of view.

Это также 2D боковой скроллер, так что все видно.

Кажется, это фундаментальный побочный эффект от использования интерполяции (что я считаю обязательным, но я открыт для предложений), поскольку даже без какой-либо задержки в сети существует внутренняя задержка интерполяции.


QUESTION:

Я знаю, что это не может быть идеально, но есть ли еще или лучшие способы, которые я могу реализовать, чтобы запутать или улучшить это так, чтобы этоlooks хорошо / безупречно, или я упускаю что-то очевидное? Стрельба из оружияdoes У меня есть короткое время анимации, прежде чем снаряд будет фактически запущен, и я понимаю, что мы можем использовать это время, чтобы скрыть некоторую задержку, но оружие не является мгновенным, и в любом случае, как я смотрю на него, всегда будет такой большой разрыв с клиентом, пытающимся увернуться от снарядов, а другие клиенты видят, как их снаряды бьют их

Мы можем использовать компенсацию задержки на сервере для случаев, когда игроки перемещаются, но я не думаю, что это могло помочь в этой ситуации?

Если попадание снаряда приводит к изменению позиции клиента А, мне придется перематывать клиента А и воспроизводить его входные данные с новыми данными, или, если это не так, я должен удалить снаряд из воздуха (и, возможно, он умрет). Урод в любом случае :(.

Ответы на вопрос(1)

Ваш ответ на вопрос