-
Notifications
You must be signed in to change notification settings - Fork 128
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
[Feature] Epic Games Store support #295
Comments
(Somehow) duplicated of #240 |
Would @tkashkin be up to explaining why they dislike Epic and wouldn't accept pull requests? I haven't really been able to quite get why people dislike EGS so much, other than Epic's aggressive EGS-only strategy, which to me would be moot as a talking point if we had a solid launcher on Linux to work with it. This is just my take on it, which is why I'm asking. |
Sure, it will be a long rant. I don't like EGS and don't use it for multiple reasons:
And after all of that I don't have any reason to even try EGS. In a last few years Steam and GOG did fully convert me from being a pirate into a paying customer. On the other hand EGS doesn't look any more appealing compared to torrent.
Where did I say that? I said I don't want to implement it myself since I don't use EGS, don't like it and wouldn't be able to test integration. I don't use itch.io either, but @hagabaka has sent an initial implementation and now we are working on itch.io integration in #65. (however I do like itch.io model unlike EGS) Hopefully I have explained my thoughts on it. |
Hey, thanks for the write-up! I guess my perspective is different because of how much I use either platform, and how I think of GameHub: I only use EGS for their free games and occasionally playing Fortnite with friends when everyone's bored, and I've liked their larger cut to publishers, if only because indie game development sucks just like the rest of the industry and any way to help another dev out I'm happy with. Conversely, I really like the look of GameHub and could see it replacing Steam Big Picture for me, so "x feature over y" doesn't mean anything for me because I can import the game into either and be pretty happy. I completely misunderstood your position in #240. I thought you were saying that you would refuse anything EGS related being added to GameHub, not simply that you won't actively develop for it. I apologize. |
You'd understand more if you knew more about Epic-the-company, they've long been slow on development (though that was primarily on engine work in the past, rather than a store).
It's a huge dealbreaker for me, I only use linux.
I understand the cut that they want, however Steam has immensely better service and features, everything from server hosting and matchmaking, ban handling, forums, mod distribution (big one here), lots of optional features that devs can put into their application (which do not make it require steam to use unless they program it to do so), in addition the devs are allowed to give away or sell steam keys on other services (as long as they also sell on steam for the same price) at no cost (steam takes no cut, yet the game still supports full features), as well as just so much more that I'm leaving out for brevity sake. The Epic Store supports not even what most would consider the bare minimum. If devs took advantage of even a fraction of what steam offers it would not only save them money (probably enough to offset than 18% extra cut) from their own hosting and licensing costs, but would add so many more features for their community as well.
I'm against the concept of exclusives, period. Steam at no point has ever EVER mandated an exclusive (or even gives any bonuses at all for being exclusive, there is no bonus whatsoever for being exclusive on steam nor has there ever been).
Eh, Valve's games needed steam to be installed, but they did not require purchasing on steam, there were other places (mostly brick and morter) that they could be purchased from, but still, that is a dev choice, not steam mandating anything.
This, this right here is one of the big thing that shows the true colors and why I will not even support them now even if they got every steam feature out, similar reasons I don't use Windows, company morals is a big thing for me.
...yeah, I relate..
Also agree there, though for me it was more of ~15 years ago that it 'converted' me. I'm happy to pay, but it must be more useful than getting it other ways, and steam is dead simple with the features I quite like, in addition to GoG, Humble Bundle, and Itch.io, they all support my platform and make it trivial to acquire whatever I want with 2-click payments in most cases. A big thing for me, I feel absolutely no need to play a game if I don't agree with their morals, I won't pirate it, I won't even think about it ever again in my life and I write off the company. There are more than enough games to play otherwise, not just in my account but others via reputable devs that there is just no need worrying about the latest and prettiest XYZ game. I absolutely at this point in time (without EGS going through a major cleanup, including getting rid of the current CEO) will not support EGS, nor any game dev that chooses to go exclusive with them (not just their game, but the entire dev is blackballed at that point, will not even touch their past games that I might otherwise already own). |
Just wanted to say that I think all the reasons exposed are quite interesting to read and discuss! Beyond that, if someone is planing to work on this feature in the future, it could be a good idea to take a look to this code which is used to download Fortnite game files using Epic's servers. |
Hey, it's in C#, neato. That'll make conversion pretty easy. So what would it take, then, to spin it into something more general? |
To be honest, I have no idea. I think a good first step is to ask the author of that code how likely is to get a more general code to download other games, apart from Fortnite. |
Okay, so it looks like what would be needed would be to be able to fetch the owned games for the user, and then from there feed the name to a fetching URL. They appear to have a public API, so that's good. |
A small update on this. I just saw this open-source replacement for the Epic Games Launcher in case anyone is interested in reviving this feature. |
I'm not sure if someone started to investigate that issue. I've started digging into GameHub source code and I was able to use legendary (provided by @neuromancer ) to integrate EGS with GameHub. I'm far far away from ready solution but I have something: I can install game and run it. |
OMG, that's amazing! is your branch ready for testing? I can give it a try in that case.. |
Oh wow! Great job! I can also help test that. |
Like I said it is far away from ready PRQ. But... ok. dotevo#1 Steps:
|
FYI You can also read game metadata from I also added csv/tsv output earlier today so you can use those to avoid regex-ing the game names from That said there may be breaking changes to the CLI at any point so parsing its output seems less than ideal. |
@derrod Thank you :-) Looks much better. |
Great job! I know that are there are some free EGS games in my account and would be nice to be able to run those in GameHub via Proton. If this is merged into GameHub with legendary bundled and not a separate install, that would be a nice bonus! |
Another approach is to re-do all the legendary implementation inside GameHub, but I don't know if that's reasonable or not. |
@dotevo Legendary requires Python3.8. I don't have it on my system (Debian Stable). If you need help testing I will need to install a Virtual Machine. |
What if you install pyenv from https://github.com/pyenv/pyenv#basic-github-checkout or https://github.com/pyenv/pyenv-installer and then install Python 3.8.2 from there? Can set it globally or on a per directory basis if needed. |
Currently I don't have enough time to finish my PR. |
@dotevo, your work is awesome, it works out of the box. |
Great :-) Currently, the source code is very low quality. It was more-less copy and paste of existing modules. I've never used VALA and it was my first time when I was digging into GameHub. I've tried to add some TODO stuff to my draft PR. Feel free to take a task or to fix any part of that PR. |
No worries, same here. I found some nice material on VALA and I will try to keep things consistent with the rest of the code as well. That was a nice TODO list, after work today I will tackle it, starting from checking the "Legendary", and setting it up. I found where most of the code is supposed to be, I just need to figure out how to do it in VALA, like how to check if a package exists and how to get it using the distro package manager. |
I need some help here with the
Wasn't the build process supposed to update it ? (meson and ninja) I figured out how to check if legendary package is there, so I was updating the UI to show that and to support the authentication code from Epic. I get errors for example: My code
Another error: The code
Update: It was not updating the file on the glib-2.0 folder, so I removed the the AUR version I had here. It also removed the file. Fix: After removing the AUR, I just needed to run |
Just need to update the path to wherever legendary is saving the games, and disable it if there is no legendary/authentication. Maybe I can add a place to add the authentication code from Epic just like the Itch. |
I didn't see how Itch is done. We can use legendary for that.
|
Itch implementation is using Butler, it is a command line tool similar to what Legendary is doing for us. The only difference I am seeing now is that they create 3 wrappers a ButlerDaemon, Client and Connection. Legendary is already running as a service here, so I wonder if this is a requirement to work in a few distros. I think using Legendary might render us good results faster. I don't think using that could be a problem given that Itch is already using another package that must be running. The difference is that Butler is from Itch.io while Legendary is not from Epic. Once we get the Epic games working here with Legendary (and I have a better understanding of the code on GameHub) we can start thinking on how to improve it with people's feedback. My fear on not using Legendary is that it took derrod +2 months to write Legendary. Rewriting it inside game hub will not be an easy task even with the help of Epic API Documentation |
Are there any way to read log messages from the subprocess with
I saw that to get the game list you read messages written with "print". Legendary code handling authentication doesn't return anything and doesn't "print" anything when you are authenticated. It is all in the logs. I will ask him to add some values to the return or to print stuff. But we probably should go with his suggestion of parsing json messages. In the meanwhile I will assume that if it doesn't print it is a success. |
@jcnils I think that we need something like |
is #377 still in progress? There is this project to look for inspiration, if needed: https://github.com/flavioislima/HeroicGamesLauncher |
It is cool! I saw him on reddit asking suggestions for names a while ago, and someone mentioned Heroic. On my part it is more about time than inspiration. I only have a couple hours per week to work on side projects. Dotevo code is working fine, but some features required things that where not implemented on Legendary at the time. So I was trying to implement something on top of Epic API. |
Any idea when this will be rolled in the master branch and released for everyone to use? |
This will probably happen after the current refactoring is done.
@jcnils Did you accomplish something already with the direct implementation? |
@Lucki It looks great. |
No, that's still handled by legendary by getting the
Thanks, I'll have a look if I can include some of that. |
I've looked into legendary a bit more and it seems doable to just do the same in GameHub. I'm able to log in and I'm able to fetch all the game information without legendary. @tkashkin Legendary probably breaks EGS ToS. Same would be for any internal implementation - would a rewrite of legendary get merged with that conflict? |
This link is broken or I need to join some server to see it, can you replace it by a screenshot or summarize it? Maybe the best solution for cases like this and for easier extension would be to move game sources and data providers into separate plugins, this shouldn't be too hard to do. I have already planned to somewhat separate game sources, right now I am rewriting them and they can be toggled with meson build options in my local branch. |
Stupid discord…
There's nothing explained, just a random? guy claiming it would break ToS - I asked for further details but there was no answer.
Guess I'll keep trying to rewrite the functionality into GameHub then. I'm assuming an already working solution isn't too hard to make a plugin of? |
Shouldn't be too hard, but there will be some changes. |
There doesn't seem to be anything in actual terms of service that legendary violates: https://www.epicgames.com/site/en-US/tos Though I don't know if there are any other ToS related to the store, but at least in those ones there's nothing really that would make a project such as legendary violate them. Though IANAL. |
@Lucki Great that your branch is still alive! I will check your new version. It think this branch should be merged. It is opened so long and Epic Games support is long-awaited feature. |
Hey guys, even though the idea of integration of Epic Games into GameHub has been a low priority, I've noticed that quite a lot has been discussed here. Moreover, I've found out that this implementation is also being worked on but there haven't been any major developments or updates recently. I'm not sure whether the testing branch has been paused or abandoned. I was wondering if anyone's thought of just importing games like Steam via unofficial Epic Games clients. I know that the branch being worked on uses Legendary to login and install games but Heroic is getting popular and you can maybe consider importing from it. My project Heroic Bash Launcher may help in some way for launching games. What do you think about this? |
That's not true. It basically does the same legendary does but it's doing it on it's own. Feel free to improve things (there's a probably incomplete list at the PR top) or squash any bugs you're encountering. |
Lutris has support for bringing in your library from the Epic Games Store, so I was wondering if there were plans of adding support for it in GameHub. Can have it like with GOG where you can use the built in Proton or WINE to run the games.
The text was updated successfully, but these errors were encountered: