Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Cipher

Dumb Question: How do people store save files to share them between source ports?

Recommended Posts

I'm brand new to this. Is there a way I can store game saves so that they're shared between source ports? As far as I can tell, unless the ports share a folder (which gets messy with all sorts of application extensions sitting around for various ports), they can't share saves, which is slightly frustrating for switching between them.

Is there an easy way to point everything to a shared directory so I don't have to copy over game saves if I switch ports?

Thanks!

EDIT -- Oh. Apparently most ports use different file formats for saves anyway. That makes sense, given different limits. All I've played with so far are Chocolate and Crispy. Thread can be deleted.

Share this post


Link to post

Well, it's not such a moot point, but each port has different standards for where it saves its...saves (some just use their root folder, some use a specific subfolder etc.) but certainly not all of them are customizable. Often, not even the names of the save files are compatible.

ZDoom-compatible ports may be able to share saved games between a narrow version window (albeit with warnings). 100% vanilla compatible ports that don't alter the save/load code in any way are the only ones, in theory, that can share saves. Maybe pure Boom compatible ports, too.

Share this post


Link to post

But what about vanilla savegames? Aren't they supposed to be compatible with most ports?

Share this post


Link to post

Since those "most ports" are not limited to vanilla features, even through they might be 100% demo compatible with vanilla, then no.

For example, prBoom+ may behave reasonably close to vanilla when it comes to demo playback (in this sense, it's "100% compatible") but its save format, being it derived from Boom, is NOT vanilla compatible to begin with, as it saves a lot of other stuff and most internal structures are different.

The argument of whether it'd be possible to build converters/loaders and have all ports accept vanilla savegames as a minimum common denominator has been tackled before, but the effort required would trump any practical value/demand for such a feature.

Share this post


Link to post

A save is a serialization of the game world as it is when you save. The state of every* sector, line, side, thing, whatever is stored. Then loading the save consists in reading all this stuff and there you go.

Now what happens if the way you write something is different? Say that you've added another thing flag field (vanilla Doom has just one, Heretic has two, ZDoom reached an impressive nine): now you can't read the old data anymore because you'd get out of alignment and get garbage. Just like trying to load a Hexen format map in a Doom format editor, or vice-versa.

So you'd need to put a ton of checks throughout your serialization code, whenever you expect a value that vanilla doesn't have you have to check whether you're loading a vanilla save or not. That's quickly going to be painful.

In fact it's going to be about as painful as the stuff you need to do for demo compatibility, with branchings everywhere that make maintenance a headache, but for an even smaller reward because you don't even get an active scene of game savers the way you have an active scene of demo runners.

Share this post


Link to post

In fact, the closest thing to an "universal save format" (and then again, only for 100% vanilla demo-compatible ports) would be to carefully save all of the player's inputs rather than every object's position at a given time, save it as a standard vanilla demo, play it back, and allow players to take over at any point (kinda like prBoom+'s TAS tools do). However, the very least you would need to modify other ports to allow players taking over demos like that.

Now, since most things like monster positions etc. are the same between ports, and most ports are either 100% similar internally to vanilla or a proper superset of it, it might be possible to make a basic "vanilla compatible" loader for each port. Sure, it won't use any new features, some things may get lost in translation (in theory, nothing should), but it might allow to sorta/kinda continuing a vanilla game. The very least, it should be possible to get Doomguy and the monsters in their proper positions, maybe even elevators/platforms and lights.

But as Gez said, the practical rewards for attempting it are close to zero. The general case of a "Port X to Port Y" translator is even less attractive.

Share this post


Link to post

The idea sounds awesome, though it may be a one-way street. Add support for vanilla Doom savegames in ports! This means that a mission I'm playing for awhile in Doom/Doom 2 I can decide to continue in some port like Eternity. Of course, anything I save later in the new port will no longer be compatible with vanilla Doom.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×