Внедрение игровых сетевых снарядов / выпуск концепции [закрыто]
Я пытаюсь найти какое-то решение распространенной проблемы с синхронизацией стрельбы снарядами и игровой сетью в целом, но я не уверен, что подойдет лучше всего.
Это боковой скроллер 2D-действия с несколькими снарядами (без оружия мгновенного попадания) и уже имеет большую часть инфраструктуры (C # XNA Framework и библиотека Lidgren).
В настоящее время я думаю, что архитектура будет смоделирована подобно движку источника полураспада. Клиенты будут интерполировать удаленные объекты ~ 100 мс или около 3 кадров в прошлом (фиксированный шаг 30 к / с) с использованием предсказания на стороне клиента. Сервер обладает полномочиями по моделированию. Думать о кодировании реализации с движением кажется нормальным, но когда дело доходит до снарядов, я не уверен, как лучше всего будет обеспечить лучший игровой процесс для всех игроков.
Клиент А
Клиент Б
сервер
Это также 2D боковой скроллер, так что все видно.
Кажется, это фундаментальный побочный эффект от использования интерполяции (что я считаю обязательным, но я открыт для предложений), поскольку даже без какой-либо задержки в сети существует внутренняя задержка интерполяции.
Я знаю, что это не может быть идеально, но есть ли еще или лучшие способы, которые я могу реализовать, чтобы запутать или улучшить это так, чтобы этоlooks хорошо / безупречно, или я упускаю что-то очевидное? Стрельба из оружияdoes У меня есть короткое время анимации, прежде чем снаряд будет фактически запущен, и я понимаю, что мы можем использовать это время, чтобы скрыть некоторую задержку, но оружие не является мгновенным, и в любом случае, как я смотрю на него, всегда будет такой большой разрыв с клиентом, пытающимся увернуться от снарядов, а другие клиенты видят, как их снаряды бьют их
Мы можем использовать компенсацию задержки на сервере для случаев, когда игроки перемещаются, но я не думаю, что это могло помочь в этой ситуации?
Если попадание снаряда приводит к изменению позиции клиента А, мне придется перематывать клиента А и воспроизводить его входные данные с новыми данными, или, если это не так, я должен удалить снаряд из воздуха (и, возможно, он умрет). Урод в любом случае :(.