4 ms·
When it comes to solving complex AI problems I always like to think, if I had given a human this task, what would they want to know. And I think even a human w
by MathYouF 5y ago
When it comes to solving complex AI problems I always like to think, if I had given a human this task, what would they want to know.
And I think even a human would struggle winning the character select mini game just with tabular data related to the players' win rates with those characters in previous matches. Learning about actual play styles of each playerand customising their play style with a given character would be a huge factor in them gaining an edge.
For example, let's say there is a player picking a slow but tanky character, but I happen to know the player who picked it often attempts a certain cheeky move to gain an advantage (like jungling early in the case of LoL, I really don't know much about Dota or LoL so you'll have to work with the metaphor here) and THAT cheeky technique is what increases their win rate. But then I know of a move that can be done by a certain character only in that specific cheeky scenario that will tip the scales and let me get a kill on them early, tipping the entire balance of the game early. As a pro player, that could be why I win with my selection, but the cheeky strategy also why the other guy often wins with his, even against other players who pick mine.
There's essentially a list of known play styles between different characters and optimal strategies to use with them against certain other characters. I think when you filtered to the top 10% of players, you essentiallly made sure a larger percent of those optimal play styles were the ones that generated the outcome data.
But still, if the player doesn't know what those in game strategies are, or their opponent doesnt know the ones they're "supposed" to be using, it'll throw off the value of making it the best selection.
- jiggawatts 5y agoPrecisely. The top-10% thing essentially made my tool into an "expert system". I built a simple model with a bunch of parameters, and had it figure out those parameters based on observations of high-skill games. In retrospect, a neural net would have likely been the best approach, but the (maximal!) noise in the training data would have made it difficult to train. I wanted a billion or more game outcome records to enable NN training, but the game stats API is very throttled and it would have taken months to get that much data. In that timeframe the game is often patched with new rules, which would invalidate the older data.
- MathYouF 5y agoMakes me think you could have the character stats and game design decisions as parameters, and have it select characters based on attributes rather than hit encoding of their simple identities (names) but from what I know of LoL the unique thing is character abilities aren't really differentiated in that modular way and the exact values it aren't given (like a spin attack movie's exact radius, though I bet that could be derived).
- jiggawatts 5y agoThe parameters I trained the model for were things like "greed", "preferred game duration for winning", "effect on game duration", and several 3-way tables of win rates for things like ally-ally-oppose and ally-oppose-oppose. An interesting effect I noticed was that the pub games have all sorts of weird second-order effects. E.g.: Some characters are unpopular because pub players play them ineffectively, and/or they're hard to play well because they're so niche, so few people get enough practice with them in the right kind of scenario. Dota's Jakiro is a great example. It's a lumbering support hero with very slow spells and a glacial turn rate. It's like trying to do acrobatics with a jumbo jet. He's frustrating to play and when most people pick him, the effect on the overall win rate is about -15%, which is insanely bad for 1 out of 10 players in a game! My win rate with him was something like 25%, which is absolutely atrocious. That's "throwing the game" bad. My picker app often recommended Jakiro when the enemy team had over-represented heroes that typically commit to a fight, such as Legion Commander or Axe. Those heroes are nailed to the ground in a fight and can't escape Jakiro's devastating-but-slow attacks. I ended up playing Jakiro a lot, and eventually I got about a 55% overall win rate with him, which is an amazing swing if you think about it. It took practice though, figuring out how to best utilise him. If I had played him in random games, I never would have gotten anywhere. The picker app however made this possible, by providing these hints of when and how to use the hero.