Show HN: League of Legends Build Orders by Genetic Algorithm
lolsolved.gg
lolsolved.gg
I recalled back to my PhD work on solving acquisition problems using generic algorithms and realized I could actually do it. One covid year later and I've almost finished it.
You give it the champion, the play style and divide up the abstract stats like Damage, Effective Health, Gap Close, etc... and the genetic algorithm gives an optimized build order for it.
The site is backed by ~450,000 pre-computed build orders, which took a week to generate on a 32 core box.
I've been talking to some challenger (really good) players and got a list of things that needed to be done. Basically being able to change the various options used by the model and being able to override runes/items.
Since it wouldn't be practical to run the whole genetic algorithm in a web browser, I've implemented a hill climber, which runs in the web browser, that accepts the output of the genetic algorithm, the user requested changes and then it hill climbs the build order back to the local optima.
The genetic algorithm was written in Kotlin (compiled to JVM) so I used Kotlin's compile to Javascript to create the web based hill climber.
I've also implemented guides so you save the builds you find from the optimizer. You can login as guest/guest.
Build Orders: https://www.lolsolved.gg/builds/ Technical Explanation: https://www.lolsolved.gg/about User Guide: https://www.lolsolved.gg/help
I'm sticking around so feel free to ask questions.
Assuming you have robust mutations, were you able to discover any new novel (and effective) builds not previously known?
Are they effective is a good question, basically that needs lots of play testing by real players. I've added guides so people can tell other people about good builds they have found.
So when developing it, I took some existing builds from the internet and I broke them down into a ratio of stats aka (1 damage: 1.5 cooldown (now AH): 1.2 late game health) and then had the GA reconstruct those builds from the ratios.
On the builds being played by the pros created by professional analysts, I got back very similar looking builds. On random builds from site like mobafire I got back completely different builds.
Thinking back, when Cloak of Agility was briefly buffed last year, it came back with the exact amount of them to spam and exactly when to do it. It took 10 minutes and the player base took 3 weeks to work it out.
If you modeled team composition, it may be possible to even model pick-ban phase via min-max search. A full exhaustive search would be computationally impossible, but you could approximate it AlphaGo style with a neural network estimator + Monte Carlo tree search. You may be able to sell such software to professional teams.
Pick-ban phase optimization already exists at least for Dota 2.
So the original team of 5 went with Dota 2 because it has a much better API they could get game data from. They poured the Dota 2 pro games into a neural network to create a build generator.
It couldn't make sense of the input data. Apparently Dota 2 pro players are trolls according to my ex co-worker.
I didn't work on it so I don't really know.
It doesn't affect my method since I'm taking in descriptions of the items, runes and champions and putting together the builds from scratch without looking at gameplay. It needs a couple of tweaks such as stating the average combat length for champions.
A lot of the core is there but there’s less champs, runes, items.
(Currently on a pro team for wild rift and since the game is relatively new this would be more useful to us)
In StarCraft II, the 7 roach rush was developed using genetic algorithms. http://lbrandy.com/blog/2010/11/using-genetic-algorithms-to-...
When your tool optimizes for "gap closer" what are the characteristics of the items it selects for? Move speed? Ranged slows? Is there a consideration of item active vs. passive effects? For example, Stridebreaker is in a lot of bruiser build orders because it has an active (i.e. requires a button press) gap closing ability.
1. https://link.springer.com/article/10.1007/s13218-013-0263-2?... 2. https://tl.net/forum/starcraft-2/168348-scfusion-wol-hots-an...
Annotations have been added to all the runes/items that state things like it gives 2.0 Gap Close. It's just summing it up.
Looks pretty good overall though. I'd love to see this, but vs specific matchups which is the most important part of build optimization. The hard part of builds is choosing which item in certain scenarios.
kraken -> boots -> rfc -> ie -> last whisper -> vamp scepter -> dominik -> bt
I'm surprised to see this even with high hp recovery - I asked for no armor pen, but it decided to build dominik's anyways, and it doesn't buy a vamp scepter until after 3.5 completed items. If I went this build, about 99% of my games would end before I got ie, everything after that matters a lot less, and so I'm surprised to see it push everything non-"core" (including the armor pen I didn't want) into the end of the build.
HP Recovery is still wired up for the way it was used in season 10.
It suggests Triumph over Overheal for Aphelios even though that rune is much more synergistic due to his pistol.
I appreciate that the tool exists, but there are problems that are more easily solved by small critical thinking than machines.
It's ultimately a decision support tool.
Customize this build -> Add Engine Option -> Upgrade Kai'Sa Skill By