|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2010
Сообщений: 10
|
FPS / Таймеры / box2d синхронизация
привет, суть в следующем, есть мультиплеерная игра с box2d. весь расчет физики и отрисовки делается по таймеру. представьте башню из блоков и снаряд, и при одних и тех же параметрах выстрела, блоки падают по разному в разных браузерах и флэшплеерах, внимание вопрос, из за чего такое может быть и как с этим бороться?
|
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Никогда не делал многопользовательских игр с физикой, но вполне ожидаемо. Ошибки погрешности чисел с плавающей точкой у разных процессоров; пересчет физики, зависящий от фпс; рассинхронизация по времени (ну, это если у вас там динамика есть, типа раскачивающейся башни, что-нибудь такое). Да, вполне ожидаемо.
Я бы пожертвовал трафиком пользователей и считал физику только на сервере(если п2п, то пусть один из игроков будет ведущим), посылая клиенту. 100% синхронизации ну очень тяжело добиться на мой взгляд.
__________________
мой пустой блог |
|
|||||
Цитата:
Но так да, это единственный вариант при котором можно синхронизировать отображение результатов. И то будет полная лажа, так как даже после собственных действий игрок будет видеть обновления с задержкой. |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Ну, если п2п - то задержки будут не такими уж масштабными, и процессоры будут у клиентов греться.
Вообще, мне представляется, что наибольшие рассинхроны вызывает "пересчет физики, зависящий от фпс". Там, в box2d, помнится пытались стабилизировать фпс, ну, не фпс, а пересчет физики по таймеру, не знаю как сказать. В общем, там в событиях таймера чёрти-че понаписано, но все бестолку. Так вот можно попытаться синхронизировать эти события, отключив персчет физики по таймеру у "ведомого" и передавая ему некий "синхроимпульс" в котором бы передавался dt = current_time - t_prev; ведущего, чтобы синхронизировать пересчет физики. А тут что-то такое заумное сказал =) Не уверен, что меня поймут =)))
__________________
мой пустой блог |
|
|||||
И тут остаются проблемы:
Как решать кто ведущий, а кто ведомый? Можно предположить что, они поочередно менются ролями. Но как быть в случае, если игра не пошаговая? Получится фигня. Цитата:
|
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Ну, как правило в р2р играх народ старается подобрать себе партнера поближе, подбирая по минимальному пингу; никому не хочется играть со слоупоками. Так что p2p - это намного лучше, чем клиент-сервер, когда два пользователя, физически находятся, скажем, в Киеве, а пакеты летают на сервер, арендованный в Москве.
А насчет ведущий-ведомый... я сторонник простых решений и "не создавай проблемы, пока ее нет". Пусть кто создает комнату, тот пусть и будет "ведущим", что-нибудь в этом роде.
__________________
мой пустой блог |
|
|||||
Регистрация: Dec 2010
Сообщений: 10
|
ага, спасибо,буду пробовать с таймерами разбираться
|
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Цитата:
__________________
мой пустой блог |
Часовой пояс GMT +4, время: 06:31. |
|
« Предыдущая тема | Следующая тема » |
Теги |
box2d , fps , timer |
Опции темы | |
Опции просмотра | |
|
|