В настоящее время я планирую 2D-игру для мобильных устройств, которую буду делать на C++ с помощью cocos2d-x. Игра будет пошаговой, и каждый ход будет иметь фазу, в которой будет происходить физическое моделирование. Он также будет кроссплатформенным.
Я новичок в многопользовательских сетях, и мне интересно, как лучше всего синхронизировать физику, поскольку Box2d ведет себя по-разному на разных устройствах.
Моделирование не обязательно должно происходить одновременно на каждом устройстве, но мне нужно, чтобы результаты были точно такими же. В идеале игроки смогут наблюдать на своем собственном устройстве ту же симуляцию физики (т. е. движение снаряда, отскок, столкновения) и результат, который происходит во время хода их противников всякий раз, когда они решают начать свой ход.
Как лучше всего это сделать? Из моего исследования я придумал несколько решений. Должен ли я написать какой-нибудь серверный код, на котором я буду принимать пользовательский ввод и обрабатывать всю физическую симуляцию, а затем отправлять результаты на каждое устройство? или есть способ, которым я мог бы обрабатывать симуляцию на одном устройстве и отправлять всю информацию на другое?
Кроме того, как именно отправить все, что происходит во время моделирования, через сеть, поскольку я не могу запустить моделирование на каждом устройстве и гарантировать одинаковые результаты? Могу ли я просто обновить сервер (или устройство) информацией о том, что происходит в течение каждых нескольких временных шагов?
Я бы также подумал о реализации собственной физики/обнаружения столкновений.