mysql - 数据库设计问题 - 多人游戏

标签 mysql database database-design

我是数据库设计的新手。我正在尝试编写一个棋盘游戏(最多 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/

相关文章:

python - 值错误 : Must pass DataFrame with boolean values only

mysql - 存储动态复选框值的良好数据库结构是什么?

Mysql 可视化工具

sql - 如何使用 PostgreSQL 从表名中获取列属性查询?

php - 将流畅的聚合查询结果转换到 Laravel 中

python - 长度与数量

sql - 返回 sql 中属性共有的值的总和?

MySQL 查询 : Get 3 results where id equals this, 然后另一个 3,其中 id 等于该值

php - Mysqli 总是返回连接成功

sql-server - 单个 SQL Server 命名实例上的多个数据库