2

您对在 MMO 游戏中保存数据(例如角色统计数据、成就、物品)有何看法?显然,如果(当)服务器由于某种原因出现故障时,您希望尽可能少地丢失数据。

  • 每当有重要事情发生时保存角色?看起来神经兮兮的,性能方面?
  • 每隔 X 小时保存一次?导致几秒钟的冻结,但可能伴随着一个很好的“世界正在拯救”消息。
  • 也许每个角色都有一个保存计时器,您可以在其中将角色排队等待每隔一段时间保存一次,并且服务器在不忙时会在此队列上工作?

在这三个中,我认为最后一个是一个很好的解决方案,但我可能忽略了一些东西。但是你的想法是什么,“大男孩”是如何做到的?

4

4 回答 4

3

每当有重要事情发生时保存角色?看起来神经兮兮的,性能方面?

至少没有。与为这样的游戏必须完成的所有其他事情相比,这完全是微不足道的。任何体面的数据库引擎都可以处理。这就是他们的目的。

于 2011-01-28T21:16:09.897 回答
1

我会为我的数据库使用直写缓存。角色的大部分方面不会经常改变。那些这样做的,比如位置,已经需要一些相当繁重的工程来保持服务器和客户端之间的连贯性。

于 2011-01-28T20:53:42.910 回答
1

也许制作一种缓存服务器。游戏服务器将向缓存服务器发送读/写请求,缓存服务器将从数据库中写入/读取内容并发送回游戏服务器。这样,如果某些查询变得迟缓,它不会停止游戏服务器中的线程,如果服务器出现故障 - cahe 服务器仍将缓存数据并保存如果尚未保存。

于 2011-01-28T21:06:59.590 回答
0

我写了这个http://onemanmmo.com/?doubleentry,同时解决了如何记录微交易并保证它们在我的游戏的服务器崩溃中幸存下来。这篇文章是关于在 MySQL 之上使用复式记账数据库模式以及一些关于存储过程和安全性的信息。

于 2012-03-02T09:18:23.313 回答