gaseous-project / gaseous-server

A game ROM manager, with a built in web based emulator using multiple sources to identify and provide metadata
GNU Affero General Public License v3.0
379 stars 14 forks source link

Ability to manually add metadata and other requests #382

Open sergiohf opened 5 months ago

sergiohf commented 5 months ago

First of all, thank you for this server, its really amazing. I am using Gaseous, Romm and EmulatorJS simultaneously using the same game database. Each one have such good features and lack others. I am really loving several features in Gaseous, specially the interface and the youtube videos in the roms description. But there are some aspects that maybe could be improved (in my point of view), so here is my sugestions: 1) I have trouble with rom matching (some roms are hacks, others aftermarket releases) so it would be useful the ability to manually edit the rom metadata, including add the youtube video 2) although i could manually change the plataform mapping parameters, i think you could add in the config file the ability to play roms for twin plataforms, like super nintendo and super famicom or nintendo and famicom and Famicom disk System, as they use the same emulator 3) The unknown roms are all packed together, even if i click from a specific plataform. I think that if i, for example, click in the unknown roms from playstation, then only the playstation unknown roms are selected. The same applies when i am manually matching the files: i select a plataform, match a file, and then the server returns to "all plataforms" page 1, when the ideally behavior would be mantain the same plataform and page previously selected. 4) The frontend starts loadind all roms, then the user should filter the plataform. I think would be nicer to start with the plataform choosing, or show the last played games. 5) I dont know why, but even with the offline signatures the matching rate was real low (even in arcade) and recognition rate was about 50% (25% in arcade) and it is not practical to manually match more than 5k roms. Am i doing something wrong or there is something to improve the recognition rate?

Thanks

michael-j-green commented 5 months ago

First of all, thank you for this server, its really amazing

Thankyou for the kind words! Glad you're enjoying it :)

I have trouble with rom matching (some roms are hacks, others aftermarket releases) so it would be useful the ability to manually edit the rom metadata, including add the youtube video

Metadata and metadata matching is getting an overhaul for v1.8.0, to support custom metadata, as well as leveraging the Hasheous service which I just got up and running. Hasheous is an online database of DATs, and community matches to metadata providers such as IGDB. You can check it out at https://hasheous.org/

although i could manually change the plataform mapping parameters, i think you could add in the config file the ability to play roms for twin plataforms, like super nintendo and super famicom or nintendo and famicom and Famicom disk System, as they use the same emulator

I have issue https://github.com/gaseous-project/gaseous-server/issues/129 planned for v1.8.0. I think this should meet the use case you're asking for.

The unknown roms are all packed together, even if i click from a specific plataform. I think that if i, for example, click in the unknown roms from playstation, then only the playstation unknown roms are selected. The same applies when i am manually matching the files: i select a plataform, match a file, and then the server returns to "all plataforms" page 1, when the ideally behavior would be mantain the same plataform and page previously selected.

This is part of the metadata overhaul I mentioned earlier. It's my intention to do away with the "Unknown Game" item, and generate empty titles that users can edit if a match can't be made.

The frontend starts loadind all roms, then the user should filter the plataform. I think would be nicer to start with the plataform choosing, or show the last played games.

Are you referring to starting at a custom home page instead of the library? I've toyed with that idea in the past, and am certainly not against it. In the v1.8.0 version I'm going all in on user profiles and such as I have plans for further down the track (which I won't get into too much just here in case they can't come to fruition haha).

dont know why, but even with the offline signatures the matching rate was real low (even in arcade) and recognition rate was about 50% (25% in arcade) and it is not practical to manually match more than 5k roms. Am i doing something wrong or there is something to improve the recognition rate?

This goes back to that Hasheous service I mentioned earlier. If you're curious, https://github.com/gaseous-project/gaseous-server/wiki/ROM-Metadata-Matching explains how the metadata matching algorithm works. It's not bullet proof sadly, which is why I kicked off the Hasheous project.

