我正在开发一个Gameserver,因为我必须存储每个玩家的进度,我有一个问题: 对我来说,最好的数据存储解决方案是什么?
一些事实: 目前,每个播放器都是我的MYsql-Database中的一行,具有唯一的ID和名称。 每个玩家都有一个世界。 每个世界都包含越来越多的区域(随着玩家向前移动)。 每个地区都包含一系列景观。 这就是问题所在。
我想尽可能简单地添加新景观,所以我有这个简单的概念: 我有一个接口landscape.java只包含一个名为doit的方法(String命令) 景观的每一个实现都在他们的doit方法中做了很多花哨的东西,而我不必更改任何代码。
现在我必须存储每个玩家的世界,这里有一些我想到的想法/选项
将所有东西存储在数据库中需要我为每个景观实现创建表。将是一个糟糕的解决方案imo
序列化是另一个想法,完美是因为我不必担心任何简单地投射到景观和罚款。但我有疑虑,我应该如何编辑数据,我更新类时要做什么,如何推出数据更改。
像Hibernate,JPA等框架(我对它们没有深入的了解,这对我的情况有帮助吗?)
编写我自己的文件格式,更改我的策略或其他想法?
最后可能有一些重要信息:
保存的数据必须可编辑
存储不是时间关键的,应该在正常时间完成
由于所有数据都缓存在内存中,我并不关心它是否快速,它更可能必须是可靠的
可以使用的是PostgreSQL / Mysql和Filesystem。
我在这个领域没有经验,所以如果我的方向不对,请给我一个暗示;)
答案 0 :(得分:2)
我没有看到任何暗示你应该选择一种方法而不是另一种方法的东西。
有些人会有偏好,我会随心所欲。
如果您要对数据进行序列化,我会使用文本序列化,这样可以在文本编辑器中轻松编辑它。例如XML,JSon,CSV。
答案 1 :(得分:1)
这一切听起来都很模糊,我只想选择一个解决方案并尝试一下。
确保您的代码充分抽象,以便您可以在以后使用新解决方案替换它。许多项目在其生命周期内(通过需求和规模变化)通过解决方案进行迁移,关键是尽量确保它尽可能减少中断。