Simplify release process

An area for discussing new ideas and additions to Oolite.

Moderators: winston, another_commander

User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
User avatar
Cholmondely
Archivist
Archivist
Posts: 5381
Joined: Tue Jul 07, 2020 11:00 am
Location: The Delightful Domains of His Most Britannic Majesty (industrial? agricultural? mainly anything?)
Contact:

Re: Simplify release process

Post 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!
Comments wanted:
Missing OXPs? What do you think is missing?
Lore: The economics of ship building How many built for Aronar?
Lore: The Space Traders Flight Training Manual: Cowell & MgRath Do you agree with Redspear?
User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

Re: Simplify release process

Post 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.
User avatar
Cholmondely
Archivist
Archivist
Posts: 5381
Joined: Tue Jul 07, 2020 11:00 am
Location: The Delightful Domains of His Most Britannic Majesty (industrial? agricultural? mainly anything?)
Contact:

Re: Simplify release process

Post 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.
Comments wanted:
Missing OXPs? What do you think is missing?
Lore: The economics of ship building How many built for Aronar?
Lore: The Space Traders Flight Training Manual: Cowell & MgRath Do you agree with Redspear?
User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

Re: Simplify release process

Post 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.
User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
User avatar
Cholmondely
Archivist
Archivist
Posts: 5381
Joined: Tue Jul 07, 2020 11:00 am
Location: The Delightful Domains of His Most Britannic Majesty (industrial? agricultural? mainly anything?)
Contact:

Re: Simplify release process

Post 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.
Comments wanted:
Missing OXPs? What do you think is missing?
Lore: The economics of ship building How many built for Aronar?
Lore: The Space Traders Flight Training Manual: Cowell & MgRath Do you agree with Redspear?
User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

Re: Simplify release process

Post 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;
User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6696
Joined: Wed Feb 28, 2007 7:54 am

Re: Simplify release process

Post 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.
User avatar
hiran
Theorethicist
Posts: 2410
Joined: Fri Mar 26, 2021 1:39 pm
Location: a parallel world I created for myself. Some call it a singularity...

Re: Simplify release process

Post 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?
Sunshine - Moonlight - Good Times - Oolite
User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

Re: Simplify release process

Post by phkb »

hiran wrote: Tue Jun 20, 2023 6:25 am
Could that work?
Possibly. Certainly worth exploring.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Simplify release process

Post 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.
Post Reply