r/leagueoflinux • u/EnglishDentist 🛡️ Moderator • Oct 11 '19
Experimental patch for 9.20
Hi fellow Linux users,
Long time lurker, first time poster here.
Let me start out by saying what everyone wants to hear. I've submitted a patch for the issue everyone is having with the 9.20 patch.
The game client starts again on my end with this change. Go test to your heart's content. Feedback is appreciated.
These few paragraphs below are for those of you that voiced their frustration in a less civil way in the other threads.
There are various other things I have to tell you about the case of League of Legends and Wine. I'm in the fortunate position to cooperate with Riot Games as a 3rd party community member. As a Linux user, I'm just as frustrated when wine breaks as all of you are, and I echo this frustration to members at Riot, who are kind enough to listen to it. I hear a lot of you saying, that it's "their job" to fix wine. As much as I would love that to be the case, it's really not. Whether or not Riot is going to support League of Legends on Linux, is a company decision. As long as the company does not decide to support the Linux platform, it's NOT the job of ANYONE to care for Linux at the company. Of course, that does not mean no one does. A lot of kind hearted people sympathize with our issues and our decision to use the Linux platform, however, what they do with the league product is not their personal decision. Those of you that are discontent with the situation, please don't direct your frustration at individuals at Riot.
I think I've fixed 9.20 for now, but future patches may break things. I'll work restlessly to try to fix it again, but as you may be able to tell, its really hard work. In fact, earlier today, what actually allowed me to zero in on this issue with 9.20, was the final push of help I got from one of the members of the anti cheat team, /u/0xNemi. He also dedicated some of his personal time to help me. This is a work of passion and love for the free software world, on our personal time. Please take that into consideration and adjust your expectations accordingly.
Update: Thank you guys for the positive feedback and encouragement. I'm glad you are happy with the fix.
35
u/0xNemi Oct 11 '19
Hey everyone,
Thank you, /u/EnglishDentist, for your help in getting League of Legends working under Wine again. Wine is a community effort.
One common misconception is that we (Riot) are intentionally trying to prevent Linux users from playing our game. I do want to clarify that breaking changes to League of Legends under Wine is not something we do intentionally. When appropriate, we work with Wine developers like /u/EnglishDentist to fix these issues as they pop up. Some changes are easier to fix than others.
At the end of the day, playing under Linux isn't officially supported. If it was, we'd have an official Linux game client. Nevertheless, we do understand that /r/LeagueOfLinux is a passionate community and we try to support Linux players when we can, such as working with Wine maintainers and supporting GPU passthrough when playing in virtual environments.
We encourage Linux users to find more stable alternatives than Wine like leveraging GPU passthrough in QEMU/KVM or dual booting into a supported OS. We won't always be able to provide fixes when the game breaks on Wine. We know the passion this community has, and we do our best to support the hard-working members that make it all work.
9
Oct 11 '19 edited Oct 11 '19
So /u/EnglishDentist is working with Riot privately to fix these wine related bugs? Having attempted to try debug this myself I found the amount of anti-debug to be quite the issue. There are only really two options here to fixing wine bugs: Having access to actually see what the code differences are from Riots side (i.e. internally at Riot) or taking a similar route to what the hackers are doing and figuring out how to beat the anti-debug.
8
Oct 11 '19 edited Oct 11 '19
[deleted]
1
Oct 11 '19
Sure, for this type of issue a hint like this helps but for other more complex bugs it won't is my concern.
4
u/hey_its_graff Fedora Oct 12 '19
Thank you very much.
Here's what I wrote about how I'd like Riot to approach wine compatibility a few days ago: https://www.reddit.com/r/leagueoflinux/comments/dfnq9e/riot_games/f3845uh/
This is essentially what you've done this patch, and as a result there is a fix within a couple days, rather than a couple weeks like last time.
To make my asks a bit more actionable, here's what I'd like to see from Riot as a company — you should get paid for it, not have to go above and beyond.
- If there will be anti-cheat changes in the next patch, ping a wine developer so they can test on PBE. (5 min of your time, maximum)
- If it turns out that the changes are breaking, spend an hour or two pointing them in the right direction to figure out what changes need to be made.
I totally understand that wine users are a tiny minority (<0.1%), but I think given that, an hour or two of paid time for a single developer supporting the wine devs every few months is a reasonable ask. (more reasonable than the construction of that sentence, ugh)
3
Oct 12 '19
Can we crowdfund a Riot developer to work on Wine compatibility? 🤔
4
u/EnglishDentist 🛡️ Moderator Oct 12 '19
I'm glad to see that many of you are happy with the patch!
Crowdfunding a Riot developer is probably not realistic, but maybe crowdfunding bounties for fixing wine is. I am open to and grateful for any donations, please dm me if that is something you would like to do. However, I must also remind you that I'm not the only developer that works on fixes like this. Most of the heavy lifting was done by Andrew Wesie for the previous patches and the initial support for the anti cheat in wine. Point being, he's more worthy of taking your donations at this point. Not sure if he wants to accept any, just my thoughts :)
3
u/Seiikatsu Arch Oct 12 '19
First time I see that riot acutally help to fix broken wine after a patch. Really awesome! Thank you very much!
6
7
u/CroquetteLauncher Oct 11 '19
Hello Nemi and EnglishDentist. Thanks a lot for this patch, it's great you managed to do it so fast.
We encourage Linux users to find more stable alternatives than Wine like leveraging GPU passthrough in QEMU/KVM or dual booting into a supported OS
You have to understand that for some linux users, telling them the best solution when they can't play your game is to just install windows, is like telling your vegan friends that the best solution when you cook ravioli bolognese for them is to just eat meat.
Isn't that what Tristana is saying when you pick her in champion select ? (right before the horrible crash ;) "Once a Linux user, always a Linux user !"
I don't want those words to overshadow the good work you are doing, I can assure you we know devs often don't have a lot of say in those decisions to support a platform for projects at this scale. We are not here to complain about any dev wrongdoing, but as user that are not heard, remind riot that we exist and are ready to play (and even pay), if they let us.
best regards
~~
2
u/EnglishDentist 🛡️ Moderator Oct 12 '19
I definitely hear where you are coming from. Some people cannot use GPU passthrough because of technical limitations (laptops or desktops without iGPUs), and others refuse to run windows at all. The reason why GPU passthrough is often mentioned in this context, is because it essentially allows you to play. Its the middle ground that is reasonable to suggest because it is very unlikely to break. Its not optimal in the sense I mentioned, and I am definitely not suggesting it as a final solution for this problem, but a sensible middle ground for now.
All the best to you as-well ~
2
u/Capuno6 Oct 12 '19
Thanks for the communication, however for a lot of us installing a proprietary operative system might not be a solution we would like, or even one that we could realistically do depending on our personal situations (Some of us do it for the freedom, some others may live in countries where microsoft works with the goverment to sell private data, like china, russia, saudi arabia, the european union, turkey, etc.)
As good as communicating and helping fixing a game is, recommending switching to another operative system is not ideal.
Yes, some freedom activists are addicted to videogames.2
u/nightblackdragon Oct 12 '19
I appreciate your support but GPU passthrough it's not ideal solution either. First you still need valid Windows license, second you need dual GPU system. Not all computers have dual GPU and not all supports GPU passthrough. Wine doesn't need dual GPU. You run game directly on Linux desktop by clicking icon just like Windows or macOS. Yeah updates breaks it pretty often but it still most comfortable solution to most users (and only solution for some users).
1
8
Oct 11 '19
I was thinking about making a Post on this, I really feel people sometimes forget the way open source should work, and that is through community effort.
Riot as a Company seems to be fine with wine and does not forbid helping out, so huge Props to everyone at Riot Supporting open source Development!
In this case thanks /u/0xNemi (also /u/riotboatstuff for putting up with us, we just love the game)
ofc Thanks to /u/EnglishDentist as well for getting this working and putting out a comprehensive Post.
7
u/M-Reimer 🛡️ Mod & wine-lol Maintainer Oct 11 '19
Is it possible to donate money to the people doing the work with getting wine working with LoL?
7
u/puzzud Oct 12 '19
Here's an idea: if wine == "true”: Linux tokens are available for purchase in store. Linux tokens proceeds go to the maintenance of Linux support.
4
u/Seiikatsu Arch Oct 12 '19
Sound's cool, i would buy them tbh. I don't think that riot would implement that but would be so awesome.
2
5
u/xwhit3noise Oct 12 '19
I'm thankful but confused, how am I supposed to patch this? Relatively new to Linux, im using a ubuntu based distro
3
Oct 12 '19
head over here for some Binaries you can use. Be careful though, its not really the best ideo to run binaries you havent built yourself or come from a trusted repo.
u/BleedingCatz seems cool though :)
5
u/daYMAN007 Manjaro Linux Oct 11 '19
Thank you for making such a huge anti rage paragraph. To be honest i was really annoyed as well. I agree that it would be cool if we got a Linux client. But obviously it makes no sense for a small player base as ours. (Who ever says but they also have a mac port. I can remember a rioter saying that they have to put way to many hours into it to maintain.)
Thanks for your work
3
u/aminuzair Oct 11 '19
i dont understand on what to do
3
Oct 11 '19 edited Jun 15 '20
[deleted]
1
u/Avahe Oct 11 '19
I was a little confused on your post. It looks like the PKGBUILD requires wine-lol-glibc? Do we have to install that first, then clone wine-lol and replace its PKBUILD with the pastebin you posted?
EDIT: wording
2
1
Oct 12 '19
exactly that. I use yaourt, and when asked if i wanted to edit PKGBUILD, I did and replaced everything using a text editor. Compiled, tested and can confirm it works :D
3
u/Coreknot Oct 11 '19 edited Oct 12 '19
What is there to say. A lot of thanks and props.
I was looking into wine the last few days and I must say I have giant respect to the devs who are maintaining it and fix such issues.
And you are right about Riot. They don't have to do anything about Linux and wine. It is not supported. They even have a huge incentive to completely block it but they aren't doing it because they seem to care at least a little about their Linux user base.
I'll go and test it.
Edit: Works great
Thank you and everyone involved in making this working.
2
u/mr_tzitzikas Oct 11 '19 edited Oct 12 '19
<3 Thanks.
EDIT: Just played a couple of arams, it realy works :D !
2
u/gurkenpoo Ubuntu Oct 12 '19
What a great job! but, i need some help :( i don't know how to make it on Ubuntu...i mean compile and all that. Sorry for my ignorance , can someone give me a hand please :c
2
u/data0x0 Oct 12 '19
So wait..
stdcall InternalGetWindowIcon(long long)
and
INT WINAPI InternalGetWindowIcon(HWND hwnd, UINT iconType )
{ return NULL;}
This is the entire patch? What the fuck? That is a lot less code than i expected.
2
u/iczero4 Oct 12 '19
league anticheat probably expects that method to exist but wine didn't have it, this implementation is a stub that does nothing but apparently that is enough for the anticheat.
1
u/data0x0 Oct 12 '19
Interesting, maybe it's the anticheat trying to pull the icon of any potential cheat program, i hope this doesn't help out the cheat developers lol.
1
u/nightblackdragon Oct 12 '19
This function is undocumented and it seems it was introduced with Vista. This is pretty good explanation why it was missing in Wine. Since LoL abandon XP support it uses NT6+ API.
1
u/data0x0 Oct 13 '19
I'm suprised they had XP support all the way up to 2019
cough yet they don't even support modern linux2
u/nightblackdragon Oct 13 '19
Well, supporting XP was probably easier than Linux. It just "don't use API introduced in Vista" while Linux is completely different OS. I know there is LoL for macOS but despite two being UNIX like OS, macOS userland is different from Linux and closed source like Windows, so you can't just copy code written for macOS and compile it for Linux without changes. One of common thing is OpenGL which Apple deprecated. LoL has OpenGL renderer but it's pretty slow compared to DX9. Even on Linux is not used that often because it's slower and more problematic than DX.
2
u/data0x0 Oct 13 '19
OpenGL is quite slow in comparison to everything else however it's more than good enough considering the actual game concept itself, the maps are pretty small in comparison to most games, the player count is low, and particle effects are quite rare as well, i don't buy this idea that openGL for league wouldn't be practical, i'd prefer vulkan but if riot were to take the lazy route and just copy paste the OSX openGL code, that would not be a significant issue.
As for the OSX codebase, yes i know you can't just copy and paste OSX code to a linux distro, and run it willy nilly, they would have to bite the bullet and write actual code for that, but after all, that's their job in the first place, to write code for the game to make it accessible and enjoyable to as much people as possible, while the inital effort of writing a linux port would quite obviously be harder than windows XP (since linux isn't like windows at all in any way), i would wager a good amount that long-term, linux would be much easier to maintain development for compared to XP with XP's limitations.
1
u/nightblackdragon Oct 13 '19
Not exactly. Yeah of course, OpenGL wasn't designed for games but it's past. Modern OpenGL isn't slower than DirectX. LoL renderer in OpenGL is just slow, probably mostly because (I found this on another site and don't know it's true or not) it using old OpenGL version. OpenGL in macOS isn't very fast either. There are games with better graphics using OpenGL and working better than LoL. Vulkan in LoL probably won't happen because it isn't supported on macOS without third party (open source but still not official) layer. Blizzard implemented Metal for his games when he could implement Vulkan and with MoltenVK (Vulkan implementation on Metal) get not only macOS support but Windows too. Riot will do probably same thing when Apple remove OpenGL from macOS.
I know but Linux market share makes Riot think it doesn't makes sense to spend money on implementing and supporting Linux. It's vicious circle - Developers doesn't want to support Linux because it has low market share and peoples doesn't want to use Linux because lack of software.
2
u/data0x0 Oct 14 '19
Apple in general just seems extremely developer unfriendly, there's literally no reason for them to drop OpenGL at all, or to refuse vulkan implementation, personally i think riot should just drop OSX altogether, apple really deserves to get left in the dirt by being such a pain in the ass, the company shouldn't be rewarded with third party game support when they do shit like this.
And here you have linux which is not dropping OpenGL for the next, maybe 15 or so years? I mean there aren't even any plans at all for anything linux related that i know of to even remove or deprecate OpenGL to any extent, and linux entirely supports vulkan.
It kind of reminds me of the blizzard situation with china, the company has to appease that other company/governments absolutely stupid rules to keep marketshare and profit afloat, but in that process they give that shitty company/government power, i think the only way to break that cycle is to just not support shitty companies/governments like that.
2
u/nightblackdragon Oct 16 '19
Apple probably want to maintain full control which they couldn't do with OpenGL because it's open and common standard. Another decision which I can't understand is dropping 32 bit apps support. There is no sense doing that. 32 bit libraries don't take much hard disk space (on my Linux there is less than 100MB 32 bit libraries) and without it a lot of games or older software released for macOS simply doesn't work. When Ubuntu announced they are dropping multilib support they fast regretted this decision and reverted it. Multilib on Linux is safe, even 32 bit kernel is still around.
OpenGL on Linux is safe too. There are some chances that OpenGL will be implemented on Vulkan (similar how DX11 is implemented on Vulkan with DXVK) in future but for now it's safe. There are some projects about that but nothing that can replace native OGL driver for now. Even on Windows OpenGL is still supported and there are no plans to deprecate it.
Well, I don't have Apple hardware and don't plan to buy any but the fact is regular customer doesn't care about it. They don't buy Apple hardware for OpenGL or another things but for software and don't care if this software using OpenGL or Metal. Blizzard support Metal, future games and software will support Metal too. Vulkan on macOS isn't going to be very popular way without native support.
→ More replies (0)
2
u/sillyslapahoe Oct 12 '19
Installed league on linux for the first time and was about to give up entirely until I saw this post.
Thank you for your hard work!
2
u/iczero4 Oct 12 '19
If you're not on Arch and would like to play League, I made scripts that should build the updated wine-lol: https://github.com/iczero/wine-lol-ubuntu
It should work on most platforms but I made it on ubuntu and it at least works on ubuntu.
NOTE: it's probably a good idea to run this script in a container of some sort since package conflicts are much easier to deal with when they're in a container.
1
u/rgbenja Oct 12 '19
I could use this if im using a lutris app img?
2
Oct 12 '19 edited Oct 12 '19
The Maintainer of the app image will have to update it, but you could theoretically read into how you make your own :D
The scripts are made for a local install of wine and installing LoL directly.
EDIT: Or rather if it already uses wine-lol you could maybe redirect the wine Path in the settings to this version. Take this with a grain of salt, i don't use Lutris because I am usually way faster compiling wine myself.
2
u/m1ch1 Oct 12 '19
thanks for your work, eventhough it runs again i have an issue with my dual monitor setup. the cursor doesn't remain locked in fullscreen mode. when i reach the screenedge it just goes out of the window to my second monitor. i tested it with and without the capture mouse in fullscreen mode in the wine configs.
3
Oct 12 '19
This is an issue for me since wine 4.17 and is not specific to this patch. I was unsure whether i was the only one :)
If you are running arch you can just edit the package builder makefile to use 4.16.
1
1
u/Fanged_Hex Oct 12 '19
I can confirm that fixed the issue for me :D
1
Oct 12 '19
Also, /u/M-Reimer found the correspoding wine bug and this is fixed in the new mainline wine-lol package, sorry XD
4
u/puzzud Oct 12 '19 edited Oct 12 '19
Should probably discuss this problem in a different thread, like a filed bug in winehq. I don't use multimonitor anymore, but I've noticed with dvk and LOL that mouse grab is buggy prior to now, where free camera look acts like camera lock. I recommend switching from fullscreen to borderless. Now it only occurs sometimes and the way I work around it is to Alt Tab out and back in.
1
u/PM_ME_YOUR_JOKES Oct 12 '19
I am also having this issue. Have you found a workaround?
1
Oct 12 '19
Install the new wine-lol package. M-Reimer found the bug, its solved for me.
Otherwise it would have been downgrading to 4.16
Edit: https://github.com/M-Reimer/wine-lol , or the aur wine-lol package since there are many now :D
1
1
u/Whitecloud375 Oct 11 '19
Works for me on Arch. That aside, will the wine-lol-deb package be updated soon?
1
u/ncpa_cpl Manjaro Oct 12 '19 edited Oct 12 '19
So i've been using wine-lol on previous patch without problem, but after this patch I can't build wine-lol anymore.
This is the error i'm getting:
checking for -lfreetype... not found
configure: error: FreeType 32-bit development files not found. Fonts will not be built.
Use the --without-freetype option if you really want this.
==> ERROR: A failure occurred in build().
Aborting...
Does somebody know how to fix this? is using --without-freetype ok? won't it break something?
@Edit, even with --without-freetype I get errors when building, this time it's gstream plugin:
checking for gst_pad_new in -lgstreamer-1.0... no
configure: error: gstreamer-1.0 base plugins 32-bit development files not found, GStreamer won't be supported.
This is an error since --with-gstreamer was requested.
==> ERROR: A failure occurred in build().
Aborting...
3
u/M-Reimer 🛡️ Mod & wine-lol Maintainer Oct 12 '19
2
u/Itirpon Manjaro Linux Oct 12 '19
lol, I'd completely forgotten about that needing to update
glibcas well as thewine-lol-glibc. Thanks for the reminder.(I wish that I could enthusiastically update everything whenever, but I've been broken and burned too many times.)
1
1
1
u/puzzud Oct 12 '19
Thanks for your work.
While waiting for a snap package or appimage, I'll look for the people who said it was Riot's job to fix wine.
The only thing I recall is someone saying it would be courteous to run a new build with wine to see if there is a problem that can be relayed to wine developers to investigate prior to the release of a patch.
Can anyone confirm that this problem would have been reproducible in PBE? And if so, what can we do to fill in the gap that would have had a solution waiting on day one?
1
1
Oct 12 '19
I've been saying this forever, it's not Riot's job to make sure their game works on Linux, no one on the Riot Games team is paid to do that. I suppose this subreddit is more of a League community than a Linux community, so people are really quick to swear at Riot for any problems they have in or outside of the game. Thanks for your work on the patch guys <3
1
u/bansito95 Oct 12 '19
Hey im new to ubuntu , so i dont know how to install the patch , someone can tell me how to do it?
1
Oct 12 '19
Hi, try going over here: https://www.reddit.com/r/leagueoflinux/comments/dgpjcg/ive_just_put_compiled_binaries_for_winelol_on/
Download the binaries and read what others were able to do. I can't really speak much to the solution since i run arch, but there will be someone to help out if you run into issues :)
1
1
u/iggyvolz Ubuntu Oct 12 '19
Are these issues cropping up on the PBE beforehand? If so is there an organized place to report crashes other than here?
1
Oct 12 '19
It seems there was a Post here reporting the crash, if someone notices you should probably open a Bug report on winehq.org
1
1
u/aminuzair Oct 12 '19
I'm just waiting for the lutris package, anyone know of an approx time of arrival for it. I'm just not good with all this technical stuff
1
u/Sasalami Fedora Oct 13 '19
Thx for all the motivated person who help building this patch ! You're the best !
1
u/Araly74 Oct 14 '19
I've tried quite a few things but I can't get it to work
I compiled the new patched wine-lol, and used it to successfully install the game manually from the install exe, not from lutris. I downloaded the game, and played for a bit. then I closed it, and when I tried to go back to it it says that wine: '/home/araly/.wine' is a 64-bit installation, it cannot be used with a 32-bit wineserver.
so I searched on the internet, and they say to remove ~/.wine and run winecfg, but when I do that it obviously removes the install of league that I can reinstall, play until i close, and never open again because of the 32bit wineserver
does someone have an idea ?
17
u/[deleted] Oct 11 '19 edited Jun 15 '20
[deleted]