Firestore
Firestore - это база данных в реальном времени, она позволяет быстро и надежно хранить данные в Интернете, а также работает, если устройство отключено.
Note
Если вы не уверены что лучше использовать Firestore или Realtime Database, прочтите официальное сравнение.
Документы и коллекции
База данных Firestore упорядочена по документам и коллекциям. Документ содержит данные, а коллекция содержит документы. Документы также могут содержать коллекции, называемые вложенными коллекциями.
Преимущество коллекций в том, что они не требуют, чтобы вы загружали их полностью при доступе к ним. Например, если вы хотите сохранить для каждого пользователя структуру, содержащую его друзей, вы можете либо структурировать базу данных, поместив ее в документ, либо превращая его в подколлекцию (где каждый дочерний элемент - это документ). Если вы поместите его в документ, вы сделаете документ больше, и каждый раз, когда вы захотите взять какие-то данные из документа вы снова загрузили все данные только для одного поля, и вы также увеличиваете его чтобы получить другие данные из документа. Если вы поместите его как вспомогательную коллекцию, вы можете получить каждого друга список друзей индивидуально, и вы можете получать данные игрока, не собирая всех друзей каждый раз, когда вы это делаете.
Tip
Другое преимущество коллекций заключается в том, что они очень хорошо и быстро фильтруют / упорядочивают данные перед отправкой их игроку. К сожалению, GDevelop еще не поддерживает отправку запросов к коллекциям.
Для получения дополнительной информации о модели данных Firestore прочтите руководство по модели данных и руководство по структурированию данных.
Регулирование доступа
Возможно, вы не захотите позволять всем писать все. В противном случае каждый может изменять данные другого человека! Чтобы выбрать, кто и как может получать доступ, в Firebase есть система правил. Он взаимодействует с firebase аутентификацией, поэтому вы можете написать это правило, чтобы разрешить аутентифицированным игрокам получать доступ к базе данных:
У вас также может быть набор пользователей, и в каждом документе (названном в честь uid пользователя) есть их разрешения. Здесь, например, вы можете разрешить каждому пользователю с подтвержденным разрешением получить доступ к собственному документу в коллекции userdata, и каждый администратор для доступа к документам в коллекции globaldata:
Чтобы узнать подробнее, как писать правила, прочтите руководство по синтаксису и руководство по интеграции аутентификации.