6 октября 2017

Новые алгоритмы для сетевого кода попаданий

image

В недавнем обновлении мы ввели изменения, которые значительно улучшат синхронизацию снарядов между клиентом и сервером.​


War Thunder — это сетевая игра, где в одной сессии сражаются игроки, которые могут находиться на расстоянии тысяч километров друг от друга. Но игра устроена так, что 99,9% игрового времени вы этого даже не замечаете — взаимодействие с вашей техникой проходит так гладко, будто вы играете в одиночную игру.

Подробнее о сетевом коде War Thunder, который был специально написан для игры, вы можете почитать в этой статье. Сейчас же мы хотим рассказать вам о некотором улучшении в работе этого кода, которое относится к взаимодействию с противниками, и прежде всего касается самолетов, — как в чисто авиационных боях, так и авиации в совместных боях. 

В недавнем обновлении мы ввели изменения, которые значительно улучшат синхронизацию снарядов между клиентом и сервером, то есть непосредственно то самое взаимодействие с противниками. Расчёт траектории пуль и снарядов как на клиенте, так и на сервере начинается одновременно и проходит по одинаковой физической модели. Однако теперь он ещё и осуществляется синхронно, с одинаковой частотой дискретизации времени. На практике это означает, что теперь траектория пули на клиенте не просто близка к серверной, а в 99% случаев полностью совпадает с ней. А заодно, расчёт траектории полёта снарядов на клиенте отныне не зависит от производительности вашего компьютера.

В итоге, благодаря всем этим изменениям, количество случаев, когда вы видите попадание у себя на клиенте, но на сервере оно не происходит, сведено к тому абсолютному минимуму, который только возможен для нашей сетевой модели синхронизации. Следует иметь в виду, что нестабильное соединение (неустойчивый пинг, потеря пакетов) по-прежнему может приводить к проблемам, поскольку сервер всё же должен узнать о выстреле, а большие значения пинга также влияют на соответствие видимой клиенту картинки с тем, что происходит на сервере.

Заодно хотелось бы отметить, что до сих пор иногда встречается миф о том, что в компьютерной игре нельзя синхронизировать и просчитать все пули, выпущенные вооружением боевого самолёта. К реальности это не имеет никакого отношения — во всех наших военных проектах мы всегда рассчитываем на сервере все до одной пули вне зависимости от скорострельности и калибра орудия, будь это 7-мм пулемёт или 30-мм автоматическая пушка. Иногда в воздухе одновременно могут находиться несколько десятков тысяч пуль.

 

Комментарии (133)

Новость больше не доступна для комментирования