В многопользовательской игре скорость - приоритет номер 1. Все, что так или иначе увеличивает накладные расходы, замедляет, требует загрузки или постоянно передает большие фрагменты данных, следует избегать любой ценой. должен оставаться на клиенте. Теперь клиент может загрузить мир и внедрить туда все, создать хороший gui и все это. Это не приведет к подключению к сети. Однако сервер должен знать четверть каждого трехмерного объекта (при условии, что вы используете трехмерный объект), поэтому fe:
PLAYER_A:
posX: 3,
posY: 3,
posZ: 4,
rotX: 30 °,
rotY: 60 °,
rotZ: 10 °
Чтобы избежать отправки 6 сообщений на сервер (который затем транслирует их другим игрокам ), мы изобрели четвертины (шестимерные объекты). Но я сомневаюсь, что java может использовать это из коробки, поэтому вы должны сами придумать решение. Вам также следует подумать о таких вещах, как «скорость вперед» и «скорость прыжка», так как это легче вычислить на машине клиента.
Теперь возьмите объект, как вы его называете, и отправьте его в server.
Теперь сервер знает, что «игрок a находится в xyz, смотрит на ab c».
Затем сервер передает это другим игрокам, которые, надеюсь, получат информацию вовремя (поэтому всегда старайтесь используя UDP и игнорируя потерю пакетов данных) и будет вычислять и анимировать это на своей стороне.
Если задержка достаточно мала (например, 20 мс), игроки будут испытывать это в «реальном времени» (хотя есть не в реальном времени)
Tl; dr: Всегда старайтесь отправлять как можно меньше на сервер, и пусть сервер будет транслировать это клиентам. Затем они могут «пересчитать» анимацию самостоятельно.
РЕДАКТИРОВАТЬ: Конечно, вам понадобится подпрограмма update (), которая периодически отправляет на сервер информацию об объектах мира, например, расположение деревьев et c. Хотя клиент может удалить эти сущности, когда они находятся вне поля зрения (и я ДЕЙСТВИТЕЛЬНО рекомендую вам это сделать), серверу все еще необходимо знать полный макет карты (то есть без текстур и прочего, это скоро станет действительно большим)