Проблема с появлением снарядов в Unity Networking Top-Down Shooter
Я работаю над прототипом многопользовательской игры и использую сеть Mirror в качестве сетевой библиотеки, которая является повторной реализацией UNet, поскольку она устарела.
У меня проблема не только в Unity или UNet/Mirror, но и в многопользовательской сети в целом.
Таким образом, я создаю шутер с двумя палками сверху вниз. Левый джойстик для перемещения, правый джойстик для вращения и триггер для быстрой стрельбы из оружия. Пули - это движущиеся объекты, а не лучи. Рабочий процесс (который считается идеальным для сети Unity) заключается в том, что клиент выполняет ввод и отправляет команду на сервер, который после получения команды порождает пулю на основе сборного файла.
Вот в чем проблема - если игрок движется во время стрельбы, он визуально видит пули, выходящие из своих предыдущих местоположений - поскольку движение является авторитетным для клиента (и, следовательно, мгновенным), но появление пули происходит на сервере.
Я бы предположил, что большинство игр (особенно с лучевыми пулями) могут иметь различное поведение между клиентом и сервером визуально, но поскольку это игра с видом сверху, если бы я обрабатывал порождение на клиенте и сервере по-разному, тогда это привело бы пулям, которые визуально выглядят так, как будто они попадают, но на самом деле не попадают. Поскольку это игра с видом сверху вниз, где все можно увидеть с высоты птичьего полета, такие вещи, как медленные снаряды, отсутствующие на клиенте, будут плохо восприниматься игроком.
Кто-нибудь еще нашел чистое решение для этого типа проблемы? Спасибо за помощь заранее.
РЕДАКТИРОВАТЬ: Я тестирую наивное решение, в котором стреляющий клиент порождает локальную пулю. После того, как сервер отправляет пулю обратно этому локальному клиенту, клиент скрывает пулю сервера и медленно направляет пулю клиента к ее реальной позиции. Это гораздо лучше влияет на отзывчивость клиентов, но, очевидно, остаются некоторые из тех же проблем (не говоря уже о изгибах пуль:))