我是数据库设计的新手。我正在尝试编写一个棋盘游戏(最多 4 个玩家),并试图想出一种相互交流 Action 的方法。 根据 stackoverflow 上的建议,我为此使用了一个数据库。
我的问题是——当玩家 A 下棋时,B、C 和 D 必须读取该棋步。所以 A 下棋的事实需要传达给 B、C 和 D。我正在这样做以下方式。请告诉我是否有更好的方法。在我看来,这一切似乎都是错误的,而且非常不稳定。
我有一个包含以下字段的表 -
gameId, userMove, flagA, flagB, flagC, flagD
因此,当 A 采取行动时,我写下其他内容 - (flagA=0, flagB=1, flagC=1, flagD=1)
当 B、C 或 D 读到 A 的移动时,它们会减少相应的标志。
除非所有标志都为 0,否则 A 不会更新表。
当其他人采取行动时也会发生同样的事情。
评论?为此必须有更好的方法。我在这里看到的错误 -
- 我循环选择直到 A 的所有标志都为 0
- 我循环选择直到相应用户的标志设置为读取移动。
这是我需要担心的大量服务器负载和客户端超时。
我希望我已经能够清楚地解释我的问题。如有需要,请提出问题。
感谢任何帮助。
编辑:游戏是基于网络的(在浏览器中运行),我使用 php 进行服务器端开发,所以我不能使用内存缓存,但如果可能的话我很乐意这样做。
谢谢, - 帕夫
最佳答案
如果您的游戏玩家将在单个游戏 session 期间与一个游戏服务器进行交互,看起来您可以将所有这些状态保存在内存中。
数据库非常适合持久存储数据,并保证原子性、一致性和完整性。但是,对于您所描述的时间状态,您似乎不需要任何这些功能。
关于mysql - 数据库设计问题 - 多人游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550280/