2014-02-13 5 views
1

Я создаю многопользовательскую игру, основанную на поворотах, используя сервисы google play. Базовая логика похожа на настольную игру, в которой игрок должен перевернуть кубики и получить количество шагов.Запросить случайное число serveride

Однако im сталкивается с проблемой. Правильно ли, что это число не может быть создано на стороне клиента из-за обмана? Если да, существует ли какой-либо возможный способ запросить случайное число из api и sync, что с другими игроками?

С уважением.

ответ

0

Создатель игры генерирует случайное семя, которое используется для инициализации экземпляра java.util.Random(long seed).

Это семя затем вставляется в gamedata, чтобы другие клиенты могли его увидеть и инициализировать свои собственные Random. При этом все клиенты будут генерировать одну и ту же последовательность бросков кубиков, а так как Random реализует Serializable, вы можете сериализовать ее между прогонами вашей программы.

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


Но ... Я думаю, что Google Play должны заботиться о безопасности стороне вещей, проверка подписи вашего исполняемого файла и блокирует измененные бинарные файлы, не смотрел на нее, но это будет иметь смысл, нет?

С уважением.

+0

По существу, по мнению пользователя3319531, использование одного и того же семпла для обоих игроков даст ту же последовательность «случайных» рулонов ... Я не уверен, что RNG работают таким образом. – lauriys

+0

От Javadoc: Если два экземпляра Random созданы с одним и тем же семенем, и для каждой из них производится одна и та же последовательность вызовов методов, они будут генерировать и возвращать идентичные последовательности чисел. – Olivaw

+0

чтение user3319531's anwser, это означает, что мне вообще не нужно об этом думать, и просто используйте обычное случайное число? – user3307493

Смежные вопросы