I've been working on a League of Legends Build Order optimizer.
I got the idea after hearing one of my new co-worker explaining that at his last job he worked in a team of five trying to create a build order optimizer for Dota 2 (another Moba game) via neural networks and they failed. More specifically, the builds were no better than what a standard player could come up with.
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
That's the spiel so now some questions.
So I've build the thing and I would like to continue to work on it full time.
The plan was roughly get a massive user base and have it ad supported.
There are quite a lot of sites that provide lol build orders either by providing a wiki (mobafire) or providing a standard interface to the league of legends api. They seem to be running on this model so it should be okay (My costs are basically me + £550 a year). Obviously I'm doing something very unique here by providing an actual solver.
I posted the alpha of the site on social media a couple of months back and got 24k people in and 1.5k of those people are still visiting the site once per week. So I think it's just about getting it out to enough people. Ideas on how to do this are welcome.
And a more technical question, I've got some parts of the site written using Vue.js and I'm currently doing a static render of the site then replacing it with the Vue.js code so search engine's can see it, it's causing a bit of a flicker on site load and not sure it's effect on search engines. I'm wondering if there is a good solution for this or perhaps I should back Vue.js out the site and go for something closer to raw Javascript? Any guidance on SEO would be greatly appreciated.
That's an interesting application you've decided to create. It means that players will get a nice advantage during games. If you think about it that way, players often try to get an advantage during games with various third-party software, and I think that's fine. At one time, I used League of Legends scripts. I learned about them from https://lol-script.com/blog/scripting-in-league-of-legends/. In that case, they helped to run perfect combinations so much that it was almost impossible to win against a team that had these scripts. And now, there are already new apps coming out to help make the game easier. And I think that's great.