Я впроваджую багатокористувацький клон астероїдів, щоб дізнатися про архітектуру мережі клієнт / сервер в іграх. Я витратив час на читання публікацій GafferOnGames та Valve на своїх клієнтських / серверних технологіях. У мене проблеми з двома поняттями.
В даний час у мене є авторитетний ігровий сервер, який імітує фізику з box2d і розсилає клієнтам стан світу приблизно 20 разів на секунду. Кожен клієнт відслідковує останні декілька отриманих знімків та перескакує між двома станами, щоб згладити рух спрайтів. Однак це не так гладко. Він може бути певним на деякий час, потім трохи смикатися, потім повернутися до гладкого і т. Д. Я спробував і TCP, і UDP, обидва приблизно однакові. Будь-яка ідея, яка моя проблема може бути? (Примітка: я реалізував це спочатку для одного гравця, а спрайт-рух ідеально плавний при 60 кадрів в секунду, коли оновлено світ фізики лише 20 разів за секунду).
Для того, щоб вирішити першу проблему, я подумав, що, можливо, клієнт повинен запустити також імітацію box2d і просто оновити позиції своїх спрайтів, щоб вони відповідали моментальним знімкам сервера, коли вони не збігаються. Я думав, що це може бути більш гладким, оскільки реалізація мого одиночного гравця плавна. Це гарна ідея?
Навіть якщо це не вирішить вищевказану проблему, чи це необхідно для прогнозування на стороні клієнта? Наприклад, якщо гравець намагається перемістити свій корабель, то як вони дізнаються, чи вдаряться вони про астероїд, стіну чи вороже судно без фізичного моделювання? Здається, що їх корабель, здається, проходить через об'єкт, з яким він повинен зіткнутися, перш ніж вони отримають знімок з сервера, який говорить про те, що він потрапив у об’єкт.
Спасибі!