Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GLC2 platform discussion #71

Open
Nutzzz opened this issue Feb 20, 2023 · 4 comments
Open

GLC2 platform discussion #71

Nutzzz opened this issue Feb 20, 2023 · 4 comments

Comments

@Nutzzz
Copy link
Contributor

Nutzzz commented Feb 20, 2023

As you, @Solaire , have mentioned a few times, the idea for GLC 2.0 is to separate platforms into plugins. I've got a couple of questions:

  1. What will this look like in practice, i.e., do you have the idea that this will be like Playnite or GOG Galaxy, where these are going to be maintained in separate repositories (potentially by separate individuals)? How will users discover these plugins? Would the user have to download each separately, and copy them to their plugin folder? We could have various built-in automation methods and/or websites to handle these things, but that seems like it adds a lot of work for both us and our users for minimal benefit.

  2. Note that the EA Desktop fix for EA: New installed games aren't found #66 was based mostly on GameFinder's wiki, but not so much on its code. After examining it further, however, I found there were a lot of aspects that I liked, and thought it would be nice to use its various NuGet packages as references (there are separate ones for each store handler). I thought this would simplify things for us, and it would be nice to share the burden of discovering/fixing breaking changes for the various launchers/APIs. But the current implementation is rather limited for our purposes, and it only supports a few platforms. In this issue, I asked to what extent @erri120 would be interested in--with my help--increasing the scope of his project for uses like ours, and he was, quite understandably, loath to do so. So I've been toying with a rebranded fork (with attribution) of his project here: GameCollector. I'm learning some new tricks from examining his code, and I've started by moving to a generic record type with more fields, and adding additional handlers. However, at this point I'm wondering how well this might or might not dovetail with your plans for GLC2.

@Nutzzz
Copy link
Contributor Author

Nutzzz commented Mar 17, 2023

EDIT: Moved this comment to (#39 (comment))

@Solaire
Copy link
Owner

Solaire commented Apr 2, 2023

Hey there.
I have been burnt out from writing code and wasn't looking at any projects. I'm trying to get back to finish some things and I've been thinking about glc version 2.0. I think this is the final plan I came up with and been slowly working on implementing; the project will be split into separate components:

  • core: library which acts as a backend responsible for data interaction and extension support. There will be an API which provides access to the data.
  • GLC: the actual app
  • SqlDB: SQLite wrapper to make some code more reusable. Initially this will be a project but I am planning on moving it to a different repo and release it as a nuGet package.
  • ExtensionBase: interface which defines platforms and games. This will be the base for plugins.

The reason for that is that the project has grown to be quite big and feature-rich (e.g. images in terminal) and I want people to be able to use the core to make their own apps (a good example would be an integration with PowerToys or voidtools everything).

As for the plugins; it's a little tricky. On one hand I'd like to have a separate plugin for each platform (personally I'm only interested in 5 platforms) but I understand that it would quickly lead to a messy repo. Perhaps the best thing to do would be to have the extension base in a separate repo, release it as a nuGet package, and implement all the 'official' platforms in that repo. The glc app would be able to download the plugins from there. We could use the platform scanning implementations from your GameCollector repo.

What are your thoughts?

@Nutzzz
Copy link
Contributor Author

Nutzzz commented Apr 2, 2023

Oh no worries, I totally understand burnout.

I dunno. I understand the benefits of loosely coupled extensibility, but a plugin model adds complexities for both users and maintainers, and attempts to decrease the burden on one is often at the expense of the other.

Not that I wouldn't find it an interesting learning exercise in any case.

@Nutzzz
Copy link
Contributor Author

Nutzzz commented Jun 9, 2023

FYI, GameCollector v3 now implements all of the platforms supported here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants