Page 2 of 5

Re: Simplify release process

Posted: Mon Jun 19, 2023 4:58 am
by hiran
Cholmondely wrote: Sun Jun 18, 2023 10:50 pm
Just wondering: might it be possible to include Disembodied's Mr Gimlet in the game somehow?

As part of the Start New Commander sequence? Or as part of the Tutorial?
Right now AnotherCommander and I were looking at the documentation that is bundled with Oolite. If you think of yet another document then sure - let's throw it in.

In case of stuff that requires a code change I am unsure if it is possible at this stage.

So what do you have in mind?

Re: Simplify release process

Posted: Mon Jun 19, 2023 7:33 am
by Cholmondely
hiran wrote: Mon Jun 19, 2023 4:58 am
Cholmondely wrote: Sun Jun 18, 2023 10:50 pm
Just wondering: might it be possible to include Disembodied's Mr Gimlet in the game somehow?

As part of the Start New Commander sequence? Or as part of the Tutorial?
Right now AnotherCommander and I were looking at the documentation that is bundled with Oolite. If you think of yet another document then sure - let's throw it in.

In case of stuff that requires a code change I am unsure if it is possible at this stage.

So what do you have in mind?
At this stage, nothing.

Image

But in a future version, maybe one could start the game with a post-tutorial lecture from Mr Gimlet (skippable) just before visiting the Lave markets and then undocking. I wonder pessimistically how many new players realise that there are two vital .pdf's included in their download (OoliteRS & Mr Gimlet's Advice to New Commanders) and how many bother reading them. Yet better would be to have them in different languages (Stranger did a good translation of Mr Gimlet into Russian) - French, German, Italian, Spanish, etc. Even better would be to have Mr Gimlet deliver the lecture in person with a heavy Bogsider-Batrachian Glaswegian accent!

Re: Simplify release process

Posted: Mon Jun 19, 2023 7:48 am
by hiran
Cholmondely wrote: Mon Jun 19, 2023 7:33 am
At this stage, nothing.

Image

But in a future version, maybe one could start the game with a post-tutorial lecture from Mr Gimlet (skippable) just before visiting the Lave markets and then undocking. I wonder pessimistically how many new players realise that there are two vital .pdf's included in their download (OoliteRS & Mr Gimlet's Advice to New Commanders) and how many bother reading them. Yet better would be to have them in different languages (Stranger did a good translation of Mr Gimlet into Russian) - French, German, Italian, Spanish, etc. Even better would be to have Mr Gimlet deliver the lecture in person with a heavy Bogsider-Batrachian Glaswegian accent!
Would this be something deliverable by an OXP? And then we might decide to have that in the standard distribution?

Re: Simplify release process

Posted: Mon Jun 19, 2023 12:04 pm
by phkb
hiran wrote: Mon Jun 19, 2023 7:48 am
Would this be something deliverable by an OXP? And then we might decide to have that in the standard distribution?
Yes, and indeed anything created to deliver the info should definitely be created and setup as an OXP. If we had to change core code to get it delivered, we’re probably doing it wrong.

Re: Simplify release process

Posted: Mon Jun 19, 2023 12:26 pm
by Cholmondely
Except that:

