this post was submitted on 05 Jun 2024
187 points (100.0% liked)

Games

32701 readers
1361 users here now

Welcome to the largest gaming community on Lemmy! Discussion for all kinds of games. Video games, tabletop games, card games etc.

Weekly Threads:

What Are You Playing?

The Weekly Discussion Topic

Rules:

  1. Submissions have to be related to games

  2. No bigotry or harassment, be civil

  3. No excessive self-promotion

  4. Stay on-topic; no memes, funny videos, giveaways, reposts, or low-effort posts

  5. Mark Spoilers and NSFW

  6. No linking to piracy

More information about the community rules can be found here.

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 14 points 5 months ago (2 children)

Bold of you to assume the data in save files is packed binary and not something like JSON where { "x": 13872, "y": -17312, "z": -20170 } requires 40 bytes of storage.

[–] [email protected] 9 points 5 months ago (1 children)

Agreed. JSON solves:

  • the 'versioning' problem, where the data fields change after an update. That's a nightmare on packed binary; need to write so much code to handle it.
  • makes debugging persistence issues easy for developers
  • very fast libraries exist for reading and writing it
  • actually compresses pretty damn well; you can pass the compress + write to a background thread once you've done the fast serialisation, anyway.

For saving games, JSON+gzip is such a good combination that I'd probably never consider anything else.

[–] [email protected] 3 points 5 months ago

protobuf does all of these (well, except compression which you dont need)

[–] [email protected] 2 points 5 months ago (2 children)

That's excusable in My First Game™ but surely professional AAAAA game would never cut corners and code something so lazily, eh?

[–] [email protected] 5 points 5 months ago (1 children)

It's not really laziness. Storing as JSON solves or prevents a lot of problems you could run into with something bespoke and "optimally packed", you just have the tradeoff of needing more storage for it. Even then, the increased storage can be largely mitigated with compression. JSON compresses very well.

The problem is usually what they're storing, not how they're storing it. For example, The Witcher (first one) has ~20MB save files. These are mostly a bespoke packed binary format, but contain things like raw strings of descriptions in multiple localisations for items being carried, and complete descriptors of game quests. Things that should just be ID values that point to that data in the game files. It also leads with like... 13KB of zero-padding for some reason.

[–] [email protected] 1 points 5 months ago
[–] [email protected] 1 points 5 months ago

looking at you x3

and rimworld