【问题标题】:PHP Real Time Strategy Game Database Structure?PHP实时策略游戏数据库结构?
【发布时间】:2013-06-06 17:35:53
【问题描述】:

我正在尝试用 PHP 构建一个实时策略浏览器游戏,但是我正在尝试使游戏尽可能真实,这意味着将为每个用户分配单独的数据来存储,而一个单独的数据库则不会'我的想法不太好,因为我想存储有关用户及其“帝国”的所有信息,这可以使游戏更加逼真


这里有一个关于要存储多少数据的想法:

  • 人口:例如,每个公民都有自己的行来跟踪他的类型、技能、统计数据、任务等,因为“帝国”可能有几千个公民次( *) 几千个用户可能会导致单个表有点过载

  • 军队:例如,每个士兵都有自己的行来跟踪他的类型、技能、统计数据、分配等,并且因为军队 可能会变得有点大(*)可能会导致数千个用户 再次在单个表中有点过载

  • 建筑物:....同样的故事

  • 财富:....真正的帝国可以持有的每一盎司或货物都被追踪

  • 等。你明白了....


所以我的第一个想法是给每个用户一个唯一的 ID ex。 5b325475ef698183bbbcc5352c7f20f5... 并有一个用户文件夹,用于存储个人用户的 SQLite 数据库,其结构类似于:

/user_data
|--/5b325475ef698183bbbcc5352c7f20f5
|----/account.db
|----/buildings.db
|----/army.db
|----/population.db
|----/empire.db

还有一个 MySQL 数据库,用于存储前端的一般公共详细信息,这将是 sqlite 数据库中累积数据的结果

但后来我听说一个 sqlite 数据库在对其执行操作时被锁定,这对于多用户站点可能不是一个好的解决方案 此外,这样做的缺点是可能很难经常进行更改,因为您必须为每个用户更改每个数据库(仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)


我的第二个想法是再次使用唯一的用户 ID 为每个用户创建一个不同的 MySQL 数据库,但是我认为我最终会拥有太多的数据库连接和一个非常混乱的代码来维护并且再次缩小大小其中一个原因是,可能很难频繁地进行更改,因为您必须为每个用户更改每个数据库(同样仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)


如果有人遇到此类问题并找到了解决方案,请分享,或者上面发布的哪个想法可能最合适,记住这是一款浏览器游戏,玩家将花费大部分时间切换页面,从而导致大量的数据库交互(这就是为什么单个 MySQL 数据库可能不是一个好的解决方案)

感谢您的时间和耐心:D

编辑: 该应用程序将使用 Yii 框架构建,但如果需要,我将从头构建一个新的“框架”

【问题讨论】:

  • 既然这是一个老问题,我想问一下,你找到答案了吗?

标签: php real-time-strategy


【解决方案1】:

如果您想增加用户数量,每个用户一个数据库绝对是无稽之谈。想象一下,有 10000 人在玩您的游戏,您必须拥有数十台数据库服务器来处理所有这些,而您的成本肯定会爆炸式增长。

如果操作正确,关系数据库可以非常高效地处理数百万行数据。在继续您的项目之前,您应该熟悉数据库规范化的原则,否则您的方法将失败。

【讨论】:

  • 感谢您的有趣想法 :D 我将开始记录更多有关数据库优化的内容,也许会提出一个合理的解决方案
猜你喜欢
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2018-06-25
  • 2011-11-02
  • 1970-01-01
  • 2012-07-27
相关资源
最近更新 更多