iOS Game Center GKScore контекст, как кодировать информацию?
Я делаю свою первую реализацию с Game Center. Я пытаюсь позволить игрокам бросать вызовы GKScore друг другу. Моя игра состоит из прохождения определенного количества уровней в случайном порядке. (Скажем, игра состоит из 9 уровней, выбранных случайным образом из 30 возможных.)
Когда выдается вызов, я должен иметь возможность указать, на каких уровнях играл сложный игрок, чтобы принимающий игрок мог играть на тех же уровнях, надеюсь, в том же порядке.
Я знаю, что могу включить GKScore.context : UInt64
который будет передан мне обратно, но мне трудно понять, как лучше всего закодировать информацию о моем уровне, чтобы передать ее, и я надеялся на некоторые указатели на примеры или другие решения / лучшие практики.
Я знаю, что могу использовать побитовые флаги для кодирования уровней, которые должны быть включены в 9-уровневую игру, но я не уверен, как я мог бы также включить порядок, если бы это сделал.
Я знаю, что могу использовать GKScore.context
чтобы сгенерировать случайный номер идентификатора, загрузите информацию об игре на мой сервер, а затем загрузите ее обратно с тем же идентификатором, но я действительно НЕ хочу добавлять серверный компонент в эту игру, которая должна работать полностью на устройстве. Я не хочу ни нагрузки на сервер, ни обслуживания кода сервера.
Какие еще варианты вы использовали для передачи информации о вызове с помощью GKScore.context
не полагаясь на серверную составляющую?
1 ответ
Сгенерируйте случайное значение, которое уместится в 64-битном формате. Используйте это, чтобы заполнить генератор случайных чисел и произвести любые номера уровней в любом порядке, который вам нужен. Сохраните семя как контекст. Игрок с вызовом: получите начальное число из контекстной информации и инициализируйте генератор случайных чисел тем же начальным значением. Вы получите ту же последовательность "случайных" значений и, следовательно, одинаковые номера уровней в том же порядке. Единственный сетевой материал будет через Game Center, когда ему нужно будет решить эту задачу.