New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add game list for Heroic Games Launcher #168
Comments
I've got some very basic and very WIP work done for this for GOG at least, sideloaded should work as well but this is untested at the time of writing. Right now it can get Heroic games and it also works for the ctinfodialog, but no work yet for a Games List yet. I'm planning to look into this after the #192 to avoid annoying conflicts 🙂 Just wondering: What does the Epic Games Store If the |
Based on discussion in #193, Legendary handles games with a separate structure using an |
With #193 merged (woo!!), I'm gonna take a look at implementing at least an initial Heroic Games list similar to #192. The plan currently is an initial draft implementation that just displays game information. I am not sure at least initially if there will be functionality like the Steam games list for updating the compat tool, but for Heroic it should be possible (famous last words 😅). I did a bit of investigating and want to try and explain what I found with regards to implementing this compat tool updating, hopefully I can explain it in a way that makes sense: How Heroic Stores Wine InformationHeroic Wine information is stored for each "wineVersion": {
"bin": "/home/user/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine/lutris-GE-Proton7-37-x86_64/bin/wine",
"name": "Wine - lutris-GE-Proton7-37-x86_64",
"type": "wine",
"lib": "/home/user/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine/lutris-GE-Proton7-37-x86_64/lib64",
"lib32": "/home/user/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine/lutris-GE-Proton7-37-x86_64/lib",
"wineserver": "/home/user/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine/lutris-GE-Proton7-37-x86_64/bin/wineserver",
"wineboot": "/home/user/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine/lutris-GE-Proton7-37-x86_64/bin/wineboot"
}, Heroic stores the wineserver, wine boot command, Wine name and Wine binary all separately. If you change these paths to a valid Wine path, Heroic will launch using that Wine command. And if any of the paths are invalid, Heroic will complain and suggest another tool to launch with. It only appears to store the further Something interesting here is So this means if we give the ability to update the Wine version in the Games List for Heroic Games, the text may not update in the "Wine Version" dropdown in the game settings. This doesn't appear to impact functionality as the Proton version on the game info screen updates, and the game appears to update to use the Proton version pointed to in the paths, so it's just this display issue. It could lead to confusion, though. How Heroic Finds Wine/Proton ToolsFor some background: Heroic lets you choose Wine and Proton versions from at least the following places:
For a game's settings, Heroic has a little "Help" button that helpfully outlines the locations as well:
Interestingly this doesn't list the separate Steam library folders, but I have verified that it shows Proton versions for me that are not in This help text also mentions that it looks for "CrossOver" tools as well. As far as I know this is a Mac-only tool by CodeWeavers based on Wine, but it doesn't mention where, and I don't think this tool is available for Linux, so we shouldn't need to worry about it. Differences in Paths for Compatibility ToolsHeroic will only select valid Wine/Proton tools from these directories (so e.g. SteamTinkerLaunch or Luxtorpeda will be excluded). However, Valve Proton, GE-Proton/Proton-tkg and lutris-GE-Proton (aka Wine-GE)/Wine-tkg each have different paths to the Wine binaries.
For Proton tools (Proton-tkg, GE-Proton and Valve Proton) it appears that it only stores Implementing Compat Tool Selection LogicThis means that if/when we implement the ability to change Wine/Proton versions for a Heroic game on the Heroic Games List, we may have three different paths we have to account for. We can probably check this based on their paths, we could have a list of Probably we would have a function that can check for this based on a selected Heroic tool (it could take the We should also make sure we follow the pattern for how Heroic names Wine and Proton tools, which is
So we need to ensure we set the I'll also mention that I am using the config files for sideloaded and GOG games as reference only, I don't have any Legendary config files to check with. This is working off of the assumption that Heroic, sideloaded and Legendary games have the same config structure in this respect. I would assume that they would but I wanted to make that assumption clear in case I am wrong :-) So aside from the Wine/Proton name display issue mentioned in the game's config settings, where the name does not update in this single instance to reflect the currently selected tool. This could be a Heroic bug but surely it has to be stored somewhere if its stored, right? I'm just not sure where. Perhaps it's some weird Electron cache folder. I wonder if it's worth reporting some of these (apparent) inconsistencies upstream as we seem to have discovered a small handful at this point :-) I don't think the compat tool selection will be completed for the initial draft of the Heroic Games List but I hope that the research here made sense, and that it can help in future when it comes to potentially implementing this functionality. |
Is there any case (except Proton) where they don't share a common prefix like
I did a quick search but wasn't able to find a file (at least not plaintext/json) that contains the Proton version except the files in
I think it was changed at some point.
It's actually available for Linux (and ChromeOS) as well. I don't think it is well suited for gaming though (doesn't use DXVK by default).
I wasn't able to spot any difference between them, at least the
I'm not sure whether that behavior is intended. Ideally (currently) the
I think that is a good start. Thanks for doing the research on that! |
As far as I know, Wine builds should share a common prefix - That is, Wine-GE and Wine-tkg. It should only be the Proton tools that have different prefixes - One prefix for Valve Wine and another for GE-Proton/Proton-tkg (didn't check things like NorthstarProton though).
Ah yes, I think it has actually been around since before DXVK (an era that feels so long ago at this point :nerd:). I don't think it will impact us too much on the ProtonUp-Qt side, though as always bug reports from users will be the deciding factor there :-)
That's really good news, I think that's all we need to be concerned about with regards to allowing the option to change the Wine version. Since the format is the same we'll just need to rebuild the At least an initial version of the Heroic games list should be ready soon. One thing that completely slipped my mind somehow during the Heroic work I've been doing is testing with native games and seeing how data (i.e. So I'll do some investigation around native games, and a couple of other potential minor touchups, and then get a PR out for review on the games list :-) |
A basic version of this has been implemented now with #199. This could be kept open though, for discussion and further improvement i.e. switching Proton versions and so on. Just updating here for clarity that this feature is in main now for users reading :-) |
I think Heroic is getting a UI update soon I think (GamingOnLinux says "Heroic Games Launcher has a big UI upgrade coming in the 3.0 update which isn't quite ready yet [...]"), we should keep tabs on this and monitor in case there are any breaking changes we need to deal with here. If 3.0 comes and there are no breaking changes, we could possibly close this issue :-) The games list has been in place for a while now and seems to work well. |
Heroic Games List was not loading for me temporarily, but adding permission to Original responseActually, the Heroic Games List is blank for me on 2.8.2 Flatpak, but not on 2.8.2 AppImage or main... I don't think my Flatpak permissions are messed up either and I don't remember it being blank before. There must be some kind of permissions issue...? The Steam and Lutris game lists still display correctly. Reset all my ProtonUp-Qt Flatpak settings with Flatseal and still not displaying. No errors in the terminal when running the Flatpak either From what I'm remembering while looking at the code in ProtonUp-Qt should have all the correct permissions though. Unless we need to specify reading specific files? But we don't need to specify that for Steam and we can read
Compatibility tools still populate correctly for Heroi (I have a DXVK, vkd3d-proton, and a Proton version installed), so it can access |
That's interesting. Had no issues on my side. Also checked Heroic Flatpak Manifest just in case, but there seem to be no relevant changes. |
Add a game list for the Heroic Games Launcher.
The game list could be implemented in a similar way as the Steam game list.
Details
(As of December 2022)
Configuration for the Flatpak version of HGL can be found in
~/.var/app/com.heroicgameslauncher.hgl/config/heroic
Additional configuration for Legendary is stored in
~/.var/app/com.heroicgameslauncher.hgl/config/legendary
Games: Side-loaded apps
The file
~/.var/app/com.heroicgameslauncher.hgl/config/heroic/store/sideload_apps/library.json
contains a list of manually added games. Example:Games: GOG games
The file
~/.var/app/com.heroicgameslauncher.hgl/config/heroic/store/gog_store/library.json
contains a list of GOG games. Example:Game details
The files in
~/.var/app/com.heroicgameslauncher.hgl/config/heroic/GamesConfig
contain the configuration for a specific game.Example (side-loaded app
sPZQ5kmzYj5KnZKdxE2bR1.json
):Legendary: Installed games
The file
~/.var/app/com.heroicgameslauncher.hgl/config/legendary/installed.json
contains all installed Legendary/Epic Games games. Example:The text was updated successfully, but these errors were encountered: