我目前正在开发一款用于教育目的的游戏。
游戏是一个小型聊天,每个玩家都有一个数字。这个数字的位置写在MySQL数据库中,每次玩家移动他的数字时都会更新。
目前,每60帧,游戏更新所有玩家位置并在游戏客户端中更改它们。数据库的性能不是我唯一关注的问题,因为这会导致游戏帧速率降至30-50 fps左右。
显然,这会为每位玩家生成1次位置更新查询(游戏以60fps运行)。我认为比我和一些朋友更大的用户,我可以想象这可能是一个问题。
标准租用的网络服务器是否能够处理此问题?我怎么能改善它? (它不能每秒不到一次更新位置)
我希望你有一些想法: - )
答案 0 :(得分:1)
这种数据在每次更改后都没有真正保存到数据库中,而是保存在某种内存上下文中,以便访问速度更快。您在数据库中存储的内容是变化较少的事情,例如每分钟一次。
您可能会做的是定期将当前内存中的上下文快照到数据库。也就是说每分钟你都会“坚持”游戏状态,这样如果引擎崩溃,它就可以从那一点恢复。如果您创建了正确的体系结构,那么定期调用方法并不困难。
某些事情可能会立即持续存在,以避免人们在发生的行动和该行动的记录永久性之间利用这种滞后。例如,任何具有游戏内货币的交易都将立即被记录,而内存缓存将不会被信任。
对于数量不足的玩家,如不到一百,你应该没有使用商品VPS的问题。要容纳更多玩家,你必须非常小心才能提高效率。
答案 1 :(得分:0)
您可以使用内存中的Java数据库,它允许您更频繁地更新播放器。然后,更改以较低的速率存储在MySQL数据库中。