gpt4 book ai didi

java - MMO java引擎的概念设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:58 24 4
gpt4 key购买 nike

我们正在构建一个 HTML5 MMO,它将利用对用 Python 编写的 REST API 的 AJAX 调用来执行操作(购买、出售、构建、交易、发送、攻击)。

我们这个项目的第二部分是一个 Java 服务器,它经常用玩家统计信息更新数据库(由于性能原因,我们的服务器每 5 秒更新一次)

Update town SET "currency" = "currency" + "currency_rate"
//each player can own an average of 100 towns and
//we are benchmarking with 50k for right now

该查询将根据他们的汇率更新他们的货币。此查询需要 2.6 秒来将货币更新为 50k,但我们还有其他几个字段,金属、陶瓷、食品和人口。

问题:使用这种技术,我们只能让服务器至少每 3 秒进行一次计时。我们如何解决这个问题。您如何不断更新数千个条目?

我们的第二个解决方案:我们将大部分城镇加载到并发 HashMap 中,java 将使用它作为临时数据库并每分钟更新整个数据库。 (API 将是 Java 服务器)

最佳答案

n 秒更新整个数据库不是一个好主意。一般的 RDBMS(特别是 Postgres)不是为这种负载设计的。

仅在需要时尝试更新字段。像这样的东西:

  1. 用户想要查看黄金数量。
  2. 系统从数据库获取 last_gold_amountlast_gold_updated
  3. 系统计算current_gold_amount = last_gold_amount + interest_rate * (current_time - last_gold_updated)
  4. 系统将 current_gold_amount 存储为 last_gold_amount 并存储 last_updated
  5. 向用户显示current_gold_amount

可以对您拥有的任何“货币”执行类似的计算。

此外,只有当用户花费货币或更改利率以进一步降低 DB 的负载时,才能执行步骤 4。

此外,所有计算都可以隐藏在 Postgres 中的 VIEW 或一组存储过程中,这样您就可以通过简单的 SQL 查询获取/修改“货币”的数量。

关于java - MMO java引擎的概念设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com