Я создаю многопользовательскую игру в реальном времени, которая запускает один и тот же «физический» цикл на клиенте и сервере. Я использую рулевое поведение «странствие», которое является важным случайным движением. Клиент и сервер генерируют разные случайные числа при запуске алгоритмов блуждания.
Мне интересно, как я могу сохранять естественно случайное движение, но использую некоторую константу, которая гарантирует, что клиент и сервер придут к одному и тому же выводу.
Ответы:
Вы можете использовать случайное семя . Выберите одно и то же 32-битное значение на сервере и клиенте (или сервер может отправить его клиенту при запуске). Используйте его как семя для генератора случайных чисел. Вы можете отправить фактическое начальное число с сервера на клиент с обновлением состояния игры. Если вы не хотите отправлять его, вы должны быть уверены, что клиент и сервер генерируют одинаковое количество случайных чисел с помощью этого генератора случайных чисел.
Что вы должны знать, прежде чем решили не отправлять фактическое семя клиенту:
источник
Если и сервер, и клиент согласны с начальным числом, большинство алгоритмов рандомизации выдают одинаковые значения.
источник