I am not a professional Dota player, just a fan of the game. The knowledge presented here about it is not official knowledge about the game, and is a mix of my perception of it after ~1200 hours playing it and crowdsourced Dota 2 wiki pages. Take it “as is”.
I recently got reacquainted with Protégé and decided to start a new ontology from scratch with the sole purpose of using it in a reasoning system written in Prolog.
For this I picked the Dota game, where 10 people split into 2 teams of 5 fight each other in a 3-dimensional map, picking a series of characters with a wide range of abilities and features.
Imagine if you played chess, but all the pieces have 3 to 6 skills, have health bars, and move in all directions without any turns. And where players are divided in brackets of skills, called MMR.
It gets pretty complex.
One crucial process that I’d like some help with from a reasoning system is the process of building a team, also called “drafting”.
Drafting usually involves a series of decisions based on “synergies” between characters, “counter-picking” (picking a character that for one reason or another is really good against a pick from the team), a player’s experience with a character or a group of characters (such as “ranged melee heroes” or “support nukers”), and a good deal of meta.
Meta is the current gaps in the game balancing that appear after every update to the game. Normally very high rank players are at the edge of this and know how to exploit these unbalances to keep the game interesting to them. For most mortal players like me, the meta arrives when its already rebalanced in new patch, and we just believe we have the upper hand.
Synergy can be thought of as a compounding positive effect of two heroes playing together. We’ll talk more about this in a minute.
The goal would be to get a decent answer to the question: for this particular team draft, what are suitable picks that make a counter-draft?
The answer should be reached via automated reasoning instead of statistical methods (such as machine learning)
In short, I’ll be working through the definition of an ontology for the game, its units, its mechanics, out of which the synergy between characters can be inferred.
One example of this would be Pugna’s synergy with Treant Protector.
Pugna has a unit-targeted, channeled, undispellable ability, Life Drain, that at level 1 transfers 150 health from the target to itself, effectively inflicting magical damage. It tethers Pugna to an enemy and essentially sucks the life out of them. The tether can be broken if the enemy runs away further than 900 range units from Pugna.
Treant Protector has an ability that slows enemies down, Nature’s Grasp, and an ability that fully roots the entire enemy team into the ground.
As a human, one can see why these 2 can have good synergy if they coordinate their spell casting so that Pugna’s Life Drain happens as soon as Treat Protector slows or roots an enemy target. The less an enemy moves, the more life will be drained.
On the contrary, any character with abilities that can interrupt channeled spells could make a good counter-pick to Pugna. One example of this is Clockwerk, a strength based hero with a spell (affectionally called “fart attack”) that causes a stuttering stun to units near him. This is perfect to counter any channeled abilities with low cooldown, as it will interrupt the channeling over and over again.
So there’s a few things to model here. Let’s look a little closer at the parts of Dota.
Dota consists of a number of Game Mechanics, many of which have complex interactions with each other. These are meta-game elements that make up for how the game works. Changes in these mechanics alter the balance of the game and make a good deal of what the “meta” is about.
We can group them in:
- Unit Mechanics, or the properties used by controllable game units
- World Mechanics, or rules of how the world behave
- Gameplay Mechanics, or properties that emerge from Units and the World interacting
Units, rules by the Unit Mechanics, are either Controllable or Non-Controllable.
Controllable units can be broken down into more subcategories:
- Ancient Units (such as Roshan)
- Creeps (both lane and jungle)
Non Controllable Units instead are either Buildings or Wards.
Heroes can also be broken down into several dimensions:
- By their main attribute (Agilty, Intelligence, or Strength heroes)
- By their attack style (Melee vs Ranged heroes)
- By their preferred role in a team composition (Support, Carries)
- By their roles during a match (Escapers, Pushers, Nukers, Disablers, Durables, Junglers, Initiators)
- By their complexity (Level I, II, or III)
There is a total of 123 heroes in the game, falling into some of the categories mentioned above.
The World Mechanics control:
- The Game Map, with its Lanes and Jungles
- Buildings, such as Towers, Barracks, Outposts
- Shops, where items can be purchased
- Gold and Buyback, the currency used to buy items
- Items, with its rules for sharing, assembling, disassembling, and stacking
- Courier’s and their placement in the world
- Runes of various kinds
- Vision over the map and the units
Gameplay Mechanics include:
- Game modes
- The HUD
- Minimap and scanning
- Denying units
- Roles in matchmaking
- Ganking strategies
- Pushing strategies
- Harassment strategies
- Farming strategies
- Jungling strategies
- Initiating strategies
As you can imagine by now, this will quickly become a pretty big ontology if I don’t restrict myself to the specific use-case mentioned above. So I will start with 3 things that I’d as a human find useful in determining what is a good draft:
- The Hero controllable unit and its basic attributes
- The Hero abilities and how they modify basic attributes
- The Drafting process and the order in which heroes are picked
The core idea being to make the modeling of these 3 public in a repository, https://github.com/AbstractMachines/dota-ontology.
This should keep us busy for a while.
- Dota 2 Gamepedia [wiki]