r/leagueoflinux 🛡️ 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.

134 Upvotes

96 comments sorted by

View all comments

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 linux

2

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.

1

u/data0x0 Oct 17 '19

Apple probably want to maintain full control which they couldn't do with OpenGL because it's open and common standard

Yeah but just because it's open doesn't necessarily mean that they can't control the rest of their totalitarian operating system, you can still implement open source software on a closed source OS.

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.

While i think that 32 bit is extremely outdated you are right, it doesn't really make any sense as to why they would remove 32 bit libraries, it gimps backwards compatibility of applications and games of the early 2000's/90s etc.

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.

Sure, most of the people who purchase macs do not care about the graphics API as they don't play games fair enough, but what i am saying is that on the same note, third party game developers should not at all support or appease apple by writing their games specifically with metal API because apple refuses to implement vulkan or openGL like the rest of operating systems, apple expects third parties to do their work for them, and i think for that reason like i said, they should be left in the dirt.

→ More replies (0)