Всем привет.
Нам нужен опытный разработчик с хорошим знанием математики, знакомый с быстрыми движениями и экстраполяцией в онлайн играх.
Мы пробовали использовать готовые решения, LitenetLib/Mirror и синхронизацию transform из примеров и библиотек, они отстают на высоких скоростях на пару Unity метров и поэтому не подходят нам.
В проекте используется UDPClient, необходимо проконсультировать по решению проблемы с экстраполяцией и компенсацией лагов.
В игре есть движение по оси Z, оно всегда направлено в одну сторону, нужно свести к минимуму дергания и откидывания.
Как сейчас работает экстраполяция: оба клиента передают серверное время (они получают его до старта гонки с минимальной задержкой) и значение координаты Z. Затем положение высчитывается по формуле
b + (a - a0) / (a1 - a0) * (b1 - b0)
Где a - время, b - координата z. Постфиксы 1 и 0 - соответственно информация текущая и прошлая.
Возможно код нужно улучшить, добавить какие-то условия. UDP работает в дефолтном режиме (потеря пакетов, дубли и т.п.)
Как сейчас работает (клиент играет против себя, машина позади дублирует положение) :
Клиент и сервер находятся на одной машине
https://gfycat.com/boringassuredekaltadeta Клиент и сервер находятся в ближних городах
https://gfycat.com/harmoniouselasticeuropeanpoleca...
Клиент играет с другим клиентом(дальний город), сервер находится ближе к первому клиенту.
https://gfycat.com/ru/anxiousuniformlamprey Пишите в личку кто сможет помочь 🙏🏼