Мне нужно синхронизировать движение нескольких игроков через Интернет, и я пытаюсь найти самый безопасный способ сделать это.
Игра основана на плитке, вы можете двигаться только в 4 направлениях, и каждый ход перемещает спрайт на 32 пикселя (со временем, конечно). Теперь, если я просто отправлю это действие перемещения на сервер, который будет транслировать его всем игрокам, пока нажата клавиша ходьбы, для продолжения ходьбы я должен принять следующую команду, отправить ее на сервер, и для всех клиентов, со временем, иначе движение не будет более плавным. Я видел это в других играх, и это может быть довольно быстро, даже без задержки. Поэтому мне интересно, если это даже жизнеспособный вариант. Хотя это кажется очень хорошим методом для одиночной игры, поскольку он прост, понятен (достаточно просто выполнить следующее действие по перемещению во времени и добавить его в список), и вы можете легко добавить движение мыши (щелкнув мышью по некоторому элементу), чтобы добавить путь к очереди, которая шла.
Другая вещь, которая пришла мне в голову, это отправка информации о том, что кто-то начал двигаться в каком-то направлении, и снова, как только он остановился или изменил направление, вместе с позицией, чтобы спрайт появился в правильном положении, или, скорее, так положение может быть исправлено, если оно неверно. Это должно (надеюсь) создавать проблемы только в том случае, если кто-то действительно отстает, и в этом случае этого следовало ожидать. Чтобы это сработало, мне понадобится какая-то очередь, в которой сохраняются входящие изменения направления и прочее, поэтому спрайт знает, куда идти после того, как текущее движение к следующей плитке закончено. Это может на самом деле сработать, но звучит слишком сложно. Хотя это может быть единственный способ сделать это без риска заикания. Если на стороне клиента получено изменение остановки или направления, s сохраняются в очереди, и символ продолжает двигаться к указанным координатам, прежде чем остановиться или изменить направление. Если новая команда поступит слишком поздно, то, конечно, тоже будет заикаться ...
Я с трудом выбираю метод, и пока не могу найти примеров для этого. Моя главная проблема заключается в том, чтобы обеспечить плавное движение плитки, поэтому другие темы, касающиеся синхронизации движения на основе пикселей, не слишком помогают.
Каков «стандартный» способ сделать это?