ModOrganizer2 / modorganizer

Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved
http://www.nexusmods.com/skyrimspecialedition/mods/6194
GNU General Public License v3.0
2.19k stars 163 forks source link

Create plugin for GOG Galaxy 2.0 #947

Closed LostDragonist closed 4 years ago

LostDragonist commented 4 years ago

This issue is to document thoughts, progress, roadblocks, etc., concerning implementing a plugin for GOG Galaxy 2.0 (https://www.gog.com/galaxy).

Goals

  1. Be able to run Mod Organizer from Galaxy.
  2. Be able to run specific Mod Organizer instances from Galaxy.
  3. Be able to run specific executables of specific Mod Organizer instances using the "moshortcut://" protocol.

References

Galaxy API and documentation: https://github.com/gogcom/galaxy-integrations-python-api LostDragonist plugin repo: https://github.com/LostDragonist/galaxy-mo2

Observations / Limitations

As of 12/23/19, each "thing" you want to run must be defined as a separate game. The API provides no method for the user to provide options, pick options, or do anything except pick a game and run a game.

As of 12/23/19, only plugins that have a specific platform defined in the API are allowed. There is no method to create an "MO2" platform without changing the API. The plugin could implement a platform present in the API that is not being used by the user but that gets ugly quick.

Implementation Ideas

Assuming an "MO2" platform can eventually be created, my current idea is to have the "main executable" for each MO2 instance be defined as a game in Galaxy. "Major executable" would be defined as the script extender (SKSE, F4SE, etc.) OR the game executable (SkyrimSE.exe, Fallout4.exe) if the script extender is not present. Global instances would be parsed from %LocalAppData%. Portable instances would have be entered by the user into a config.ini in the plugin folder.

The reasoning behind having only the main executable present is that this is the probably the one the user will want to launch most of the time and there's little point to cluttering up the Galaxy interface with more stuff.

LostDragonist commented 4 years ago

At this point, this is on hold indefinitely due to the platform API issue. It looks like the program itself needs to be updated to handle new platforms which doesn't seem like a quick process (example: https://github.com/gogcom/galaxy-integrations-python-api/pull/71).

/shrug.