Если вы работаете в 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 , который поможет вам справиться с угловыми случаями, находясь в автономном режиме или если пользователь переключается между устройствами.