Цитата:
Сообщение от undefined
Вот только скорость пересылки данных, может отличаться на порядки у разных юзеров. Единсвенный худо-бедно надежный способ держать всех синхронизорованными - считать все на сервере.
|
скорость пересылки не влияет на синхронность симуляции
Добавлено через 30 минут
Цитата:
Сообщение от caseyryan
Думается мне, что для динамичной игры, где действия пользователя могут опережать пинг, никакая детерминированная симуляция в принципе невозможна.
Чем-то придется жертвовать в любом случае
1) Идентичная картина = серверный просчет, и задержки на обработку
2) Быстрая обработка на клиенте = рассинхронизации
|
Все верно, есть три возможных требования:
1. динамика действий пользователя
2. количество изменяемых объектов
3. идентичность картинки
выберите любые два)
есть пять адекватных решения:
a. независимая симуляция ("телевизор" состояния с аппроксимацией объектов) подходит для шутеров, где малое количество объектов, идентичность картинки не важна, и динамика пересылки данных раз в 7-15 мс (Counter-Strike)
b. синхронная симуляция (детерминированная симуляция мира) подходит для стратегий, где большое количество объектов живущих своей жизнью, идентичная картинка, динамика пересылки данных раз в 250-500 мс (Age of Empires)
c. гибридная симуляция (детерминированная симуляция с аппроксимацией действий пользователя с оптимистичным выполнением и возможностью отката мира с пересимуляцией) подходит для кооперативных игр с большим количеством объектов живущих своей жизнью, большая динамика, немного другая картинка
d. авторитарный сервер подходит для игр с низкой динамикой и большим количеством объектов, например пошаговая игра
e. синхронная симуляция с масштабируемым tickrate, подходит для файтингов, где малое количество объектов с большой динамикой и важна полная синхронизация