#networking #xna
#сеть #xna
Вопрос:
Я создаю 3D-игру для двух игроков, и мне нужно синхронизировать местоположение удаленного игрока. Только один объект, аватар, представляющий игрока, должен быть синхронизирован между двумя играми.
Я думал, что это будет довольно просто, но оказывается, что даже в локальной сети удаленный игрок перемещается с запинками при игре на двух разных машинах (два экземпляра игры на одной машине выглядят нормально).
В текущем подходе одна игра является сервером, в то время как другая действует как клиент, отправляя координаты в виде текстовых строк через выделенный порт. По сути, они передают друг другу координаты аватара каждый раз, когда аватар действительно перемещается.
Есть идеи, как решить проблемы, связанные с задержкой при отправке / получении координат? Требуется только для работы по локальной сети.
Комментарии:
1. Также ознакомьтесь с этим вопросом на сайте разработки игры: gamedev.stackexchange.com/questions/11606 /…
Ответ №1:
Серия статей Гленна «Гаффера» Фидлера по сетевому взаимодействию для игровых программистов — это в значительной степени руководство по основам сетевого программирования игр. У него также есть статья о сетевой физике.
Многие методы, описанные в этой серии статей (например, надежность), уже реализованы для вас в библиотеках типа Lidgren.
В основном методы, которые вы хотите использовать, — это интерполяция, экстраполяция и прогноз. В этой статье из вышеупомянутой серии есть хорошее объяснение этого, плюс сетевая физика. По сути, вы берете ненадежный, запаздывающий поток данных о местоположении и используете это для визуально правдоподобной оценки фактического пути объекта.