Как я могу синхронизировать игровые данные, такие как драгоценные камни, монеты и уровни, открытые онлайн (платформа Unity) - PullRequest
0 голосов
/ 20 мая 2019

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

Я попробовалСервисы Google Play Games для этого, там я нашел таблицу лидеров и достижения, но я не нашел способ сохранить игровую статистику моего пользователя.

У меня нет решения.

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

1 Ответ

0 голосов
/ 20 мая 2019

Если вы работаете в Unity и ориентируетесь на Android и iOS, вы также можете заглянуть в Firebase. Вы можете хранить пользовательскую статистику в Базе данных реального времени , которая имеет довольно приятную интеграцию с Unity.

У меня нет хорошего образца для хранения расходных материалов и прогресса, но есть пример таблицы лидеров с открытым исходным кодом , который поможет вам начать с основами и даст вам хорошее представление о том, что форма кода будет выглядеть без фиксации (большая часть кода, относящегося к базе данных, находится в этом исходном файле ).

Я бы предложил структуру, которая выглядит примерно так:

user_list:

  • {user_id0}
    • монета
    • Драгоценные камни
    • уровень
  • {user_id1}
    • монета
    • камни
    • уровень

Вы можете сохранить его с помощью файла rules.json, который говорит что-то вроде:

{
  "rules": {
    "Users": {
      "$uid": {
        ".read": "auth != null && $uid == auth.uid",
        ".write": "auth != null && $uid == auth.uid"
      }
    }
  }
}

Вам нужно будет использовать Аутентификация Firebase , чтобы по-настоящему воспользоваться логикой правил, но она должна поддерживать большинство провайдеров аутентификации, которые вы хотите (включая вашу существующую работу в Google Play Games как а также игровой центр iOS). Вы можете присоединиться к своей существующей работе, войдя в Google Play Games или воспользовавшись услугами одного из нескольких провайдеров аутентификации.

Для моего собственного потока я люблю привязывать расходные обновления (монеты и драгоценные камни, вероятно, в вашем случае) непосредственно к слушателям обновлений, чтобы просто позволить кеширующей системе RTDB работать самостоятельно, используя ValueChanged слушателей. Обновление базы данных лучше всего выполнить с помощью вызова RunTransaction , который поможет вам справиться с угловыми случаями, находясь в автономном режиме или если пользователь переключается между устройствами.

...