kodi-game / game.libretro

Libretro compatibility layer for the Kodi Game API
GNU General Public License v2.0
37 stars 26 forks source link

Rcheevos #67

Closed NikosSiak closed 2 years ago

NikosSiak commented 4 years ago

Description

This PR adds support for rcheevos to RetroPlayer. This PR is used by https://github.com/garbear/xbmc/pull/120 and depends on it to be build

Hedda commented 4 years ago

WOW! Is your plan to eventually bring RetroAchievements.org (Retro Achievements) RAIntegration to RetroPlayer gaming and Kodi?

If so, do you know if @leiradel and @Jamiras from the RetroAchievements project/organization know about your plans?

https://retroachievements.org/viewtopic.php?t=8747

"rcheevos is a C library created by leiradel (with many contributions from Jamiras). It is the code responsible to process achievements, leaderboards and rich presence. It was created as an an effort to avoid double work and also to fix incompatibilities between RAEmus and RetroArch."

"(For those who know more details about our software, RAIntegration will NOT be replaced by rcheevos, but use it. Actually RAIntegration is already using rcheevos, since 0.75, but only to process achievements/leaderboards. Features like Memory Inspector, Achievement Editor, etc. are still a RAIntegration-only thing)"

https://kodi.wiki/view/Google_Summer_of_Code/2020#Achievements_in_RetroPlayer

"Description: Retroarch has developed support for achievements in certain select libretro cores. This project would consist of porting whatever work might be portable and otherwise integrating the existing libretro achievement system into Kodi's RetroPlayer implemented using Kodi's UI system. Could be tackled a few different ways, including simply linking the user to the retroachievements.org or creating a full achievement database in Kodi."

"Expected Outcome: Users should be able to see their achievements in Kodi. Player manager and Player profile support may be in development concurrently, so thought should be given to those systems."

https://github.com/RetroAchievements/rcheevos

"rcheevos is a set of C code, or a library if you will, that tries to make it easier for emulators to process RetroAchievements data, providing support for achievements and leaderboards for their players."

"Keep in mind that rcheevos does not provide HTTP network connections or JSON parsing. Clients must get data from RetroAchievements, parse the JSON payloads and pass the results down to rcheevos for processing. (TODO: document the server API and JSON schema.)"

"Not all structures defined by rcheevos can be created via the public API, but are exposed to allow interactions beyond just creation, destruction, and testing, such as the ones required by UI code that helps to create them."

"Finally, rcheevos does not allocate or manage memory by itself. All structures that can be returned by it have a function to determine the number of bytes needed to hold the structure, and another one that actually builds the structure using a caller-provided buffer to bake it."

NikosSiak commented 4 years ago

Hi @Hedda, I haven't inform anyone from the RetroAchievements project. My project was to add a auto-captioning feature for savestates, if this gets merged then whoever does the achievements project, you mentioned, has this as a starting point.

garbear commented 4 years ago

@NikosSiak can you rebase after the merge of https://github.com/kodi-game/game.libretro/pull/69 to fix Travis CI?

garbear commented 2 years ago

@NikosSiak Can you retarget the feature_rcheevos branch?

garbear commented 2 years ago

Thanks. #79 should be rebased out from under your work. It might still be merged before this but there's no conflicts so it'll be easier to manage this PR independently.