google-app-engine - Django/GAE 中基于浏览器的策略游戏。型号建议?

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

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

我的问题涉及到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,并在获取飞机的攻击力和生命周期时使用单位名称作为标识符。然而,这不是一个非常动态的设计,因为玩家模型不知道单位“飞机”是否真的存在。我希望玩家模型以某种方式反射(reflect)现有的单元/建筑模型。

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

最佳答案

如何从 Unit 类派生?

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

那样的话,您的 User 类会根据 documentation 自动获得一个 airplane_set 集合(好吧,实际上是一个查询)

编辑

或者,您可以像这样实现一个 Airplane 类:

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

关于google-app-engine - Django/GAE 中基于浏览器的策略游戏。型号建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045344/

相关文章:

java - FileService 处理大文件时内存不足

java - 在两个 Google App Engine 实例之间传递数据([Integer + Double] 对列表)的最有效方法是什么?

django - 如何在 django 中从 QueryDict 创建对象?

django - 刷新单个应用程序 django 1.9

python - 如何使用 Django Admin 注册自定义表单

python - 如何将 django admin "view site"链接更改为自定义绝对 url

php - Yii Framework 和 Google App Engine 中的权限问题

python - 外键模型的django计数

django - 在Django中使用ForeignKey有什么优点?

android - Google App Engine : DuplicateFileException