sergiohf commented 5 months ago

First of all, thank you for this server, its really amazing

Thankyou for the kind words! Glad you're enjoying it :)

I am really enjoying this game servers, so please dont take my suggestions as criticism of any kind, as I am writing because i want to use your server as my main game server, so I am really grateful for the server and to you to be so kind to everyone that writes in your github

I have trouble with rom matching (some roms are hacks, others aftermarket releases) so it would be useful the ability to manually edit the rom metadata, including add the youtube video

Metadata and metadata matching is getting an overhaul for v1.8.0, to support custom metadata, as well as leveraging the Hasheous service which I just got up and running. Hasheous is an online database of DATs, and community matches to metadata providers such as IGDB. You can check it out at https://hasheous.org/

Can't wait to test it out

although i could manually change the plataform mapping parameters, i think you could add in the config file the ability to play roms for twin plataforms, like super nintendo and super famicom or nintendo and famicom and Famicom disk System, as they use the same emulator

I have issue #129 planned for v1.8.0. I think this should meet the use case you're asking for.

Not in reality, as this issue you mentioned refers to the ability to choose per game emulator, but to do that the emulator must be avaliable for the plataform. My library is divided in japonese roms for famicom (and its translations) and usa roms for nintendo (the same for Super Famicom and Super Nintendo), but if you look at the plataform mapping, there is no avaliable online emulator for famicom, famicom disk system and Super Famicom, so you cant online play, but they share the same emulator with nintendo and super nintendo, so there is no apparent reason for that. I manually edited the plataform mapping json to literally copy to parameters from one to another and import the file to the system, but you could enable this in the config itself.

The unknown roms are all packed together, even if i click from a specific plataform. I think that if i, for example, click in the unknown roms from playstation, then only the playstation unknown roms are selected. The same applies when i am manually matching the files: i select a plataform, match a file, and then the server returns to "all plataforms" page 1, when the ideally behavior would be mantain the same plataform and page previously selected.

This is part of the metadata overhaul I mentioned earlier. It's my intention to do away with the "Unknown Game" item, and generate empty titles that users can edit if a match can't be made.

That would be great

The frontend starts loadind all roms, then the user should filter the plataform. I think would be nicer to start with the plataform choosing, or show the last played games.

Are you referring to starting at a custom home page instead of the library? I've toyed with that idea in the past, and am certainly not against it. In the v1.8.0 version I'm going all in on user profiles and such as I have plans for further down the track (which I won't get into too much just here in case they can't come to fruition haha).

Yes I am, because i tend to look for the plataform rather than a game, so, to me, feels natural to expect a system selector, instead of the filter. But its not of a big deal, just a preference.

dont know why, but even with the offline signatures the matching rate was real low (even in arcade) and recognition rate was about 50% (25% in arcade) and it is not practical to manually match more than 5k roms. Am i doing something wrong or there is something to improve the recognition rate?

This goes back to that Hasheous service I mentioned earlier. If you're curious, https://github.com/gaseous-project/gaseous-server/wiki/ROM-Metadata-Matching explains how the metadata matching algorithm works. It's not bullet proof sadly, which is why I kicked off the Hasheous project.

I will try hasehous to see if improve.

Tks again

michael-j-green commented 5 months ago

Not in reality, as this issue you mentioned refers to the ability to choose per game emulator, but to do that the emulator must be avaliable for the plataform. My library is divided in japonese roms for famicom (and its translations) and usa roms for nintendo (the same for Super Famicom and Super Nintendo), but if you look at the plataform mapping, there is no avaliable online emulator for famicom, famicom disk system and Super Famicom, so you cant online play, but they share the same emulator with nintendo and super nintendo, so there is no apparent reason for that. I manually edited the plataform mapping json to literally copy to parameters from one to another and import the file to the system, but you could enable this in the config itself.

