Kodi Community Forum

Full Version: GSoc 2018-intrested in project "Achievements in Retroplayer"
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

I am Rohit Sharma, a student at Indian Institute of Technology, Gandhinagar, India with major in Computer science and Engineering. I’m interested in working on Kodi’s project "Achievements in Retroplayer".

Email:- [email protected]

Goal:- 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.

Summary: 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.

How can I achieve this: By creating a full achievement database in Kodi.I want to specially work on game add-ons, peripheral add-ons and netplay part.

Regarding these questions in the link  328448 (thread)

1. Tell us about the computer(s) and devices you have available for working on your SoC project?
I have a laptop(Intel Core i7-7200U CPU @ 3.2GHz ) with 8 GB RAM with Ubuntu and Windows installed in it

2. When did you first start programming?
In 2016 when I came to college and got involved in competitive programming.

3. Are you a user of Kodi? When did you first start using it?
Yes I am using it from 3 months.

4. Have you contributed to other Open Source projects? If so, which projects and can we see some of your code?
Yes, I have contributed to some Open Source projects, including xbmc/xbmc_timezones.py
my work can be seen on my GitHub profile: https://github.com/rohitx007  and some other repositories like Beanstalk and Bitbucket

5. What sorts of programming projects have you done on your own time?
I have developed some Android, Web as well as Python Applications using matplotlib, OpenCV modules and course projects using PHP. I have not uploaded all of them to my Github profile mentioned above but I can mail the projects to anyone who wants to take a look

6. How much time do you have available, and how would you plan to use it?
In summer, starting from the first week of May till July 27th. I will be having all day free and will be completely devoted to this Project only as till now I have no other summer plans.

7. Do you plan to have a job or study during the summer in conjunction with Summer of Code?
No, I do not intend to work or study during the summer.

Requirements: C++, Python, PHP

Possible mentors: garbear
Achievements would make a great GSoC project. Do you have much C++ experience? RPi's might be speed-constrained when playing games, so a C++ implementation is the goal. However writing an achievement engine in python and then moving it into core later is a valid strategy.
Yes Sir,
I think I can do it in C++ but according to first, I should write achievement engine in python and then move it to the core for a hassle-free experience Smile
An achievement engine will need some C++ work to present an achievement API to python. I'm not happy with the libretro API for savestates because it doesn't fit the abstractions I'm planning to use to improve RetroPlayer. Once we finish the API exposing it to python will be a relatively straight-forward c++ task.

Have you compiled Kodi and game add-ons yet?
yes, I have compiled KODI and now I am compiling game add-ons.
Can you give me a detailed idea(maybe an example) of the kind of abstractions you are expecting with libretro API for savestates
(2018-03-20, 11:58)rohitx007 Wrote: [ -> ]Can you give me a detailed idea(maybe an example) of the kind of abstractions you are expecting with libretro API for savestates

My goal is to build RetroPlayer on a game-theoretic framework. This means making it a simultaneous repeated game, where each frame the players agree on an Action (the state of their controller), play the frame (update the emulator's State), and then receive a score (their Reward).


The game can then be modeled as a time series:


The act of emulation can be broken into three iterated steps:

* The Update() function runs the emulator for a frame and produces a new State

* The Reward() function runs the Achievement Engine and produces a new Reward

* The Act() function gathers user input and produces a new Action
Emulation is then a timeseries that evolves according to the following Model:



The Achievements Engine would then be part of the Reward() function. More generally, I see the Reward() function as quantifying all scored information, such as the number of hearts or rupees in a Zelda game. This info could be overlayed in the Saved Game Manager.
Don't worry, we won't make you do math for GSoC Smile