JosefNemec / Playnite

Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
https://playnite.link
MIT License
9.05k stars 492 forks source link

Integrating Achievements #146

Closed Sheepski closed 2 years ago

Sheepski commented 6 years ago

As I posted on the Discord -

It'd be nice to see our achievements; achieved and available to monitor progress as we play. I'm sure a lot of players use achievements as progress markers through the game and like to 100% games, especially on Steam. The first thing I noticed after loading my libraries was them lacking xD

Thanks!

shendrix commented 6 years ago

I really would like this also. It would be nice to see the achievements on the List view in the main panel. Also it would be nice if you could filter by achievements, and on the Details tab you could have a column for number of achievements and total (and therefore sortable).

Refreshing achievements can be an expensive operation with a large library, because I think you have to go game-by-game using the API GetUserStatsForGame endpoint. At least, that's how I implemented it before.

genova447 commented 4 years ago

I wonder um, if maybe it would be easier to hook into some sites that already try to compile achievements from different services, like https://playtracker.net/ , https://www.exophase.com/ and/or https://metagamerscore.com/ (if their terms and system allow it)

(Obviously I know nothing about programming and such - so do not take this as even a 'suggestion' - it's more like a shot-in-the-dark that may or may not inspire an idea if it isn't utterly dumb)

JosefNemec commented 4 years ago

That was the plan (still is actually). I was in contact with one of the achievement aggregation website, but that was fairly long ago and there was no progress on it since. Achievements support is not getting requested that much, so I'm not prioritizing it at the moment.

shakeyourbunny commented 4 years ago

Perhaps something in conjunction with https://github.com/xan105/Achievement-Watcher ? This is a program which tracks achievements across .. platforms and it has multiple methods of notifying new achievements, like a websocket ( see https://github.com/xan105/Achievement-Watcher#Websocket ).

This Achievement Watcher also has a watchdog which caches achievements.

InspectorSpacetime commented 4 years ago

Achievements displaying inside Playnite are something that I'm very interested in but I can imagine that it'll be a lot of work to add support. I figure there'd be two areas to deliver:

  1. Support for storing and displaying achivements against games and services in the core application.
  2. Support for retrieving achievements from each service (e.g. gog, steam, origin, etc).

If 1 was delivered initially then 2 could be delivered individually for each service by individuals in a similar fashion to Galaxy's integrations. For example this FF14 integration for Galaxy implements its own source for retrieving achievements.

@shakeyourbunny Unfortunately your suggestion wouldn't work for Playnite as the software that you shared is licensed under GPLv3 wheras Playnite is licensed under MIT license (not BSD as I previously said).

JosefNemec commented 4 years ago

Playnite is not licensed under BSD license, I don't know where you saw that.

Also, there's an extension adding achievement display support: https://playnite.link/forum/thread-275.html

InspectorSpacetime commented 4 years ago

Playnite is not licensed under BSD license, I don't know where you saw that.

So sorry, I misremembered. Playnite is licensed under the MIT license.

The point stands that you couldn't use anything licensed under GPLv3.

Also, there's an extension adding achievement display support: https://playnite.link/forum/thread-275.html

Thanks. I'll take a look at this.

JosefNemec commented 4 years ago

I'm not 100% sure about this, but last time I checked, you should be able to use GPLv3 libraries in MIT projects under certain conditions. We would not be able to use/include any GPLv3 source code, but dynamically linking library binary should be fine.

Anyways, I don't plan to use that project in case I'll be adding achievement support, so it's not an issue.

The best solution would be to partner with one those achievement tracking websites (I was in talks with one them long time ago) and pull achievement data from them. That would mean we would not have to bother with adding special implementation for each store separately.

Lacro59 commented 4 years ago

The problem with the program proposed by @shakeyourbunny, it's for steam emulator. But I like their interface.

shakeyourbunny commented 4 years ago

@Lacro59 : It is not only for Steam emulators, it can also source legit Steam achievements, if you mean the Achievement Watcher by xan105.

Capture-aw-onlysteam

Success Story (by the humble Lacro59 above) is quite neat though (when it does not choke on my ~7000 games..)

Lacro59 commented 4 years ago

I saw this after lunch the program.

The next version of plugin will have a option for download more restrict list.

I haven't a lot steam games :p

shakeyourbunny commented 4 years ago

@Lacro59: It's a bit offtopic, but look at the issues page, your plugin has some image decoding issues of some game's achievement icons. I included there the full extension data set for easier debugging ;D

JosefNemec commented 4 years ago

Please keep the discussion on topic, which is native support of achievements in Playnite. If you want to discuss custom extensions or other apps then please do so elsewhere. Thank you

JosefNemec commented 2 years ago

Will be done via #2041 Then it's up to integration plugin if they choose to support it.