hiran wrote: ↑Mon Feb 12, 2024 5:41 am
You do not have to have the expansion sets but yes they make life more comfortable. Differences between the 'installed set' and a savegame are already detected and displayed. All that is missing is an automatic sync.
Ok, great!
Such a file does not take long for me. How do you know how long it takes actually? What are you measuring?
I'm measuring how long it takes for me to have control over the program again. I'm noticing a number of spots where it takes a really long time and the program effectively "freezes":
1) On startup, Oolite Starter can take up to 3 minutes to load (stays at the splash screen the whole time).
2) On refresh, it takes over a minute.
3) On oolite-es creation, it takes over a minute.
During that time I cannot click on anything or interact with the program in any way. I just have to wait.
But let's discuss functionality - the reason I have not yet automated that:
How shall OoliteStarter fix discrepancies between a savegame and the installed set? Is it hard required to restore the exact same installed set? How can a user add expansions later in a game? What if the exact version of the OXZ is no longer available?
There are really two/three major situations where Starter will have to handle changes external to itself:
1) Player starts a new game inside Oolite and changes expansions (or doesn't).
2) Player saves an existing game inside Oolite with a different set of installed expansions.
3) A variation of #1: player saves an existing game under a new name inside Oolite, with a different set of installed expansions.
I think there's a solution that resolves all three. If Starter detects that Oolite has quit, it scans the AddOns directories and the save game directory, and acts as follows:
Case 1: no changes to the save game directory, changes to AddOns directories -> Starter asks player if it should update or discard changes to the currently selected savegame
Case 2: changes to the save game directory, no changes to AddOns directories -> Starter copies the install set list from
its currently selected savegame into the data it keeps for the new savegame(s) that it has just detected
Case 3: changes to the save game directory, changes to AddOns directories -> Starter asks the player two questions:
1) The list of installed OXPs has changed. Would you like to update one or more of your savegames with the new list? (Yes/No)
2) If Yes: Which savegame(s) would you like to update with the new list? (Checkbox list, Update button)
Alternatively, Starter could simply apply the list of OXPs in the AddOns directories to any new savegame files, but there's obvious cases where that would be less than ideal. In particular, the following scenario:
1) I load a savegame called "ExampleGame" via Starter into Oolite.
2) I make changes to the installed set using the Expansion Manager.
3) I play for a while.
4) I save the game.
5) I make a backup of the save called "ExampleGame Backup".
6) I quit the game.
At this point, Starter will see that the savegame list has changed, and it can easily assign the current AddOns to that savegame, but it doesn't know that I've actually been playing the original copy with that new set as well. So it needs to ask. Which then leads to:
7) Starter detects a new savegame and a changed AddOns directory.
8 ) "The list of installed OXPs has changed. Would you like to update one or more of your savegames with the new list?"
9) I click "Yes."
10) "Which savegames would you like to update with the new list?"
11) I check "ExampleGame" and "ExampleGame Backup".
12) Starter performs those updates.