Мне определенно нравится 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 для выполнения функции моей игры.
Однако, поскольку первая игра а все еще выполняется, оказывается, что я могу запускать только одну игру за раз и не могу выполнять несколько наборов одновременно (я могу контролировать вторую игру, но я не буду автоматически запускать вторую игру до конца первой игры). Как я могу решить проблему с невозможностью играть в несколько игр одновременно? Меня это беспокоит уже два месяца. :(
Справочный сайт: