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