Как уже упоминалось, это невозможно, поэтому я бы попробовал другой подход:
Если у вас нет выделенного сервера, выберите одного участвующего клиента, чтобы стать хостом (это можно перенести, если возникнет такая необходимость).
Хозяин теперь будет выполнять всю важную игровую логику, такую как обнаружение попаданий, управление ИИ, обработка инвентаря и т. Д., А также отслеживание времени (то есть диктование времени игры).
Другие клиенты будут просто пытаться синхронизироваться с хостом, пытаясь оценить или приблизить ожидаемое значение. Если задержка увеличивается или происходит потеря пакетов, все может стать нестабильным, но догнать его тривиально, по сути, просто ждать следующего обновления.
Большинство игр (особенно FPS) скрывают этот факт, выполняя свои собственные локальные вычисления для собственного движения игрока, выстрелов и т. Д., Чтобы избежать ощущения задержки игры. Все по-прежнему исправляется на основе данных сервера. Это может привести к некоторой путанице, например, вы видите, как стреляете по врагу, но в тот же момент вы падаете замертво (без удара врага), но это все же гораздо лучший подход, чем полная синхронизация.
Если вы по-прежнему настаиваете на синхронизации всего, возможно, вы захотите создать какой-то счетчик шагов или кадров, чтобы все клиенты обрабатывали только один логический шаг, затем синхронизировали свои данные и т. Д. Имейте в виду, что это может быть как пропускная способность интенсивный, а также медленный, поэтому я бы не советовал делать это, если у вас нет большого количества данных, иначе ваш игровой процесс основан на пошаговом режиме (например, игры в стиле Artillery / Worms).