Edit a few hours later: I just want to thank you all for a nice discussion of the topic, I certainly learned a lot about how things work in the background. Doesn’t change how I find it annoying but it makes it more understandable!


Just need to vent this into the great emptiness that is the internet. What is going on with providing proper save capabilities in games today? Is it really that hard to save the state the game is in, when I exit it? It seems to be, because I keep seeing games where only at specific times an autosave is triggered, and honestly, it’s annoying.

Latest offender, The Fall of Porcupine, actually looks like a cool game, if you would actually be able to save when you exit it. Instead it saves at seemingly random times. Now I am trying to play that with my kid, and we got to watch our screentime a bit. It happened now twice we weren’t sure how to trigger a save by going anywhere, nothing we could do would trigger it. So we lost progress… again. Probably not going to continue this one.

Even really great games do this. I finally got Dave The Diver and at least you get to save on exit everytime you can exit. What I didn’t know until playing it for a while, there’s times where the game does not allow you to exit, what in the world is up with that? Apparently it is really really important to finish this silly cooking minigame right now, as there is no option to return to menu. Similar in some other sequences of triggering a boss fight. Just now I was at a place in the game where 3 separate boss fights got triggered with no indication its going to happen and of course no way to exit. Other than killing the game, but I guess that wouldn’t save it.

Aaand Stardew Valley, I really love it, great game. But only being able to save when ending the day, seriously? I read the mobile version can save anytime, why not all others too?

Ok, done, you can now ignore me or share your own stories if you like…

  • fartsparkles@lemmy.world
    link
    fedilink
    arrow-up
    32
    ·
    edit-2
    22 hours ago

    I understand why people want the feature and I agree it’s amazing but the reason lots of games don’t is it requires the serialization of basically everything in the game and that can be a nightmare to maintain if you’re making lots of big changes to the game throughout development. You have you go back and rework your save code every time you change anything, and ensure older parts of the code still adhere if you need to change how save works (meaning i.e. touching so much of the same code over and over rather than getting a feature implemented and moving on).

    And while it can be done with most major engines with plugins, it you’re creating your own structures/object types etc, you need to extend that plugin to support them (and maintain that code every time you make changes to the structures).

    Emulators simply save the state of memory since many older consoles didn’t have much RAM to begin with dumping it entirely to disk isn’t that big of a deal (especially if only a subset of registers are marked for game state). Not so easy with modern games where there is a lot more going on in RAM.

    Games that have a daily tick e.g. Stardew only need to store a set of initialisation values that are used to begin the day since no other changes would be made to state yet (since the player hasn’t made any that day). Or checkpoints where you serialise player state, quest state, etc, with enemy location etc ignored and respawned as default the next time you play.

    Think of it this way. If an enemy spawns in a default location, that doesn’t need to be serialised if you load a game from a checkpoint. But if you can save anywhere? Well then you need to know the enemies, their positions, their vectors, their AI state (alerted etc), their velocity, their position in the animation timeline, and potentially so so much more. If you save mid explosion while boxes are flying all over the place, you need to serialise so much more data to resume the physics simulation. Etc.

    And what about multiplayer? That’s additional players and their state and surroundings etc that need to be serialised and reserialised at load successfully.

    Then there’s how you serialise. Do you go with a text markup like JSON which can get incredibly large if there’s a lot of things to serialise? Or do you make a custom binary format to compress the size but then you need to maintain that format and how you map to and from it in your engine?

    It’s a lot easier if you don’t have to serialise the state of a huge number of things for saving and maintaining that saving code every time you make changes. It’s not impossible, and if you build with the feature in mind, it can be made manageable to maintain.

    But if that feature isn’t essential to your game, and you’ve an acceptable alternative, it frees you up to work on other features instead.

    It’s a balancing act. And for a solo developer like that of Stardew, I can completely forgive them for not wanting to implement it.

    • rebelsimile@sh.itjust.works
      link
      fedilink
      arrow-up
      7
      ·
      18 hours ago

      I can vouch for this. I started working on the save functionality in my last game project about half way through and since, every single change to the main player objects has had to be re-replicated in the save code. If I wasn’t working solo it would be… not a good process for anyone else working downstream. Never thought about it in this way but that makes a lot of sense

    • Orygin@sh.itjust.works
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      18 hours ago

      If the game has no manual save but random auto saves like the op’s first example, then all your points are moot as the game still needs to have the save feature working properly. It just doesn’t respect the user enough to let them save on their own terms

      • fartsparkles@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        15 hours ago

        I recommend you try implementing a save feature in a game engine then you might have a little more respect for the difficulty of the problem you’re irritated by.

        Developers aren’t being unthoughtful or lazy, you’re just trivialising a rather complex software engineering problem that isn’t easy to solve and one solution over another has trade offs / weaknesses.

        • Orygin@sh.itjust.works
          link
          fedilink
          arrow-up
          2
          ·
          14 hours ago

          The context is explicitly a game where the engine supports saving at any time exists and it is not available for the user.
          I am well aware of the difficulty of implementing such features so respect is given where it’s due.

          • fartsparkles@lemmy.world
            link
            fedilink
            arrow-up
            3
            arrow-down
            1
            ·
            12 hours ago

            I don’t think you understand what “the engine supports saving at any time” entails.

            Having the ability to serialise objects is not the same as handling the input and output of serialisation.

            You might as well be annoyed by why aren’t all developers letting us rewind time in games? Load from our last save? No thanks. Developers are so disrespectful of my time. You just need to log all the changes that happen and play them backwards. Every engine supports that.