Reading/Writing Data from the League of Legends Client

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

https://github.com/Pupix/rift-explorer

This is a great tool that helped me a lot in this exercise. The public documentation for the client interfacing API seems to be a little bit shrouded. It appears that they have
publicly acknowledged that this API https://developer.riotgames.com/league-client-apis.html you can read more about this history of interfacing with the client here https://riot-api-libraries.readthedocs.io/en/latest/lcu.html

GET and POST Requests

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

All of your extensions for Chrome are located in C:\Users[login_name]\AppData\Local\Google\Chrome\User Data\Default\Extensions
from here you can read any Javascript or check out all the files that an extension comes with. Thankfully the OP.GG extension isn’t obfuscated so digging through the code is incredibly easy. There a check to see if you’re on the Korean Server for your region. In this case the lobby information will not be displayed.

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.

Project Ideas

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.

Ultralight Design

Hello world! I had a talk about this on stream today and thought I might expand my thinking here. This website is, after all, a perfect example of what I’d like to highlight in light weight design.

If you’re a normal person you likely have never read an ultra minimalist website. I can offer you two examples from the top of my head. I will not explicitly be defining what the do right but present content forward pages correctly.

First we have MotherFuckingWebsite which I assure you is not at all adult other that it’s arousing design and powerful wrangling of the English language. https://motherfuckingwebsite.com offers all the information you need about it’s design philosophy on its main page and it is worth a read. The core design principle is to focus on what’s already built into HTML5 instead of needlessly loading libraries. I can also recommend this video which highlights the speed improvements that are available when moving out of heavy and unnecessary JS and into HTML and CSS https://youtu.be/VUwyYhNO63I

Secondly I’d like to tip my fedora to you all and say that the Arch wiki is not only one of the worlds most exquisite repositories of information but also a paragon of content focused design. https://wiki.archlinux.org/index.php/Installation_guide I have linked the install guide as an example page but all follow this same simple layout and beautiful indexing. Although this isn’t specifically a design consideration I also appreciate their Code of Conducts resource on answering questions http://www.catb.org/~esr/faqs/smart-questions.html this page also follows our design rules coincidentally!

Many “old” projects like Debian have a get repository of information in archived versions of their mailing lists. If you are a computer hobbyist you’ve likely stumbled into a handful of these through frantic googling. One of the great parts of these websites is their indexability. It seems web crawlers absolutely love the way the information is presented so straightforward instead of being needlessly distributed through flashy graphics, animated menus, or slideshow-like pages with nearly no information to inflate traffic. It’s all just right there. A truly tranquil feeling passes over the body when the pages load so quickly and the information is so readable. As if asking a classmate which page to turn to and they not only provide the number but also the paragraph and line to begin from. Excellent.

There is a learning curve to pushing yourself to correctly chew through such dense information. Often pages like these read like a research paper and that is daunting to the uninitiated. Research papers are one of my favorite ways to get useful information as the abstract will offer a far different and likely more nuanced summary than any news article attempting to spin their work ever could. Likely, most would load the PDF file in their browser and immediately close it due to its alien dual column structure. I would like to push more people to return to the source and away from the colorful and distracting stylization of information for the layperson.

Content is king and a website shouldn’t take 13 seconds to load for any reason. Information density is not for everyone but may be for you. It surely is for me. Take a stand against not only radio edit songs but also the dilution of quality information. Thanks!

Blog Relaunch

Well well well. Look who’s back to writing a blog that no one will ever read or care about. That’s right! Lil’ Cropster.

As you can see I’ve gone and touched up some of the loading issues and improved the site a little. Goal is the same as it always way. Create more content and hopefully attract more eyeballs to look at it. A growing list of topics continue to overflow from my notes application and “like a bee thats gathered too much honey, needs hands out stretched to take it” or something, whatever Zarathustra said.

I spent some time last year writing a few posts for this which, after careful cringe analysis, seem to actually be good! Hopefully after I private all my posts and scrub this blog from the internet again in the coming months when I have some kind of internal crisis I will look at these posts during the 2020 relaunch with pride.

