Games Library (Game & Emulator database + launcher) development project, help wanted! - Printable Version
+- Kodi Community Forum (http://forum.kodi.tv)
+-- Forum: Development (/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (/forumdisplay.php?fid=93)
+---- Forum: RetroPlayer (/forumdisplay.php?fid=194)
+---- Thread: Games Library (Game & Emulator database + launcher) development project, help wanted! (/showthread.php?tid=40715)
- natethomas - 2009-01-15 00:09
As a non-coder/random guy on the street who thinks this whole idea is amazing and wishes the best to everyone involved, I'd like to ask a few questions, if I may. Naturally, it's pretty early in development, so if there are no answers, feel free to ignore the questions.
First, is the goal of this code to start only emu games (such as MAME, old NES, etc.) in which a separate program runs a rom, or when development evolves in .2 and .3 will there be the eventual goal of executing modern computer games such as Half-Life 2, Crysis, etc.?
Second, how integrated into xbmc is this process ever likely to become? For example, XBMC has its dedicated video player. Clearly, that's an example of complete integration. A middle ground would be an integration in which XBMC shipped with a cadre of emulators and automatically picked the proper emulator for the specific game. A relatively unintegrated solution would involve each user downloading and installing his own emulators of choice and telling XBMC where those emulators were.
A further middle-ground option would be to have XBMC recommend system emulators or give the option of downloading from within the XBMC interface, possibly during the scraping phase.
I would assume an evolutionary process would entail a gradual tightening of integration. The initial code might only allow a user to pick his emulator or .exe file (in windows). I don't anticipate XBMC ever shipping with built-in emulators, so I imagine the final stage would involve the downloading of the appropriate emulator from within the interface during the scraping phase.
- Terin - 2009-01-15 01:09
At this point (and within my own plans), we're going to be supporting emulators. I don't think we'll have anything that will offer emulators for your ROMs for download. Rather, the structure I think we're heading for is:
1) You have your own files (roms, exe's, etc) that can be scraped by extension.
2) You associate that extension with a specific action (i.e. launch exe's from the native system/shell; .nes files launch with a Nintendo emulator -- but you'll have to specify the emulator)
3) You open up your game library and look at the various games, etc; you get a nice interface that shows some information about the game. You confirm to play/select this game, and it loads.
I've got an Xbox with XBMC running -- ideally, I want to be able to select "Applications" and it pulls up information on the ROMs I legally own (ROMs/EMUs can be tricky business because some are illegal, etc; that's why we can't build anything in about offering to download you an emulator). I can select the system, etc, and I can choose to play them without having to load the emulator.
Of course, there'll probably need to be some work on my side to get emulators that work on the Xbox with a kind of parameter-passing formula.
But essentially, I think it's going to be heavily dependent on scrapers, and have a lot of input on the user's end to get it configured from the get-go.
Hope that helps. I think that's more or less what Awen is going for as well -- I'm checking out the code fairly soon and going to try to compile.
- timdog82001 - 2009-01-15 02:06
natethomas Wrote:Second, how integrated into xbmc is this process ever likely to become? For example, XBMC has its dedicated video player. Clearly, that's an example of complete integration. A middle ground would be an integration in which XBMC shipped with a cadre of emulators and automatically picked the proper emulator for the specific game. A relatively unintegrated solution would involve each user downloading and installing his own emulators of choice and telling XBMC where those emulators were.
Even simply offering to download emulators during scraping doesn't make much sense to me because either
1.) You already have an emulator and roms and don't need to download anything
2.) You don't have an emulator yet, but also don't have any roms which defeats the point of a built-in solution since you're already going to have to go out and find and download stuff anyway before you can use it.
Not many people have folders full of roms sitting around with no emulators to run them.
At best I'd say XBMC could provide links or names of popular/compatible emulators available for different systems if and when you try to access the games section if nothing is already scanned in, which is something that could be easily skinned anyway without addition to XBMC itself.
- natethomas - 2009-01-15 02:21
While you are almost certainly correct, Timdog, in that people who have roms also have emulators, you are forgetting the driving goal of XBMC, which is to make for a near painless application to the end user.
Consider video playback. While it's a given that most people who have mkv's also have a player to use them, XBMC doesn't simply make this assumption and provide a call function where the user sets the external video player. Instead, XBMC provides all the tools necessary. The end user need only bring the media itself.
I acknowledge that this level of integration would probably be too much for the ever changing world of game playing, but the goal behind the model is worth keeping in mind.
Terin answered the question well. Even if XBMC doesn't provide the emulator, for good integration, it'll at least be necessary to identify emulators that can take the parameters submitted by XBMC. At least, for the Xbox. I don't know enough about parameter passing in windows and linux to know if the same functions would be necessary in those systems.
Anyway, I think that's about the extent of my two cents on the topic, and I'm grateful for the info. With that said, don't let me keep you. Making this work is WAY more important than answering my silly questions.
- asphinx - 2009-01-15 10:54
Oh hell yeah! I thought I was the only one wanting/thinking about how to improve the game section of xbmc.
Here are my demands! No just kidding, but seeing as I didn't know people were already working at improving it, I already starting some work myself. On the other end of things though.
I have looked through a lot of already out there gamedb's, but in my opinion most of them are of inferior quality, this in comparison to thetvdb (for tv shows) and for instance the various sources for movie scraping. So here's my suggestion.
A dedicated online db specifically tailored for the needs of the many. Think thetvdb, but for games. Much like thetvdb doesn't offer you the option of downloading a tv show, merely information about it, so would thegamedb (working name) offer a one source solution to everything you might need to know about the games you have. I'm thinking...
- Ratings (PEGI, ESRB, BBFC, OFLC, CERO, USK if it has a rating, it should be possible to scrape it, with transparent .png's to match I thought)
- Posterstyle coverart (already making/have made those anyway)
- Listings of developers, publishers, genre, release dates for different platforms and/or regions
- plot outline, of course.
- for emulated games one could have a flagging system for prefered emulators, which xbmc could use as a reference to locate emulators on HDD (don't know if it's possible)
Also much like thetvdb, users could contribute to expand the assets available from thegamedb.
Is this a good idea? I've already started working out a prototype database.. this includes a standardized xml layout, which in turn can easily be translated into an .nfo file. Maybe making that an option for users as well.
The biggest problem I'm seeing so far is that games don't seem to have a unified id tagging system (none that I've found at least.) And I feel that this is something that should be adressed. Sure most of us probably go for naming the game as it should be anyway, and it that case searching based on title would work. But it would be possible to make it a hell of a lot smoother if there was a unified tagging system, maybe even with added parameters for different platforms. (ex. 1234-1 for halo combat evolved on xbox and 1234-2 for halo combat evolved on PC)
Is anyone already making a db?, of so I will gladly contribute anyway I can. In not, well I'll just continue with the work I've done so far.
- Terin - 2009-01-15 18:20
If you want to create an online database like thetvdb, or whatever you were mentioning, you're more than welcome to do it. We have an internal database (similar to videos, etc) that's already in the works -- hooking up to a new external database for pulling data is the job of scrapers.
I've taken a look at Awen's code, and we've briefly exchanged messages on some structural things to update/change/enhance. I'm going to post my "Roadmap" right here for the sake of it, so some people will understand what we're doing and where we are.
Initial/Alpha Release (.1x):
-VERY basic functionality (and limited)
-Text only in English
-Initially "limited" to MAME
Functional/Beta Release (.2x):
-Database updated with a few more functions and renaming done internally (i.e. adding/modifying a "Platform" category)
-Multilingual support (well, using XBMC's translation tables)
-Displaying/providing more ways to access data.
-User-configured emulators and support (i.e. associate .NES files with NES emulator -- probably configured with scraper)
Standard/Stable Release (.3x):
-Heavy UI upgrade -- we'll need the support of the skinning community
-More customizability in terms of interface (probably allowing you to display by genre/platform/letter or any combination thereof; i.e. a filter)
-Addition of features as requested (animated images of the game in preview, maybe "related" games, etc)
I think at the third stage (.3x) is when we're going to have something that will mostly be "stable." .2x will be a good time for scrapers to have data coming in.
I need to post the fields that Awen's polling/storing in the database, so people can build scrapers. If you want to help, a scraper would be a fantastic way to contribute. Scrapers are fairly simple enough that you won't have to worry about the architectural complexity or necessities of being a programmer -- look at another scraper (for something like imdb), find how it works and where it does something, and then build something to plug into a database for games.
If you want to help, the easiest/best to scrape for at this point, would probably be MAME, NES, SNES, Genesis, Gameboy, Gameboy Color, Gameboy Advance, ATARI. These platforms are simple (and widespread enough) that they're pretty common. I may need to try to find the maintainers of other Xbox-platform emulators, and see if there's a way to get support for cmd line parameters -- and if not, maybe to write it myself. Would HOPEFULLY be a simple addition, if it was architected well.
Comments? Ideas? Suggestions?
- tetsuo55 - 2009-01-15 18:30
I have posted a reply in the non-dev thread
tuesday fever - Awen - 2009-01-15 22:40
some answers from my bed:
@gamester17: you're right about the 'feature suggestion thread'... Will spend some times in there from now.
@natethomas: standalone game application support is planned. I'm not sure how half life is going to be played from the sofa, but anyway, there are tons of (free) games suitable for this.
@ i'm seconding Terin: the gray area where emulators are prospering is a pain... But the scrapers idea is a good one: it could download packages and reference them automatically into db. It's probably the farther we could go without sorting a lot of legal things, or at least some strong discussion with project gurus ... I reckon that GameEx is auto-downloading, right ?
- tetsuo55 - 2009-01-16 00:39
Awen Wrote:some answers from my bed:
GameEx is not auto-download, everything has to be set-up manually
- EMK0 - 2009-01-16 04:51
for MAME i think the information should be brought in from the MAME its self not scraped from sites this way would be many times faster. there are history, nplayer, category, alltime files that could be scanned into the database. There is also a highscore.dat which saves high scores for some games this would be cool if it could be displayed somehow on a high score screen
For emulators i believe they are not illegal as long as they don't come with any copy write code like a bios/roms/isos.
- rausch101 - 2009-01-21 15:21
EDIT: Maybe integrating an emulator or two for each system would be a good idea since those pose no legal issues (except for the systems which require an external bios). The chosen emulators could be those which are most popular and/or most functional. Embedded emulators might make it easier for an emulated performance tag (e.g. Perfect, Playable, Playable with glitches etc.) for each game. As I'm not a coder, I have no idea whether or not this would making the coding easier/more difficult (although my guess is more difficult :/ )
- natethomas - 2009-01-21 18:33
Rausch, I can assure you that I never once suggested downloading roms. I completely agree that doing so goes about 20 steps past the legal boundary. All I did was suggest downloading emulators, which appears to be something that you agree might not be a terrible idea.
With that said, I'm no programmer either. Whichever the route the programmers do take, I'm sure it'll be drastically cooler than what exists currently.
- Gamester17 - 2009-01-21 21:39
I actually very much like the idea of this Games Library using python script for automatically downloading both (legal) ROMS and (legal) third-party emulator software for the end-user. I do however think that it is outside of the scope of this initial project, so I suggest to first just focus on getting a basic Games Library functioning, ...then later after that we can maybe look using python plugins to download (legal) ROMS, and perhaps also use a python script to download the recommended emulator for each platform from the internet, decompressing it to the correct location (if zipped/rared) and configuring it for display settings set in XBMC to get the correct output resolution right away.
XBMC is all about user-friendliness, and I do not think that it is user-friendly to let the end-user manually download separate third-party software and manually configuring it to make it work correctly with XBMC.
- timdog82001 - 2009-01-22 00:32
well if that whole emulator process could be automated for linux, i'm sure that would be a very welcome feature for linux noobs (such as myself). Figuring out the intricacies of getting all the needed stuff and compiling and so on for some of the emulators can be a bit of a pain for unexperienced users.
Just to clarify, earlier i wasn't really saying i was opposed to it. Just seemed unnecessary from my point of view, at this stage at least. I'm sure i'd enjoy such a feature if it were added.
- EMK0 - 2009-01-22 18:25
yes i agree at first you guys should make the game library work then work on making it as user friendly as possible. Just like My videos i never need to go out of xbmc to configure codecs or anything i can change all settings in XMBC and play all media with out any work as should the games section.Once u download the emulator you should not have to exit xbmc/minimize to configure it because most people do not have keyboard/mouse hooked up to there HTPC.
Most emulators have there settings in ini files i don't think it would be hard to make settings within xbmc.
maybe we should make a folder for emulators and xbmc can scan that folder for the emulator name and will know which one it is? only reason i say this it would make it really simple. Then it could change the settings so that it for example starts in full screen ? so i user only would have to download it and extract it to this folder or a python plugging could download it to this folder?
or make it like add source you find the emulator exe and then you get the option of wich system it is and then it shows all the supported emulators?