I am just curious what AI would be harder to create from a strictly engineering point of view. AI which would win 1vs 1 game with the best player in starcraft or AI which would control a team the whole team in dota2 and win against the best team?
I can't answer definitively without a detailed breakdown of game mechanics of dota2 vs. Starcraft, but assuming the games have similar complexity, the AI controlling multiple in-game agents that form a team would be more complex, and therefore more difficult to create, than a single agent "team".
- in dota2, the AI has to not only to identify winning strategies, but coordinate multiple agents.
- the Starcraft AI only has to identify a winning strategy, with no coordination between discrete agents which form a team.
Coalitions have traditionally been difficult to analyze in Game Theory and Combinatorial Game Theory (in the latter case especially, restricting mathematical study, for the most part, to games involving only 2 players.) In this case the issue is not coalitions--the multiple game agents are already on the same team--but complexity is nevertheless dramatically increased by the existence of multiple agents on a team as compared to a team consisting of a single agent.
There are different abilities required for strong play in those two games. Some of them are easier to implement using AI than others. Therefore it is difficult to answer this question in a generic fashion, but we can look at different aspects in detail:
- Speed / APM (Actions per Minute)
While both games require a certain speed, SC2 is usually a bit faster because you simply have more stuff to manage (keep building, arranging your units, coordinate attacks on multiple locations). That said, if you want to control the whole team in Dota2 from a single agent, the APM requirements multiply accordingly. In the end it doesn't really matter, because speed is the least of our concerns and can simply be improved by throwing more resources at the problem. So I wouldn't say that one of the two games has an advantage here concerning engineering effort, just wanted to get the topic out of the way.
- Implement strong battle technique
Fighting battles is an important skill in both games. While the armies in SC2 are larger, the amount of abilities each unit has is usually smaller. One of the limitations of a human player in SC2 is the inability to control each unit individually, because there are simply too many units most of the time. An AI on the other hand could utilize a complex army significantly better by controlling each unit. I have seen simulations of such armies in the early days of SC2 and it was obvious that no human player can compete with this technique by far.
This aspect is less important in Dota2, because the amount of units is significantly smaller. Nevertheless the precision in executing attacks and retreating could easily be optimized to a level hardly achievable by any human player. I would still rate the potential for super human skill in SC2 much higher because it gets multiplied for each unit.
- Find a Winning Strategy
While it is rather easy to beat a human player with speed and technique, finding a winning strategy is a totally different ball game. In games where deception and hidden information plays such a crucial part, the engineering requirements for a strong winning strategy are huge. A strong AI will require a hybrid approach of playing according to programmable rules of different strategies and fine tuning using ML. Both games are still evolving and new (or changing) heroes, units and structures need to be considered in the long run. In my opinion, the hardest part for the AI will be dealing with unconventional or trick plays it hasn't encountered before. SC2 has a higher potential for such trick plays that can catch the opponent off guard and wins you the game right away. And even when the AI has encountered a certain trick play several times, it is very hard to find appropriate counters on its own. So each new trick play will require specific guided training to play correct against it. On the other hand the AI could learn the same tricks and utilize them as part of their strategy.
Dota2 has a smaller range of unpredictable events and strategies, therefore adapting to those would be easier for an AI. This would reduce the engineering effort significantly in this regard.
To evaluate the complexity of the problem, you need to consider, which limitations are set in place for the challenge. If you allow the AI to play with unlimited APM, many deficits in strategy can simply be overcome with technique, utilizing pure speed and precision.
If you restrict the challenge to a small map pool, the AI can be trained much more efficiently. If the AI has to be able to navigate arbitrary maps, the problem gets much more complex. The same is true for limiting matchups or hero selection. The more limitations you put in place, the easier it is to implement a strong AI
- My conclusion
While it is difficult to weight all those aspects against each other, I feel like it would be easier to implement a strong strategic AI for Dota2 than for SC2, but the leverage of an AI using a strong battle technique is larger for SC2. This doesn't mean a strong Dota2 battle technique can't reach super human level as well, but the skill ceiling is higher in SC2.
It would depend on the level of human authenticity you want to give the AI. For one, in StarCraft II humans are limited by their ability to look at only one particular place in the map at once and of making only one action at a time. Computers aren't necessarily limited by this constraint so you would have to artificially create it. It's a similar story with Dota2 except in this scenario the AI would be able to control all 5 characters at once with precise synchronization which would be unmatched by even the best teams. So again, you would have to artificially created constraints on the agent so that it was forced to optimize for team work and communication. I think a challenging and interesting problem for Dota2 would be to have 5 separate agents working together like humans usually do in the game. It would be interesting to see for example if they could generate a "gaming language" in which to signal cooperative operations on the map as well as setting up ganks and pushes for example. This would give researchers a good environment in which to test how the interactions between separate agents would evolve alongside a common goal.