PhilipK / BoilR

Synchronize games from other platforms into your Steam library
Apache License 2.0
1.4k stars 40 forks source link

[Feature Request] Playnite Support #200

Closed NightHammer1000 closed 1 year ago

NightHammer1000 commented 2 years ago

I tried to code this myself but due to lack of time and health I have to put a nail into it.

Just can't sit long enough at a desk to pull it off, so I put this up here to pick up if interested.

The Support for Playnite would be Awesome. Its an wonderfull Library Manager and Multi Launcher. Even usable under Linux with Wine. Its also great for Emulation. So this would be a great way to get Emulation Support into BoilR

Playnite stores all the Game Entries in a LiteDB Database "games.db" in the "library" folder. In Portable Mode this Folder is in the Playnite Folder itself. In Installed Mode it's in the Playnite Folder under %appdata%. The games.db has everything in it, we need. Even pointers to the Artwork already downloaded in Playnite. So, we don't need to search SteamGridDB for Artwork if it already exists in Playnite.

For Launch Options a checkbox for "Launch via Playnite" and "Launch directly" would be awesome. Quite like It's already there for Heroic.

PhilipK commented 1 year ago

I am looking into this, you are right, everything seem to be there, I do see a couple of potential problems:

I will keep this issue updated.

PhilipK commented 1 year ago

@NightHammer1000 I have created an early beta version of BoilR with playnite support, can you give it a try and see if it works for you as well?

I only have access to 1 windows machine, so would be nice with some more testers before it is merged into main.

https://github.com/PhilipK/BoilR/releases/tag/playnite-beta-v1

NightHammer1000 commented 1 year ago

Wow. That was fast. :D I would love to test it out, but my Instance is sadly portable because I actually have two on my PC. One for the PC Games and a separate one for Emulation.

NightHammer1000 commented 1 year ago

Will setup a Installed Instance tomorrow to test around a bit.

PhilipK commented 1 year ago

If the installed one works I will start work on support for the portable one.

On Thu, Jan 5, 2023, 00:27 N1GHT @.***> wrote:

Will setup a Installed Instance tomorrow to test around a bit.

— Reply to this email directly, view it on GitHub https://github.com/PhilipK/BoilR/issues/200#issuecomment-1371542474, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAEE7DGUR5GOO5YN6CY6K53WQYBPNANCNFSM5525J5DQ . You are receiving this because you commented.Message ID: @.***>

NightHammer1000 commented 1 year ago

It does indeed work and imports both installed and Uninstalled Games.

I have tested: Games that are imported into Playnite from EA, Ubi and GoG. Games that are manually added to Playnite

This is Great.

Some Suggestions for the Future would be: Import only Installed Use Playnite Artwork

PhilipK commented 1 year ago

@NightHammer1000 cool, I think I will put this out as a real release then (maybe still mark Playnite as Beta in the settings menu). Then I can start looking at your other suggestions.

I think the priorities are: Working on the portable version (specify the location in settings) Import only installed Working on Linux (installed through Proton)

NightHammer1000 commented 1 year ago

Great!

PhilipK commented 1 year ago

Alright, import only installed setting is implemented now https://github.com/PhilipK/BoilR/pull/313

PhilipK commented 1 year ago

And now portable version as well: https://github.com/PhilipK/BoilR/pull/314

PhilipK commented 1 year ago

The newest version has support for Playnite https://github.com/PhilipK/BoilR/releases/tag/v.1.7.19

NightHammer1000 commented 1 year ago

Done a bit of testing on my around 600 Games Playnite Install.

It went through quite well. But some games only show up as a Single Number. I got one entry in the list simply named "Id"

And one big thing I found... It imports Steam Games... Into Steam :P

NightHammer1000 commented 1 year ago

I can donate my db file it that would help.

darklinkpower commented 1 year ago

Hi, just a a recommendation, I would suggest if it's possible for you that it's not recommended to parse the database files directly and instead use the Playnite SDK to access the database. The reason is that you don't know when the database might change and break external software and this has already happened in the past when Playnite changed database formats, which will require re-implementing the parsing functionality to the new format.

It's also planned that Playnite will change its database format for the next major release in Playnite 11. If it's not possible then I'll suggest to keep an eye on Playnite releases to rework it.

PhilipK commented 1 year ago

I did not know that there was an sdk! That would be much better because yeah, parsing a databse is pretty flaky. Do you have a link to information about the sdk?

darklinkpower commented 1 year ago

https://playnite.link/docs/master/tutorials/extensions/intro.html

https://playnite.link/docs/master/tutorials/extensions/library.html

Depending on what you need, perhaps a Powershell extension might be enough and recommended since it's easier to create and maintain. If you have questions or need any help feel free to join the Discord server and ask there

NightHammer1000 commented 1 year ago

Isnt the SDK only for Extensions inside of Playnite? Not Ideal here because most of them break totaly when run inside Wine on Linux.

darklinkpower commented 1 year ago

Isnt the SDK only for Extensions inside of Playnite? Not Ideal here because most of them break totaly when run inside Wine on Linux.

Correct. I don't know the circumstances of this software, just wanted to give an advice because the current implementation will require reworking it from time to time to keep up with Playnite changes.

cuesta4 commented 11 months ago

Hello! Great little extension you have here. I'd like to suggest an alternative method to import Playnite ROMs into Steam, so I can run the game through Playnite, and still have Steam Input. Maybe importing the play action as an executable .bat? Thanks!