Your time is valuable

I think it was Bill Clinton who said “If you’re good at something never do it for free” or maybe that was the Joker.

Anyway this past week I was approached for contract work so I’ve had some numbers on my mind. I’ll share my opinion on selling your services and pricing your work.

A race to the bottom

There’s no getting around the fact that there are plenty of people who are working for far too little pay. Whether that’s a lack of confidence in themselves and their work or just wanting to be “nice” and giving their clients a deal they both have the same effect. Every time you take on a job for free, accept lower rates, or work for additional unbilled time you are actively devaluing yourself and those with a similar skillset. Expectations of hourly rates for whatever it is you do is important to have a steady stream of clients. If the competition is willing to work for half of what their time is worth you may find yourself dropping to their level to stay competitive. The quality of work some freelancers push out for minimum wage when they can set their own prices for their time is really sad.

You’re skilled at what you do. You have worked for years to learn what you know and practiced to become an expert. That’s why people seek out your services. They value your time. They trust your track record and know they can have a great product delivered. If you have a skillset of any kind you should at the absolute least be charging 2.5x minimum wage.

If you’re an artist/professional and self employed I know the business side of things can be hard. I hate email and I hate talking money with clients. Of course hating something doesn’t mean it’s not important. Spend the time to learn to manage your business. Spend the time to REALLY think what your time is worth. In both the long run and the short run higher rates make it easier to turn down work or clients you don’t like. Pricing yourself appropriately helps you and everyone else in your field push for a better quality of life inside and outside of work.

When sifting potential clients have a keen eye to spot any questioning of your prices. An “OUCH! Very expensive” comment immediately drops you to low priority brain processing and 1 to 3 business days for email communication. These are the people you waste time thinking about. These are the people who find someone who’s services fit their budget last minute after you’ve sent 10 emails back and forth. By spending less time on people who are less willing to step up and pay a fair price for great work you’re going to have a lot less stress in your life

Find a number that’s higher than what you, as a professional in the field, would be willing to pay your competitors. If it feels too high you’re in the right ballpark.

Anyway whatever I just needed to write something here to fill the gap. Thanks!

OSRS Jad Practice Tool

Yo.

Thought I should just post this here because it was something that I worked on for a few hours two weeks ago. Might be useful to other people that had or are having difficulties figuring out Fight Caves.

What is this?

In Old School Runescape the best in slot cape for melee excluding the Infernal cape is the Fire Cape. The Fire Cape is a reward for completing a 63 Wave Player vs Monster challenge in the TzHaar Fight Caves. Most players want to get this done as quickly as possible due to its dominance in the cape slot. Although the Fight Caves have no level requirements a prayer level of 40 for Protect from Missiles and Protect form Magic is essential for completion without utilizing advanced mechanics like Tick eating.

The final monster and by far the hardest part of the Fight Caves it a level 703 TzTok-Jad. Jad has both a ranged and magic attack which he switches between at random. Failing to react to Jad’s attack switch even once will be the end of your Fight Cave run. Worst of all to even have a chance to see or practice Jad you’re going to need to climb all the way to Wave 63. This can take around 2 hours depending on your combat  stats. Here is a clip of me getting dumpstered last year on my 4th/5th attempt https://clips.twitch.tv/WrongLazyDootHumbleLife

To help other players practice the sounds and animations of Jad I created a practice tool for the OSRS Fight Caves. It’s missing a lot of things and is a really basic mod of some decent RSPS source. Jad doesn’t have healers. Collision for units is completely off for the other waves. Sound effects are only in for Jad.

Demo: https://www.youtube.com/watch?v=FuPFbeX_UWw

Download: https://downthecrop.xyz/downloads/Jad-Practice.7z

Forum post: https://www.rune-server.ee/runescape-development/rs2-server/downloads/679199-jad-fight-cave-practice-tool-w-sounds.html