Django / GAE中基于浏览器的策略游戏。模特建议?

时间:2010-10-28 17:05:24

标签: google-app-engine django-models django-admin app-engine-patch

我正在Google App Engine上使用app-engine-patch在Django中创建一个转弯和基于文本的策略游戏。简化的概念是,每个玩家可以构建几个不同的单位和建筑物,以提高他们的基础并与其他玩家争夺积分。

我的问题涉及Django模型的设计,在我看来,具有不同攻击力,生命等的建筑物和单位应该是他们自己的模型,如下:

class Unit(db.Model):
    name = db.StringProperty()
    type = db.ReferenceProperty(UnitType)
    targets = KeyListProperty(UnitType)
    attack = db.IntegerProperty()
    life = db.IntegerProperty()
    price = db.IntegerProperty()

我的问题是如何最简单地设置特定单位/建筑物的玩家数量。作为一个例子,玩家应该可以购买15架飞机。

然后,我可以将“飞机”设置为播放器模型中的IntegerProperty,并在获得攻击力和飞机寿命时使用单位名称作为标识符。然而,这不是一个非常动态的设计,因为玩家模型不知道单位“飞机”是否实际存在。我希望玩家模型能够在某种程度上反映现有的单元/建筑模型。

这是我第一次尝试基于网络的游戏,所以我可能完全偏离轨道,是否有人对此有所了解?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

如何从Unit类派生?

class Airplane(Unit):
    owner = db.ReferenceProperty(User)

这样,根据documentation

,您的User类会自动获取airplane_set集合(确实是查询)

修改

或者你可以像这样实现Airplane类:

class Airplane(db.Model):
    unit = ReferenceProperty(Unit)
    amount = IntegerProperty()
    user = db.ReferenceProperty(User)