Regarding this one, I've updated the platform.json file for Famicom (as you have). It'll be available in the next release which is v1.7.4 (currently in preview - though the preview release doesn't contain this update).

If you've made other changes, would you be able to let me know what they are, so I can include them all (you can attach the exported platform map to this issue)? I'd love to make the map as fully fleshed out as possible for future users.

Apologies for missing Famicom, etc. I didn't grow up with consoles, nor do I play region specific releases (I grew up with a C64, and then Amiga, and then PC), so I missed alot of the relationships between the different platforms. Learning as I go now though!

berturion commented 4 months ago

This is wonderful news. Gaseous 1.8.0 will be close to be the ultimate game server :) Thanks a lot!

sergiohf commented 4 months ago

Not in reality, as this issue you mentioned refers to the ability to choose per game emulator, but to do that the emulator must be avaliable for the plataform. My library is divided in japonese roms for famicom (and its translations) and usa roms for nintendo (the same for Super Famicom and Super Nintendo), but if you look at the plataform mapping, there is no avaliable online emulator for famicom, famicom disk system and Super Famicom, so you cant online play, but they share the same emulator with nintendo and super nintendo, so there is no apparent reason for that. I manually edited the plataform mapping json to literally copy to parameters from one to another and import the file to the system, but you could enable this in the config itself.

Regarding this one, I've updated the platform.json file for Famicom (as you have). It'll be available in the next release which is v1.7.4 (currently in preview - though the preview release doesn't contain this update).

If you've made other changes, would you be able to let me know what they are, so I can include them all (you can attach the exported platform map to this issue)? I'd love to make the map as fully fleshed out as possible for future users.

Sorry for the late response, but i took a few days off my work and couldn't answer. I will attach here my file. Testing the plataforms i notice that emulators that require bios do not load. So although Famicom Disk System roms runs with both nes emulators, it requires bios. So, would be nice that the emulator can also load a selected bios if needed.

PlatformMap.json

Apologies for missing Famicom, etc. I didn't grow up with consoles, nor do I play region specific releases (I grew up with a C64, and then Amiga, and then PC), so I missed alot of the relationships between the different platforms. Learning as I go now though!

No worries, i am learning a lot as well and i am just grateful for your work and i am glad to help, even if it is just a little tiny bit.

michael-j-green commented 4 months ago

Sorry for the late response, but i took a few days off my work and couldn't answer. I will attach here my file. Testing the plataforms i notice that emulators that require bios do not load. So although Famicom Disk System roms runs with both nes emulators, it requires bios. So, would be nice that the emulator can also load a selected bios if needed.

Thanks for the platform map... I'll check it out and merge the results.

As for how BIOS files are handled, it's the core that dictates whether a BIOS is required or not.

Assuming you've uploaded the BIOS files into Gaseous; all of the BIOS files will be made available to EJS for execution when the core starts up - this is essentially just dumping them into the directory that core is looking for, it's not telling the core to use a specific BIOS. When the core starts, it checks for a BIOS in that directory that matches the hash it has internally and if found loads it automatically.

When you upload a BIOS file into Gaseous, the list of hashes is checked in the PlatformMap, and if found the file will be treated as a BIOS for that system. You can see which ones are available by going to Settings -> Firmware.

sergiohf commented 4 months ago

I did that, but, as for Famicom disk system did not load the bios and went directly to retroarch menu. I will test a theory and get back to you.

sergiohf commented 4 months ago

Now Famicom Disk System (FDS) worked. I didn't realize that i need to copy the same bios in the 3 systems folders (nes, famicom and fds) in the bios, as i thought the emulator would recognize the nes bios

michael-j-green commented 4 months ago

Yeah... the way it's currently implemented is not exactly the best way (I've learned alot about how BIOS files are handled since I wrote that code).

From 1.8.0 onwards, BIOS files will be stored in a directory named for the file hash, rather than by platform. That way for those platforms that re-use BIOS files, there's no need to store duplicates.

sergiohf commented 4 months ago

That will be much easier.