2

我正在开发一个游戏服务器,因为我必须存储每个玩家的进度,所以我有一个问题:对于我的案例来说,最好的数据存储解决方案是什么?

一些事实:目前,每个玩家都是我的 MYsql 数据库中的一个行,具有唯一的 ID 和名称。每个玩家都有一个世界。每个世界都包含一组不断增长的区域(随着玩家前进)。每个区域都包含一组景观。问题来了。

我想尽可能简单地添加新的景观,所以我有一个简单的概念:我有一个界面 Landscape.java,只包含一个名为 doit(String command) 的方法,景观的每个实现都在他们的 doit 方法中做一些花哨的东西我不得不更改任何代码。

现在我必须存储每个玩家的世界,这是我想到的一些想法/选项

  • 将所有内容存储在数据库中需要我为景观的每个实现创建表。将是一个糟糕的解决方案

  • 序列化是另一个想法,非常完美,因为我不必担心任何简单地转换为横向和精细的事情。但我有疑问,我应该如何编辑数据,更新类时该怎么做,如何推出对数据的更改。

  • Hibernate、JPA 等框架(我对它们没有深入的了解,这对我的情况有帮助吗?)

  • 编写我自己的文件格式,改变我的策略或其他想法?

最后一些可能很重要的信息:

  • 保存的数据必须是可编辑的

  • 存储不是时间关键的,应该在正常时间完成

  • 由于所有数据都缓存在内存中,我并不真正关心它是否快速,它更可能必须是可靠的

  • 可以使用的是 PostgreSQL/Mysql 和文件系统。

我在这个领域没有经验,所以如果我走错了路,请给我提示;)

4

2 回答 2

2

我没有看到任何建议您应该选择一种方法而不是另一种方法。

有些人会有偏好,我会随你喜欢。

如果你要序列化你的数据,我会使用文本序列化,这样可以很容易地在文本编辑器中编辑它。例如 XML、JSON、CSV。

于 2012-08-08T11:38:18.457 回答
1

这一切听起来很模糊,我只会选择一种解决方案并尝试一下。

确保您的代码已从中充分抽象出来,以便您以后可以用新的解决方案替换它。许多项目在其生命周期中通过解决方案迁移(随着需求和规模的变化),关键是尝试并确保它对您造成的干扰尽可能小。

于 2012-08-08T11:42:05.723 回答