Назад | Перейти на главную страницу

Как отслеживать firestore и запускать несколько игр одновременно с помощью движка приложения?

Мне определенно нравится Google, поэтому я использую Python и Flutter для создания игры для приложений на GCP. К сожалению, на пути я встретил несколько препятствий. Может быть, из-за того, что я всего лишь студент и у меня нет перспективы, я не могу найти ответ в Интернете. : (((

Изначально я использовал Firestore в качестве инструмента хранения данных в своем проекте и использовал облачные функции, чтобы сделать снимок пути к моей коллекции; он выполнит мой игровой код при срабатывании заданных мной условий. Поскольку каждая функция запускается отдельно облачной функцией, я могу запускать несколько игр одновременно.

Однако из-за 9-минутного ограничения облачных функций мне пришлось отказаться от использования облачных функций и перенести игровую программу в App Engine.

Я написал код для onsnapshot того же пути коллекции в Firestore, обратившись к официальным документам (таким как справочный сайт). Пример кода выглядит следующим образом:

def hello_firestore(last_match_key): 
    print('%s start!!!' % last_match_key)
    # TODO execute game. For about 13 minutes
    asyncio.run(Game_main(last_match_key).waitingForAllMatch())
    print('%s done!' % last_match_key)

# onsnapshot
def CustomizeOnSnap(col_snapshot, changes, read_time):
    for change in changes:
        if change.type.name == 'ADDED':
            last_match_key = u'{}'.format(change.document.id)
            return hello_firestore(last_match_key)
        else:
            break

if __name__ == '__main__':
    db.collection(u"PlayAndScore").on_snapshot(CustomizeOnSnap)

Для этого кода я могу успешно использовать onsnapshot для выполнения функции моей игры.

Однако, поскольку первая игра а все еще выполняется, оказывается, что я могу запускать только одну игру за раз и не могу выполнять несколько наборов одновременно (я могу контролировать вторую игру, но я не буду автоматически запускать вторую игру до конца первой игры). Как я могу решить проблему с невозможностью играть в несколько игр одновременно? Меня это беспокоит уже два месяца. :(

Справочный сайт:

  1. https://cloud.google.com/solutions/using-firebase-real-time-events-app-engine?hl=zh-tw
  2. https://firebase.google.com/docs/firestore/query-data/listen?hl=zh-CN