iOS Game Center GKScore контекст, как кодировать информацию?

Я делаю свою первую реализацию с Game Center. Я пытаюсь позволить игрокам бросать вызовы GKScore друг другу. Моя игра состоит из прохождения определенного количества уровней в случайном порядке. (Скажем, игра состоит из 9 уровней, выбранных случайным образом из 30 возможных.)

Когда выдается вызов, я должен иметь возможность указать, на каких уровнях играл сложный игрок, чтобы принимающий игрок мог играть на тех же уровнях, надеюсь, в том же порядке.

Я знаю, что могу включить GKScore.context : UInt64 который будет передан мне обратно, но мне трудно понять, как лучше всего закодировать информацию о моем уровне, чтобы передать ее, и я надеялся на некоторые указатели на примеры или другие решения / лучшие практики.

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

Я знаю, что могу использовать GKScore.contextчтобы сгенерировать случайный номер идентификатора, загрузите информацию об игре на мой сервер, а затем загрузите ее обратно с тем же идентификатором, но я действительно НЕ хочу добавлять серверный компонент в эту игру, которая должна работать полностью на устройстве. Я не хочу ни нагрузки на сервер, ни обслуживания кода сервера.

Какие еще варианты вы использовали для передачи информации о вызове с помощью GKScore.context не полагаясь на серверную составляющую?

1 ответ

Решение

Сгенерируйте случайное значение, которое уместится в 64-битном формате. Используйте это, чтобы заполнить генератор случайных чисел и произвести любые номера уровней в любом порядке, который вам нужен. Сохраните семя как контекст. Игрок с вызовом: получите начальное число из контекстной информации и инициализируйте генератор случайных чисел тем же начальным значением. Вы получите ту же последовательность "случайных" значений и, следовательно, одинаковые номера уровней в том же порядке. Единственный сетевой материал будет через Game Center, когда ему нужно будет решить эту задачу.

Другие вопросы по тегам