With the release of League of Legends Patch 10.16 there is now official (beta) support for the Direct X11 Rendering backend for League of Legends (LoL). I have conducted a side by side comparison between the old rendering backend D3D9 (DirectX 9) and the new D3D11 (DirectX 11). If you want to enable DX11 in your own game you can follow the instructions provided by Riot here.
RTX 2080 8GB
i7 9700K @ 4.6Ghz
16GB DDR4 RAM
Windows 10 1909
League of Legends
Medium, Shadows Disabled
240 FPS Framerate Limit (Recommend)
DX9 Average: 168.6
DX11 Average: 175.2
Performance Advantage FPS: 6.5+ DX11
Performance Gain Percent: 3.91%
Note: The impact of OBS with these settings is as low as ~5FPS. When running the tests I had no additional software running other than OBS and League of Legends. In a real use case even if you don’t record/stream the performance impact should be similar to having Chrome/Firefox open with a YouTube video or Discord ect.
H.265 NVENC Encoder Max Quality preset, 2300kbps Bitrate, 1280×720
Hey League of Legends players that also happen to be Linux enthusiasts. Today I would like to share a video comparison I’ve created comparing the difference in performance between League of Legends on Windows 10 and League of Legends on Ubuntu 18.04 Linux. This comparison will provides a frame rate (FPS) graph and and a side by side comparison of performance between the two systems handling the same replay from League of Legends patch 9.24 from Late December 2019.
RTX 2080 8GB
i7 9700K @ 4.6Ghz
16GB DDR4 RAM
Win10 – 441.08 WHQL
Ubuntu – 430 nonfree
Wine: lutris-lol-4.20-x86_64 D9VK/Vulkan Enabled
League of Legends
Medium Settings & Shadows
240 FPS Framerate Limit (Recommend)
AA Enabled Patch 9.24B (Late Dec 2019)
Windows Average: 154
Windows One Percent Low: 120
Ubuntu Average: 140
Ubuntu One Percent Low: 106
Note: The impact of OBS with these settings is as low as ~5FPS. When running the tests I had no additional software running other than OBS and League. In a real use case even if you don’t record/stream the performance impact should be similar to having Chrome/Firefox open with a YouTube video or Discord ect.
H.264 Encoder veryfast preset, 5000kbps Bitrate, 1280×720 (downsampled from 1080p)
Do you dislike or even hate the extensions that overlay the video player on Twitch? I sure do. According to the official help page for extensions they “provide interactive experiences directly through the Twitch video player” in my opinion they provide needless distraction. Lets learn how to disable them.
Twitch FAQ on Extensions Q: I am not a fan of Extensions, can I disable them as a viewer? A: …Extensions in the video player can be minimized but not disabled by a viewer.
Now this isn’t the answer that I was looking for. Let’s find a different solution.
Disabling Twitch Player Extensions Through uBlock or other Content Blockers
If you find Twitch player extensions frustrating to look at you probably already have uBlock Origin installed on your browser. If not, you should switch to it from your current ad-blocker. It’s free, open-source, and light weight with additional blocking functionality that makes it perfect for this. Get uBlock on GitHub
Simply click on the uBlock extension icon, select “Open the dashboard”, go to “My filters”, and paste in the following rule:
! Twitch.tv Player Extensions
! Additional Block for 2020
www.twitch.tv##div:nth-of-type(3) > .tw-tooltip-wrapper.tw-relative.tw-inline-flex > .tw-relative.tw-overflow-hidden.tw-justify-content-center.tw-interactive.tw-inline-flex.tw-core-button--overlay.tw-core-button.tw-button-icon--overlay.tw-button-icon.tw-border-top-right-radius-medium.tw-border-top-left-radius-medium.tw-border-bottom-right-radius-medium.tw-border-bottom-left-radius-medium.tw-align-middle.tw-align-items-center > .tw-button-icon__icon > div > .tw-inline-flex.tw-icon--fill.tw-icon.tw-full-width.tw-align-items-center > .tw-aspect--align-top.tw-aspect > .tw-icon__svg > g > path
www.twitch.tv##div:nth-of-type(3) > .tw-tooltip-wrapper.tw-relative.tw-inline-flex > .tw-relative.tw-overflow-hidden.tw-justify-content-center.tw-interactive.tw-inline-flex.tw-core-button--overlay.tw-core-button.tw-button-icon--overlay.tw-button-icon.tw-border-top-right-radius-medium.tw-border-top-left-radius-medium.tw-border-bottom-right-radius-medium.tw-border-bottom-left-radius-medium.tw-align-middle.tw-align-items-center > .tw-button-icon__icon > div > .tw-inline-flex.tw-icon--fill.tw-icon.tw-full-width.tw-align-items-center > .tw-aspect--align-top.tw-aspect > .tw-icon__svg
Apply changes and refresh any currently open twitch page with those nasty extensions and they should be gone for good!
Let’s start positive. I enjoyed the opening. The voice over is good. The interface is fairly intuitive and much simpler than other SCUMM (LucasArts adventure games system from Maniac Mansion) games. The game begins on the uncreatively named Loom Island. The atmosphere here is the best in the game which makes adventuring a little disappointing afterward. The puzzles are pretty simple. The fun part is understanding what each of the “drafts” you learn do. I think the game would have been improved from an atmospheric sense if the drafts used rune style glyphs instead of musical notes. It feels much more like playing a song, which of course you’re actually doing, than “weaving a draft”. The story really doesn’t make a lot of sense at all at any point in the game. The introduction is cryptic. You know it’s your birthday and for some reason all the other people from the island turn into swans and run away. They don’t explain why. They just say Loom Child something something. Can they see the future? Why didn’t they tell you about your past? Why didn’t they let him near a distaff (the ocarina of the game) ? These things are never explained.
After leaving the island you see a whirlpool in the water that can’t be passed without learning the “f” chord. I left the island the first time without this so I needed to go back. Going back seems strange because there’s an outro cinematic. Why make a big deal about me leaving if I can just row back? Anyway I went back, got the “f” chord by spinning some straw into gold which is a Rumpelstiltskin thing. It was fun remembering that but if you’d never heard the fairytale or forgetten that part then this might not make sense. I then left the island a second time, watched the same outro cinematic, defused the whirlpool and got to the other island.
On this island there is a.. city? town? mound of green glass? It introduces some characters who you don’t care about and foreshadows some war or something. There’s also a chalice made of diamond which Bobbin, oh ya you play as a hobbit name Bobbin “He’s not a hobbit!” you say? why does he sound like a hobbit and have a hobbit name? Probably just LotR stuck in their heads. Did people think hobbits had a slight British cadence before the films? Whatever. Bobbin points out that the diamond chalice in the glass guild is strange. All the art in the green glass guild is horrific for gameplay. You can’t tell where you can walk. I think I was just lucky moving through this part of the game in the intended way. This is definitely where most players would be stuck if they do get stuck.
The game moves along from here to a forest. You meet some shepherds who aren’t weavers like Bobbin but they can do some magic. It must be the same magic weavers from Loom use but for some reason Bobbin who has never practiced before today is way better at the spells than them so Bobbin’s weaver friends are implied to be much more magical I guess.
You then get picked up by a dragon and from here the game really falls apart. You don’t care about what’s going on. You don’t care about any of the people you’ve met. There’s something about this green hatted guy who gets his head knocked off wanting to raise the dead or something. It’s just not interesting at all.
You enter a rip in space which brings you to the Loom dimension. Maleficent from sleeping beauty was in there and she wants to take over the world now. You meet mother goose in outer space and then play Simon says with Maleficent before turning yourself into a Swan and flying off second star to the right, and straight on till morning.
They obviously set up a lot to be explained in sequals which of course never happened because this game was trash. The game had potential to be cool if it carried its asethetic from Loom Island forward. Just artistically it would have had a lot more to show. The story which is very much the focus was the worst part of the game. The only part of this game I’ll remember a year from now is the name Bobbin Threadbare and there’s a magic song to turn green things white and white things green.
It’s a bad game. The talks are still good though. I recommend those.
I went on a very fruitful journey of learning about the League of Legends client or LCU API to try and find how I might go about making an automatic team searching tool for champion select. OP.GG already has an extension that does this but due to some seriously strange reasons it appears that the Korean server has different rules about how you are allowed to interface with the client. Because I am in fact in Korea and would like to use this I decided to make a work around. Anyway. I’ve solve both issues and I thought I could be of use to some future explorers of the League client that may be interested in communicating with it.
Rift Explorer will give you lots of options for things to look at with a few GET and POST requests. When I was testing I created a custom game lobby and read the state of the chat room and champion select. After messing around with the application I wanted to see if I was able to get the same JSON data that Rift Explorer was able to get using Chrome to create the request.
The League of Legends client hosts a local web server which is able to be found by using the data found inside of the lock file located in C:\Riot Games\League of Legends\lockfile (or where ever you might be running the executable from). This file is created when you are running the game and includes the port number which the server was created on and the password to interface with the server. This was a little confusing to find at first but using this issue https://github.com/Pupix/rift-explorer/issues/4#issuecomment-348681824 by navigating to localhost:(lockfile port) and using the username “riot” and the generated password in the lockfile you can now make requests with Chrome or any HTTP agent you like.
OP.GG extension modifications
Although you are technically able to modify the files that are located here in AppData, Chrome checks out the integrity of these files to see if they have been modified. Because of this we need to uninstall the official extension in favor of our own offline version. Since the extension is fully locally stored you can simply make a copy of the folder and place it somewhere nice like your documents and modify anything. For example I’d like to modify the part where I’m not able to use the extension here in Korea. By simply bypassing this check the application now works perfectly.
When checking out some of the options inside of the client API there are a lot of ideas for projects popping into mind. One of those would be a rewritten version of the OP.GG extension as a desktop app in C# or something. Another idea is an automatic ready check accepter. There was always talk about some kind of app or high ELO players to have on their phone so that if they walked away from their PC for a second while the queue popped they’d be able to accept the game remotely. There is a post function for accepting the match in the API so something like this would be really easy to make actually.