GSoC project: games library
#1
Evening all

I'm a second year CS student from Norway, and I'm currently thinking off applying to do the games library project. I think this is something xbmc needs, and something I have always wanted to have for myself.
I have two questions though.

1. If you want a games library do you wanted it to be tied in to the base code of xbmc, or do you want a module that does it?
2. Although GSoC starts on the 22.may (if I remember correctly), my final Exam is not until the 6th of june, so I would not be able to work full time until after that date. Would this be a problem, or is it ok if I only work part time for two weeks?
Reply
#2
1. I would highly suggest any implementation would be as modularised as possible. i.e. include dependency on XBMC kept to a minimum. You'd then hook into your module from within XBMC. You may wish to get some inspiration from the various add-ons that implement a similar functionality.
2. That would be fine.
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#3
Hi Lurimax,

I hope you're still considering a game library, because I think it'd be a novel inclusion in XBMC. In my application, I'm considering a picture library built on a library-abstraction framework, and before settling on this idea I wrote up a proposal for a game library. If you're still thinking of applying, I imagine this proposal could be a good source of ideas and/or information.

XBMC Game Library - Google Summer of Code ‘12

Summary
The goal of this Google Summer of Code project is to enable a robust library for games and programs within XBMC Media Center. While XBMC excels at categorizing multimedia, support for games is limited to Python scripts such as the Advanced Launcher add-on. Furthermore, a standard for displaying program metadata is nonexistent and, as a result, certain capabilities of a script like Advanced Launcher depend on user interface authors. This project aims to overcome these difficulties by implementing a database for games and programs, allowing items to be added (similar to the movie and music libraries), and providing a way for these items to be launched.

How will I achieve this
The focus of the project revolves around implementing the database, porting XBMC’s existing scraper system over to the new library, and the execution of the games and programs from the new library. The database will stem from the existing libraries and offer the same features, such as MySQL and SQLite back-ends. Items can be added by specifying an executable or a folder of applications. Similar to the existing libraries, the user will be given the option of scraping a website for metadata; if none is selected, XBMC will fall back on parsing the files for tags and other metadata. Taking inspiration from existing Python scripts, XBMC will perform proper bookkeeping when launching an application such as passing the appropriate command-line parameters, minimizing itself, and restoring itself when the application terminates.

Benefits
An immediate group of users benefitting from an integrated game library are those who have floundered with Advanced Launcher. As an example, the first intuitive step in the script (adding new games) is impossible: no folders show up! The solution of careening through various submenus is well documented in a forum post online, but can be daunting for virtually every user who installs Advanced Launcher from within XBMC.

The real impact this project will have on users can be discovered by quickly revisiting XBMC’s history. While XBMC was under development for Microsoft’s eponymous Xbox platform, an important feature was the ability to organize and launch games and “homebrew” software from the Xbox’s hard drive. Indeed, the program library was first item selected when powering the Xbox. XBMC’s original popularity is illustrious of the tendency for console gaming arrangements to also function as good media center systems. Thus, the incorporation of a game library will bridge this gap for a vast number of users.

Goals
Prior to GSoC, I will be researching existing approaches to the game library problem (including Advanced Launcher and the patches attacked to tickets #7046 and #9749 on XBMC’s issue tracker) and refreshing my RDBMS knowledge. Programming for the project officially begins on May 21.

I have identified three goals that will culminate in the completion of this project:

  1. Timeline: 1-2 weeks. Implement program execution support for standalone and file-based applications. This may require an extension to the settings (such that command-line arguments can be specified). This goal will be complete when both standalone and file-based applications can be launched from within XBMC.
  2. Timeline: 4-5 weeks. Extend XBMC’s existing database functionality to enable the storage and retrieval of game and program metadata. This goal will be complete when a library populated with test data can be browsed using the default skin, Confluence.
The mid-term evaluation, after week 7, should coincide with my completion of the game library’s underlying database. This will allow my performance to be properly judged, and if I finish prior to the mid-term evaluation, will allow me to dedicate time to improving the quality of my code and work towards the goal of my code being seamlessly merged with XBMC’s codebase.

3. Timeline: 2-4 weeks. Implement scrapers and file tag/metadata parsers for the various operating systems. This goal will be complete when a scraper can be set for a directory and the included items are added to the game library with metadata scraped from the internet.

The “soft” completion date occurs five weeks after the mid-term evaluation. The remaining week, up until the “hard” completion date, will be spent improving the quality of my code and ensuring a seamless merge. Given the schedule above, I anticipate being able to achieve my goals in the given time.

What does it touch in XBMC
The aim for this project is relative self-containment. Program execution support has been demonstrated in the past (ticket #9749) to be possible with minimum source tree impact. The new database implementation and scraper extension should likewise carry minimal impact.

Requirements
This project will require knowledge in several areas of expertise, as well as capable hardware. I am familiar with many of the required concepts, including C++ development, object-oriented design and build systems. During the ramp-up period leading to May 21, I will need to revisit relational databases and regexes (which XBMC’s scraper engine currently relies on). I can provide both a Linux and Windows environment for testing my code. In the past, I have tested compilation under a Mac virtual machine, but general development would be too tedious. Fortunately, UCLA’s CLICC program provides daily rentals of Mac laptops and accepts applications for longer rental periods.


Cheers,
Garrett
Reply
#4
Wow, thanks, this help a lot! I never thought about implementing a scraper. What site would we use though? mobygames perhaps?
You are a much better writer than I am, mind if I borrow a few phrases (with attribution of course)?
Reply
#5
Paraphrase, but don't copy! Nobody likes plagiarism. Check out Advanced Launcher, they have scrapers for an extensive amount of gaming systems.

Good luck on your app!
Reply
#6
Interesting project. As jmarshall suggested, you should take a look at the featuresets of Advanced Launcher and Rom Collection Browser. Not that this should be done with the first steps, just to get a feeling what will be requested once the library gets integrated into XBMCSmile

I am working on Rom Collection Browser for more than two years now. If there is anything you want to talk about, just let me know (if this is allowed in a GSoC project).
Reply
#7
You could scrape http://thegamesdb.net/
Image
Reply

Logout Mark Read Team Forum Stats Members Help
GSoC project: games library3