用于存储玩家保存的文件的好文件格式是什么?

发布于 2024-09-05 23:25:13 字数 142 浏览 5 评论 0原文

我正在用 Java 制作游戏,我需要一个好的文件格式来存储玩家保存的数据。

有什么建议吗?

如果需要,请随意在代码中给出示例。

编辑:这是一个服务器客户端游戏,因此保存的数据将位于服务器的计算机上。另外,我不想使用序列化。

I'm making a game in Java, and I need a good file format to store the player's saved data.

Any suggestions?

Feel free to give examples in code if you want.

EDIT: This is a server-client game, so the saved data will be on the server's machine. Also, I don't want to use Serialization.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

北城半夏 2024-09-12 23:25:13

XML

无需为其编写自己的解析器/编写器。

允许您以标准格式保存您可能拥有的任何数据结构,如果您需要“保护”文件,防止游戏玩家更改分数/进度/...,则 (不确定文件存储在哪里?或者这是否重要?)您可以通过加密算法传递 XML 或在将数据元素放入 XML 之前对其进行加密

XML

let's you save any data structure you may have in a standard format and you won't need to write your own parser/writer for it

if you need the files to be "secured" from gamers changing their scores/progress/... (not sure where the files are stored? or whether this matters?) you could pass the XML through an encryption algorithm or encrypt the data elements before putting them into the XML

じее 2024-09-12 23:25:13

到目前为止,所有答案似乎都是关于 XML,这不是一个坏格式,但是您可能会发现其他有用的选项,这应该会使您的启动时间更快:

Json:常见,并且比我接下来的两个建议存在的时间更长。

Thrift:Facebook 使用的内容。应该比 Json 快,支持的语言较少。

协议缓冲区:由 Google 使用。可能是最快的,而且也很容易扩展。

或者只是让您的类支持可序列化

All of the answers so far seem to be about XML, which isn't a bad format, but there are other options you might find useful, which should make your startup times faster:

Json: Common and has been around longer than my next two suggestions.

Thrift: What Facebook uses. Should be faster than Json, supported by less languages.

Protocol Buffers: Used by Google. Probably the fastest, and also easy to extend.

Or just make your classes support Serializable.

圈圈圆圆圈圈 2024-09-12 23:25:13

如果正如您所说,信息将保存在服务器上,那么它肯定应该保存在数据库中。典型的游戏协议是将用户信息存储在数据库中 - 当他们登录时将其拉入内存,当他们玩游戏并更新他们的“in”时,会延迟更新数据库以更改内存中的对象(保持游戏性能较高)内存”用户游戏状态对象。

不要因为从基于文件的存储开始会稍微容易一些而限制游戏的可扩展性。

If as you say, the information will be saved on the server it should definitely be in a database. The typical game protocol is store the user information in a database - pull it into memory when they login, with lazy updates to the db for changes to the object in memory (keeps game performance high) as they play the game and update their "in memory" user game state object.

Don't limit the scalability of your game by starting with file based storage just because it might be slightly easier.

岁月静好 2024-09-12 23:25:13

由于它是您的游戏,您可以自己定义文件格式。为了保存游戏的状态,直接序列化和存储就可以了。至于玩家保存的数据(可能是他的等级进度、游戏得分等),您可以使用 XML。

<?xml version="1.0"?>
<Game>
<player  id="01d">
     <name>
             John
      </name>
      <skill>
        Rookie
      </skill>
      <score>
       122
      </score>      
</player>
</Game>

当然,您可以对其进行加密以使其防黑客

Since its your game, you could define a file format yourself. For saving game's state directly serializing and storing will do. As for the players saved data (which could be his level progress, game score etc) you could use XML.

<?xml version="1.0"?>
<Game>
<player  id="01d">
     <name>
             John
      </name>
      <skill>
        Rookie
      </skill>
      <score>
       122
      </score>      
</player>
</Game>

Ofcourse you could encrypt it to make it hack-proof

怪异←思 2024-09-12 23:25:13

只需使用 SQLite 进行本地保存或使用服务器端数据库进行服务器端保存。当问题被提出时,这将是一个可能有点过分的很好的答案,并且与 XML 不同,它现在仍然是一个很好的答案。如果您的保存文件增长到超过 1 KB 并且不再可供用户编辑,请使用 sqlite。

Just use SQLite for local saves or a server-side database for server side saves. It would have been a good maybe-slightly-overkill answer when the question was asked, and unlike XML it still is a good answer now. If your save files ever grow above a kilobyte and stop being trivially user-editable, use sqlite.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文