hydralauncher / hydra

Hydra is a game launcher with its own embedded bittorrent client and a self-managed repack scraper.
MIT License
9.81k stars 1.99k forks source link

Auto-detect Game .EXE #64

Open caduHD4 opened 2 months ago

caduHD4 commented 2 months ago

Develop a feature that enables the program to automatically locate the correct executable without requiring manual selection by the user. This could involve searching within the game folder for executables based on characters similar to the game's name, streamlining the gaming experience and reducing user effort.

hydralauncher commented 2 months ago

This would be a killer feature, but in reality it's a little bit farfetched. “searching within the game folder for executables based on characters similar to the game's name” is a wild assumption, since almost no game that I am aware of behaves like this.

Resident Evil 2: re2.exe Red Dead Redemption 2: rdr2.exe The Last of Us Part I (and a few other Sony games that were ported to PC): launcher.exe

Plus, scanning the whole drive recursively is a very intensive task. This is almost impossible to be implemented without manually dictating every single game executable. Furthermore, some cracks patch different binaries for the very same title; so, for instance, you might launch the same game using y.exe or x.exe depending on the version/crack that you have.

caduHD4 commented 2 months ago

I think I have a solution for this in a simple way. Let's assume that a user is downloading one of several "fallout 4" torrents, each torrent has an ID, based on this the launcher could send the data of which .exe the users selected in "play", so when a user goes to download Hydra would ask if he could use the executable that most users chose. So assuming that 10 people downloaded the game, 8 chose x.exe (standard) and the other 2 y.exe (mod, etc...), I believe it could serve something similar to that, what do you think?

hydralauncher commented 2 months ago

I don't think this is possible to be achieved with Hydra's philosophy.

So assuming that 10 people downloaded the game, 8 chose x.exe

This necessarily implies that we're gonna store users' information in some database/server (even though it's just the average selection for launching a game), which also implies network traffic to a centralized server, which I don't see with good eyes at all. It has been too much of an effort to keep Hydra working in the state that currently is without any server, I'm not considering to change this anytime soon.

caduHD4 commented 2 months ago

Actually, you have a good point. Maybe then the only way would be to create the list with the default directories in a raw "index.min.json" in the GitHub repository or something similar, but the problem would be having to keep updating it manually... But maybe it would help the most famous/most played games. If you find it unfeasible, you can now close the insue

pdts commented 1 month ago

I believe this feature is a must-have.

I, for example, currently have close to a hundred installed games, and I can't possibly be bothered to add them 1 by 1. And without them, I realize that I only launched Hydra several times out of curiosity, while I'd be using it 24/7 if it had all my games in one place.

If we only need an appropriate solution – let's just brainstorm and pick one. We could let users throw in the shortcuts many games and installers create. We could borrow databases from the installed launchers like Steam, Epic, GOG, etc. We could just add any executable from the specified "games" folders and subfolders, and let user test and delete bad ones – still much easier, than adding by one.

Let's just agree that it can be achieved, and then pick a solution that works for all.

scrlkx commented 1 month ago

Can't we have a standard to store this type of instructions inside the downloaded files, like the old autorun.inf? The torrent itself could be packaged with a config.inf file. Of course, this would rely on people that packages the games, but sounds reasonable at first.

scrlkx commented 1 month ago

We could also have a whole different solution for that, not assigned to Hydra, like libgameinfo. It could be open to work on top of different data sources and just retrieve the instructions based on a identifier (a torrent ID or something else).