Mr Gimlet is really advice for the Strict Game - the more OXPs one adds, the less useful his advice is (ILS, Telescope, Stranger's World, Elite Trader. the Vanilla game coded "Easy Start", etc.). And of course, in the Strict Game, one can't run a Mr Gimlet OXP.

Re: Simplify release process

Posted: Mon Jun 19, 2023 7:41 pm
by hiran
Cholmondely wrote: Mon Jun 19, 2023 12:26 pm
Except that:

Mr Gimlet is really advice for the Strict Game - the more OXPs one adds, the less useful his advice is (ILS, Telescope, Stranger's World, Elite Trader. the Vanilla game coded "Easy Start", etc.). And of course, in the Strict Game, one can't run a Mr Gimlet OXP.
Why would Mr Gimlet not be feasible in strict games? Just because they would not allow OXPs per se?
I am not sure but believe OXPs could be added to Oolite such that they are part of the basic distribution and not visible as OXPs. Yet the architecture of the code would remain the same.

Can someone confirm or falsify the assumption?

Re: Simplify release process

Posted: Mon Jun 19, 2023 9:15 pm
by phkb
The benefit of doing this in an OXP is that content can be included (or not) based on which OXPs are present. The difficulty then becomes how to limit the potential information overload.

I did some thinking about how Mr Gimlet would work as an OXP, and it may need to be reworked somewhat to prevent it just being page after page or text-dump. It would need to have some interactions of some kind, I think.

Re: Simplify release process

Posted: Mon Jun 19, 2023 10:39 pm
by hiran
phkb wrote: Mon Jun 19, 2023 9:15 pm
The benefit of doing this in an OXP is that content can be included (or not) based on which OXPs are present.
This implies one OXP can find out which other OXPs are present? That's interesting.
So how would that be done?

Re: Simplify release process

Posted: Mon Jun 19, 2023 11:41 pm
by Cholmondely
hiran wrote: Mon Jun 19, 2023 10:39 pm
phkb wrote: Mon Jun 19, 2023 9:15 pm
The benefit of doing this in an OXP is that content can be included (or not) based on which OXPs are present.
This implies one OXP can find out which other OXPs are present? That's interesting.
So how would that be done?
dumb pilot answer: Eg: if you download one of the exploration OXPs which hides details of unvisited systems from your F6/F7 screens (ie: Here be Dragons, or Zero Map - Explore the galaxy) - in either case, they each rely on Explorers' Club OXP to keep a tally of which systems have been visited so that the other systems can be "hidden".

So if you download one these two, either the Expansions Manifest or their own manifest.plist (don't know which) is checked by the in-game Expansions Manager which then checks to see if the relevant manifest.plist from the Explorers' Club OXP exists in your Managed AddOns folder (and maybe also your AddOns folder - don't know). If it doesn't, it is then downloaded.

This is the meaning of dependency in your "Oolite Starter", as far as I can make out.

PS: Spara's Buyable Maps OXP (similar in principle) is older and seems not to use Explorers' Club OXP. One presumes that if so, it must keep its very own list of visited systems in your SavedGame file.

Re: Simplify release process

Posted: Tue Jun 20, 2023 12:18 am
by phkb
hiran wrote: Mon Jun 19, 2023 10:39 pm
This implies one OXP can find out which other OXPs are present? That's interesting.
So how would that be done?
Usually by checking whether a particular worldScript is present. For example (taken from GalCop Missions):

Code: Select all

	// set a flag if random ship names is installed
	if (worldScripts["randomshipnames"]) this._rsnInstalled = true;
	// set a flag if the illegal goods tweak is installed
	if (worldScripts["illegal_goods_tweak"]) this._igtInstalled = true;
	// set a flag if the email system is installed
	if (worldScripts["EmailSystem"]) this._emailInstalled = true;

Re: Simplify release process

Posted: Tue Jun 20, 2023 4:44 am
by hiran
phkb wrote: Tue Jun 20, 2023 12:18 am
hiran wrote: Mon Jun 19, 2023 10:39 pm
This implies one OXP can find out which other OXPs are present? That's interesting.
So how would that be done?
Usually by checking whether a particular worldScript is present. For example (taken from GalCop Missions):

Code: Select all

	// set a flag if random ship names is installed
	if (worldScripts["randomshipnames"]) this._rsnInstalled = true;
	// set a flag if the illegal goods tweak is installed
	if (worldScripts["illegal_goods_tweak"]) this._igtInstalled = true;
	// set a flag if the email system is installed
	if (worldScripts["EmailSystem"]) this._emailInstalled = true;
Hmm. That would give me the name of the world script - not necessarily the name of the OXP. Do all expansions come with a world script?

Re: Simplify release process

Posted: Tue Jun 20, 2023 5:19 am
by another_commander
There is also the JS property oolite.resourcePaths, which gives output similar to this:

Code: Select all

["Resources", "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns", "../AddOns",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/cim.gsagostinho.systemfeatures.rings.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.AndreyBelov.BountyInformer.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Astrobe.luckycharm.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.cim.camera-drones.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Commander_McLane.Auto_Eject.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Lone_Wolf.ETTHomingBeacon.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.maik.beercooler.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Okti.CargoScanner.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.phkb.AutoDock.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.phkb.BulkCargoProcessor.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.smivs.cup_of_tea.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Svengali.Library.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Switeck.Auto-ECM.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.APRIL.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.Bigships.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.CargoShepherd.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.CargoSpotter.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.CommandersLog.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.z.phkb.XenonUI.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.z.phkb.XenonUIResourcesG.oxz",
 "C:\\DriveD/Oolite/SourceCode/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.ZygoUgo.Explosions.oxz", "../AddOns/188NSGMaps.1_1.oxp", "../AddOns/Adder
 MkIII.oxp", "../AddOns/Basic-debug.oxp", "../AddOns/Cobra_MkB.oxp", "../AddOns/FPJ_Krait.oxp", "../AddOns/FPJ_Moray.oxp", "../AddOns/Goods_Container1.oxz",
 "../AddOns/Griff_HighPoly_CobraIII.oxp", "../AddOns/griff_HP_Mamba_Materials_WIP.oxp", "../AddOns/gsagostinho.TexturePack.AspMkII-1.2.oxp", "../AddOns/LaveIsEarth.oxp",
 "../AddOns/NoMassLock.oxp", "../AddOns/oolite.oxp.another_commander.DisoIsJupiter8k-1.0.oxp", "../AddOns/oolite.oxp.cheyd.DHI_nav_buoy-1.0.1.oxp",
 "../AddOns/oolite.oxp.CommonSenseOTB.CustomShields-0.83.oxp", "../AddOns/oolite.oxp.Griff.Prototype_Boa-1.2.1.oxp", "../AddOns/oolite.oxp.stranger.FPO_Zaonce-0.1.0.oxp",
 "../AddOns/oolite.oxp.Svengali.BGSwOldHyper.oxp", "../AddOns/oolite.oxp.ZygoUgo.ZygoCinematicSkyNebulas-1.3_Fixed.oxp", "../AddOns/QutiriIsNarShaddaa.oxp", "../AddOns/SampleStation.oxp",
 "../AddOns/Sidewinder_HP_withShaders_WIP.oxp", "../AddOns/TionislaIsCoruscant.oxp", "../AddOns/Vampire MkVI(2).oxp", "../AddOns/venus.oxp", "../AddOns/vertex-shader-animation-test.oxp",
 "../AddOns/voltesst.oxp"]
 
Getting the oxp names from the list is just a matter of basic string manipulation.

Re: Simplify release process

Posted: Tue Jun 20, 2023 6:25 am
by hiran
another_commander wrote: Tue Jun 20, 2023 5:19 am
There is also the JS property oolite.resourcePaths, which gives output similar to this:
[...]
Getting the oxp names from the list is just a matter of basic string manipulation.
That seems to be closer to my purpose.

For the OoliteStarter to know which OXPs have been used when a game was saved, I am now thinking of
an OXP with a world script with a world script that - whenever the player is about to save the game - will create the list of OXPs and store that as mission variable.
The Oolitestarter can read the savegame, get the list of OXPs and help the user to restore this status before launching the game.

Could that work?

Re: Simplify release process

Posted: Tue Jun 20, 2023 7:35 am
by phkb
hiran wrote: Tue Jun 20, 2023 6:25 am
Could that work?
Possibly. Certainly worth exploring.

Re: Simplify release process

Posted: Tue Jun 20, 2023 8:01 am
by cim
It wouldn't be a very big change to just add a write-only list of the Manifest IDs of all installed OXPs to the savegame itself, which would be slightly more reliable than the resource paths (that's relying on no files getting renamed after download). Really old OXPs won't have manifests, but they'll also be the most likely to have renamed resource paths.

Oolite itself also already has the capacity to be selective about which OXPs it loads for a particular savegame - the Scenario support at [EliteWiki] scenarios.plist - so if you wanted to maintain two savegames with different OXP sets, rather than installing and uninstalling the OXPs themselves, the tool could edit the scenario_restriction field on the savegame to set the OXPs which should be applied to it.