如何有效地使用GAE数据存储区为iOS / Android回合制游戏

时间:2013-03-04 01:43:51

标签: google-app-engine nosql google-cloud-datastore

我决定在我的游戏中使用谷歌应用引擎。我将使用python数据存储来存储信息。

我需要存储有关每个用户和正在播放的游戏的信息。对于每个用户,我需要存储名称,ID,游戏赢取等。对于每个游戏,我需要存储player1 id,玩家2 id和一些其他游戏相关的字符串。

将游戏信息与用户关联的最佳方式是什么?我应该在用户数据库中拥有game1,game2,game3属性,还是有更有效的方法来执行此操作?

1 个答案:

答案 0 :(得分:4)

您可以在数据存储区中拥有“重复”属性,该属性提供值列表。在您的情况下,您可能会这样做:

class Game(ndb.Model);
    ...

class User(ndb.Model):
    games = ndb.KeyProperty(kind=Game, repeated=True)

在您的代码中,myUser.games将是游戏对象的键列表。

或者,如果您的游戏拥有固定数量的玩家,您可以在另一个方向建立关系:

class Game(ndb.Model):
    player1 = ndb.KeyProperty(kind=Player)
    player2 = ndb.KeyProperty(kind=Player)

然后为了获得玩家的所有游戏,你会查询类似Game.query(player1=myPlayer.key)的内容(同样适用于玩家2)。