Пошаговая многопользовательская физическая сеть - PullRequest
5 голосов
/ 28 февраля 2012

В настоящее время я нахожусь в стадии планирования 2D-игры для мобильных устройств, которую я буду делать на C ++ с использованием cocos2d-x. Игра будет основана на поворотах, и каждый ход будет иметь фазу, в которой будут проходить физические симуляции. Он также будет кроссплатформенным.

Я новичок в многопользовательской сети, и мне интересно, как лучше будет синхронизировать физику, поскольку Box2d не ведет себя одинаково на разных устройствах.

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

Каков наилучший способ сделать это? Из моего исследования я придумал пару решений. Должен ли я написать некоторый серверный код, на котором я бы взял пользовательский ввод и обработал все физическое моделирование, а затем отправил результаты на каждое устройство? или есть способ, которым я мог бы управлять имитацией на одном устройстве и отправлять всю информацию на другое?

Кроме того, как именно можно отправлять все, что происходит во время симуляции, по сети, поскольку я не могу запустить симуляцию на каждом устройстве и получить одинаковые результаты? Буду ли я просто обновлять сервер (или устройство) информацией о том, что происходит в течение каждых нескольких интервалов времени?

Я бы также подумал о реализации своей собственной физики / обнаружения столкновений.

1 Ответ

0 голосов
/ 28 февраля 2012

Если разные устройства не могут запустить симуляцию и получить одинаковые результаты, это не так. Вы должны запустить сим в одном месте и распространять результаты.

На одном из устройств или на отдельном сервере? Будет ли значительно проще реализовать сим на отдельном сервере? Если так, то сделай это; если нет, то нет необходимости привлекать дополнительную машину.

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

...