Dota 2 - A Veteran's Review

Dota 2 is an absolutely atrocious game. And I’m not just saying that because of the toxic community full of smurfs, account buyers, script kiddies, and absolute lowlife bottom-of-the-barrel degenerates of society. Or the time investment required to get good at it, with its massive roster of heroes, items, byzantine mechanics, absurd match length paired with the fact that there is no way to surrender (unless you’re a 5 man stack). Things most people complain about.

The entire game’s balancing is a house of cards that’s built on the shaky foundation of an RTS engine from the year 2002. But these engine quirks have become inextricably linked with the carefully tuned balance of this game. Remove them - and you break entire categories of heroes and items. In this review, I will outline them and explain why they are calcified technical tragedies rather than elegantly designed features, proving that this game is terrible and obtuse just beyond its community and difficulty.

This review was inspired by my recent replaying of the Warcraft 3 campaign. I knew that Dota 2 was based on a popular custom game for WC3, Defense of the Ancients. But I was shocked to discover how many mechanics weren’t just similar, but were exactly the same. From things that made perfect sense to be in an RTS game with base building, hero units, and neutral camps, to emergent features that were simply what we had to work with.

Creep Aggro

Starting off with my most disliked “feature”. But it’s more like indelible technical debt. Removing it now will destroy the game so we all just have to live with it. Understanding how creep aggro works is what separates archons from ancients, and it’s a mechanic that’s not explained in the game at all. You either have to figure it out yourself (lol) or have someone on YouTube explain it for you (thanks Jenkins). The way a more modern game like League of Legends does it makes intuitive sense. Expect a few more League comparisons in this article, though I think it’s a terrible game too, but for different reasons. If you damage the nearby enemy champion, all nearby enemy minions will stop hitting your minions and instead target you until you get out of range. You know, logic. They are there to protect their hero. Towers work exactly the same way; the only way to drop aggro is to GTFO.

Creep aggro rules in Dota 2 could not have been designed by any rational game designer, unless they were abusing inhalants. For some reason, the creeps in Dota 2 are telepathic. By simply issuing an attack command on an enemy hero (A-clicking and right-clicking an enemy unit are synonymous with issuing an attack command), either the one in your lane, or one from across the map (you can also do this by A-clicking their portrait on the top of the HUD as long as they’re currently not in the fog of war), all nearby enemy creeps will immediately turn to attack you. You don’t even have to hit the enemy hero, you just need to INTEND to attack them. The range is easy to intuit because it’s exactly the same as the attack range of a ranged creep - 500 units. Towers work the same way too; intent matters more than the act. Keep in mind that you can do this only every 3 seconds. There is a cooldown that’s unannounced and untracked so you also just have to intuit it. You can also drop aggro by showing intent to attack YOUR OWN UNITS. So if a tower or enemy creeps are hitting you, you can just A-click your own creep or your allied hero, nearby or from across the map, and the tower & creeps will think “yeah alright this bloke is no longer a threat” and will start hitting someone else instead.

exhibit 1: live demonstration of the creep aggro mechanic

On the surface, it might make sense to rework it to just trigger on damage. But if you do so, you are fucking over all melee heroes. They rely on this mechanic to have even a slight fighting chance against ranged heroes in lanes. Melee heroes also block some creep damage by default, so they can take more beating than a ranged hero doing this strat. Heroes with attack modifiers (like Viper and Drow Ranger for example) can actually completely bypass aggroing creeps if they cast these modifiers manually rather than putting them on auto cast and A-clicking enemies. Why? Because the Warcraft 3 engine treated casting these “orbs” the same as casting a spell, which does not trigger aggro. The AI is smart enough to read your mind when you right-click, but too stupid to realize that a manual ‘cast’ of a Frost Arrow is exactly the same as an auto-casted one.

For most ranged heroes, the right move is to avoid aggroing creeps most of the time because they’ll melt you. For melee heroes, often the play it to move past your ranged creep (so you’re within aggro range), A-click an enemy hero, and run back. Melee creeps will start running to you for about 2 seconds, then stop at your ranged creep. They will then start quickly killing your ranged creep, after which they will target the next closest target. If you position yourself right, you will become that target. You may then pull them closer to your tower and farm them safely. When I was in archon, nobody was doing this, so I felt like a genius when I discovered this tech for the first time. But once I reached high legend/low ancient ranks, EVERYBODY was doing it. And it’s just an engine quirk from 2002 that Valve put herculean effort into recreating in Source 2. Because if they didn’t, not only would purists get upset, but they would need to find another way to rebalance melee heroes. But I guess that’s too much work for a small indie company such as Valve.

Neutral Camp Spawning (blocking & stacking)

You also cannot convince me that this was a conscious design decision. It’s an exploit that everyone decided to call a “feature”. The way a more intuitive game like League handles camp respawns is this: once you clear a camp, it gets put on a timer. Once it expires, the camp respawns. Simple and logical. In Dota 2, the map refreshes globally every time the in-game clock hits the one minute mark. So every 1:00, 2:00, 3:00 and so on. So you could kill a camp at 1:58 and have it respawn 2 seconds later-

As long as you are not in its fuckass rectangle.

The yellow rectangle, or the spawn area, is the area which the engine checks for units. It is invisible by default (just as it was in WC3), but in Dota 2, you can hold the ALT key to visualize it temporarily. If there is ANY unit in this area: neutral creeps, heroes, summoned units, even observer or sentry wards, spawn logic doesn’t run.

With the only exception being couriers, of course. Couriers don’t block camp spawning.

Why?

Because fuck you, that’s why.

But anyways, you can dupe this logic by attacking the camp at around the 55 second mark and running away. They will chase your hero and leave their spawn area. If there are no units in that rectangle once the clock hits 1 minute, you will trick the game into believing this camp has been cleared, and another pack of neutral creeps will spawn in their spot, and the creeps that were just chasing you will eventually return. Now there are technically 2 neutral camps occupying the same area. You can continue doing this indefinitely, but every stack becomes more difficult as units will clump up and start bumping into each other. But I’ve seen stacks as high as 6 or 7 (haha funny numbers).

Exhibit 2: live demonstration of the camp stacking mechanic up to 5 stacks

This is obviously just a limitation of the WC3 world editor. The DotA designers needed the neutral camps to respawn. Bounds checking was the simplest way to solve that problem, and we have to live with that decision in 2026. It also ensures that the laning phase turns into a cat and mouse game where your support is trying to stack the camp that’s closer to their tower and block the camp that’s closer to the opponent’s tower, by either blocking it with wards, or with their own hero, or summoned units. It’s annoying, it’s archaic, but it is the absolute best way to squeeze as much farm out of the map as you can, as the map is colossal and you can only clear so many camps every minute. So consolidating them in the same location is just logical. And it’s not like you can just not do this. In lower ranks, maybe. But if you are supporting in higher ranks and you don’t stack high value camps, your carry will scream at you in a foreign language.

In order to be competitively viable, you must utilize decades-old exploits that were just… never patched out of the game.

You can also pull a neutral camp into your creep wave, causing them to abandon their assault on the opposing tower and start clearing the neutral camp instead. This is sometimes done to pull the lane back closer to your tower, and to deny the gold and experience to your opponents by having the neutral creeps kill yours. I won’t go too in depth on this mechanic in this article, but just know this: like stacking and creep aggro rules, is it boring, nonsensical, feels exploitative, and is absolutely vital to high-level play.

High Ground & RNG

I actually really enjoy the high ground rules. I like the strategic depth it adds. There are several levels of elevation on the map. You can see everything on the same level and below, but you can’t see the upper levels. The river that divides the radiant and dire territories is on the lowest level on the map. Encroaching on the enemy territory forces you to go uphill blind, which gives defenders an advantage. There are also hyper-elevated hotspots on the map, steep but isolated cliffs. They are designed for warding. Those spots are highly contested as wards placed there reveal absolutely everything within their radius. Another notable high ground points are the bases themselves. The tier 3 tower sits on the inner perimeter of each base, on the edge of the high ground. It is often the hardest tower to siege because to hit it, you need vision, which usually means walking up blind. This often means that sieging the tier 3 tower and the barracks that sit right behind it is the hardest milestone as the defenders have a high ground advantage on top of a very powerful tower. Your lead means effectively nothing if you can’t siege the tier 3 tower, which has led to many cinematic comebacks in my time playing this game.

exhibit 3: demonstration of the power of a high-ground ward

There is another high ground interaction that I don’t quite love as much. The miss chance.

All ranged attacks that connect uphill have a 25% chance to miss. This calculation happens not when the projectile is launched, but as soon as it connects. This means that you could shoot an attack while on level ground, the opponent could walk up and immediately have a 1 in 4 chance to completely evade the attack. This is another thing that the WC3 engine was hardcoded to do. Because the units in WC3 are plentiful (in regular RTS play), this was done as a way to give uphill defenders an advantage. Because when you have 10 units attacking uphill, the 25% misses average out across all units, so you can expect a roughly 25% damage reduction. But you never amass many ranged units in Dota 2, unless you’re Enigma and your eidolons are going ham. Your attacks are coming from 1 unit - the hero you control. Because of that, misses are felt more viscerally. And they feel horrible. Bad luck could mean the difference between getting a crucial lasthit or even finishing off an enemy hero. Missing those kills feels like being robbed. But no, because Warcraft 3 did it, and for no other discernible reason, Dota 2 must do it too.

The RNG nightmare of Dota 2 doesn’t end there. Sure, there are items that gives a random crit chance, and there are heroes that have passive abilities that have a random chance to proc on hit. There are also entire heroes whose kits are defined by randomness (looking at you, Ogre Magi and Chaos Knight). Though one thing worth noting is that Dota 2 and DotA (WC3) both use the pseudo-random RNG system, meaning that the game artificially nudges you towards having an average of a 17% chance to bash someone with Spirit Breaker, for example. For each hit you don’t bash, the probability goes up, and for each hit you DO bash, the probability goes down. This helps with preventing extreme lucky or unlucky streaks.

dota2damage.png

What isn’t averaged, however, is the attack damage spread.

If you’re unacquainted with the WC3 engine or with how Dota 2 calculates damage, you might be wondering “the fucking WHAT spread?” But you read that correctly. The attack damage spread. The WC3/DotA HUD was kind enough to show you the entire spread of your attack damage. For example, it would show you a range of 49-59. This means that each right click attack you perform, it will hit for a random value between 49 and 59, before any other calculations (like armor % reduction) kick in. If you think this was removed in Dota 2 because it simply shows you a single damage value - then you would be a naive fool. Dota 2 lies to you. It still does this shit under the hood, you just can’t glance it. It simply displays you the mean of these two values. To see the actual range, you have to mouse over your stats to get an overlay with more detailed information. No one can convince me that this is a good mechanic that should stay, because I know it’s not. I can’t think of a single reason. It’s just more legacy WC3 bullshit that was questionable even back then. If you’re an avid Dota 2 enjoyed, just know that if you ever missed a lasthit by a couple of hitpoints, or failed to kill an enemy hero that survived with 1 HP, you may have been a victim of a low roll. Your 78 damage actually hit for 71, and there was nothing you could have done about it.

dota2damage.png





Take a look at the images. Do you see how in the Dota 2 screenshot above, the numbers on Axe’s portrait just show a flat number, while the popup displays the full damage range, clarifying that 59 damage is actually 57-61? While Warcraft 3 shows you the range directly on the HUD without hiding it. Still, if it was up to me, I would remove the damage spread entirely and just have it be a flat value.

NEUTRAL ITEMS; SEVEN YEARS OF LOTTERY TICKETS

Let’s get into some more RNG. Neutral items were introduced in 2019, patch 7.23. They dropped randomly from neutral camps for years. They gave passive abilities, sometimes active AND passive, and sometimes just active. The loot table got stronger at game clock milestones, with the strongest tier being at 60 minutes for full-length matches and half that for turbo matches. They were completely random and ranged from being absolutely useless for your hero, to definitively game-winning. The last tier had the biggest power spread, usually winning or losing the game for your team instantly depending on how lucky your team got. This system was in the game just as I had just described it for YEARS, until 2023 where in patch 7.33 they would instead drop a token which you could exchange for a neutral item from a randomly generated pool of 5. Still random, but at least you had some agency. Then in 2025 patch 7.38, they reworked the system again so that the neutral camps began dropping a resource known as Madstone. Once you’ve collected enough, you could craft an item and imbue it with an enchantment, both also from a random pool of 4 at the first tier. For further levels, you had 5 options, but one of them was to keep your old item, you actually only had 4 new options now. It’s funny in a way. They had recently made the map 40% bigger, but the designers were too scared to give you complete control over what items you get. That’s also when they started adding way more active neutral items, where you had to use them to get their utility, otherwise they were just paperweight. Debatable decision, but it is what it is I guess.

exhibit 4: crafting a tier 1 neutral item

helmoftheundying.png

Then finally, in the most recent patch as of writing this in 2026, 7.41, they constrained the enchantments you could put on these items to your primary stat. So if you were playing a strength hero, you will always get to pick from 4 specific enchantments, then 5 (keep the old one). Same if you were agility, intelligence, or universal. The artifacts themselves remained completely random. This RNG circus has been going on for approximately 7 years. And I think that’s tragic. The sad thing now is that there are more active neutral items than ever, and I never remember to use them during fights. I think they should just be passive man. But maybe some immortal 326 sweatlord will disagree with me and tell me to git gud. And to that I say: get a life, loser.

By the way, putting Helm of the Undying as a random drop in tier 5 was unacceptable. What the fuck were they thinking? They were abusing inhalants, I reckon.

Unit Pathing & Turn Rates

This is probably the most immediately-felt point by the newcomers. Pathing in WC3 was a 2002 RTS issue that was solved with the technology and knowledge that was available in 2002, and it is notoriously awkward. Each unit has their own collision radius which determines how close they approach buildings, trees, environmental obstacles, and other units. Unit radius is highly varied, but all heroes have the same collision radius of 32 units. Naturally, buildings are larger and units are smaller, and heroes are average-sized. The way pathfinding works is via a simple A* algorithm. It checks the position of the controller unit, compares it to the position of the movement target, and calculates the shortest route to the location. The pathfinding correctly accounts for map changes - when a tree gets cut down or a building is destroyed, subsequent movement commands will route around the new layout.

Units are not part of that navmesh. They are dynamic units that all USE the navmesh to calculate their own movement. Because units in these games can bump into each other, this presents a complicated problem on how to resolve their movement when two units want to move to the same position, but they get in each other’s way. In more modern games, the units just glide along each other as they also have small collision radiuses, and when they aggregate on the same point - they get slowly pushed apart. But in Dota 2 and WC3, if you occupy a space - you fucking OCCUPY it. That little area of the map is rightfully yours by divine right. When these feeble-minded weaklings try to occupy the same space as you, they must recalculate their path on the spot to path around you, like pathetic peasants. Unless their position changing abilities or items like the Force Staff have anything to say about it.

exhibit 5: Enigma dying because he was body blocked by a treant

This means that you can actually BLOCK your opponent’s movement by moving in front of their path and stopping in front of them. They will bump into you, stop moving for a fraction of a second, recalculate their path, and start moving again shortly. If you’ve internalized the jank and learn to react to where the enemy character is turning and how quickly, you can predict where that new path will go, and you can intercept it again, forever preventing your opponent from moving. It then becomes this little game of who can out-path-find each other on janky 2002 engine logic. This leads to scenarios where your hero’s escape, a 2500 HP 150 damage gigachad, gets thwarted by a single 450 HP 43 attack damage summoned sentient broccoli unit from Nature’s Prophet. In a world of cosmic deities and literal fundamental forces of the universe, a small animated sapling is an immovable object that can sentence a god to death by simply standing still. Hilarious when you’re the Nature’s Prophet. Infuriating if you’re his victim though.

Yeah, “skill expression” and all, but it’s not particularly hard to do and it’s boring to watch.

Just like manipulating creep aggro.

Just like stacking creeps.

Just like getting lucky.

Bitter Conclusion

dota2.png

Every mechanic I’ve described above could theoretically be fixed. But here’s the thing - they won’t be, and not because Valve is lazy. It’s because at this point, they can’t be. Remove creep aggro and melee heroes lose their only real foothold in lane. Remove camp stacking and suddenly half the farm-dependent heroes in the game are starving. Remove unit collision and an entire category of summoner playstyles collapses overnight. These aren’t bugs that survived. They’re fossils that became foundations. Valve didn’t just inherit a 2002 engine’s worth of mechanical debt - they built a competitive ecosystem on top of it, balanced around it, and shipped it to millions of players. The jank isn’t a flaw in Dota 2. The jank is Dota 2. And that means you, the player, are permanently on the hook for learning archaeology just to play the game competently in 2026.

I have about 3600 hours on this game combined with my two accounts, and less than half of them were enjoyable. I am never getting those hours back and I have already made peace with this reality. I quit playing ranked once I reached the Ancient 1 rank, around 85th percentile of all players globally. Not pro level by any means, but definitely not a noob either. After that, I began queuing turbo almost exclusively. I thought that would lead to faster matches and therefore less tilt, but I’ve been part of some absolute 60 minute slugfests in turbo. I have lost many matches where I played my heart out while caffeinated, just as I have won matches where I was sandbagging intentionally. Both of these things made me feel like my efforts are worthless. This shit should have stayed as a fun WC3 mod that functions as a LAN party game. Instead, Valve twisted and groomed it into becoming one of the biggest Esports in the world. And the people justifying this by saying that you need “mental fortitude” to climb to immortal, or to even enjoy the game? This is a genuine mental health hazard, and I’m not being hyperbolic when I say this. What other game requires therapy to enjoy it? I can only think of Monopoly as that almost tore my family apart, and it’s funny I should mention Monopoly here as it is also an RNG-based battle of attrition. Sound familiar?

All these things make the game feel like an abusive relationship, where the good moments aren’t particularly good, but they contrast so sharply with the abuse that the “good” moments feel like the relationship isn’t actually that bad. And you don’t want to leave that person because you’ve known them for so long. You’ve grown attached to all of their flaws, their quirks, and their patterns. The sunk cost keeps you chained. But mark my words. No matter how good you are, what rank you have, and how many hours you have, there WILL be times when you’re on the receiving end of this abuse, by no fault of your own. And there is nothing you can do about it. It’s why over time, wins start feeling “meh” and losses make you want to break your keyboard in half. Remember, it’s a 5 versus 5 game. Your individual effort only amounts to 20% of the impact you can make on the game, as long as you’re playing within your skill bracket. You think you’re having a “good game” and you’re “popping off”, but you’re not. You just got lucky. Your abusive partner was having a good today and spared you. I briefly considered solipsism. At least then the losses would be my fault.

CREDIT:

Credit where credit is due. Rapid firing some things I really enjoyed about the game.

  • Balancing philosophy of “if everything is broken, nothing is” is genuinely fun and somehow works. Instead of trying to make everyone equal (like League of Legends), everyone is really good at one thing, which puts a bigger emphasis on making a balanced team. Though sometimes this philosophy is better in theory than in practice, as some things will always be more broken than others.
  • I can’t think of a better-engineered game client than Dota 2. It is smooth, looks amazing, performs well, full of well thought-out features. Too bad they’re wasting this engineering talent on a psychological meat grinder.
  • All heroes are free. Nothing is gated behind some fake in-game currency or real money spending. All heroes have been free to play from day 1, and they will continue to be free. Riot games, take notes.
  • Ward warfare. Wards actually matter a lot, especially those contested hotspots. This makes playing support a real mental exercise as you’re trying to out-4D chess the enemy supports by placing wards in unpredictable and predicting where theirs will be. I always have fun with it when I play support.
  • The spectating and replay system. Dota 2’s tools for watching and analyzing your own games and pro games are genuinely class leading and tie into why the skill ceiling is so high.
  • Sound design is exceptional. Every spell and item has a distinct sound. There are even distinct sound effects for failing to cast a spell if you’re stunned, out of mana, silenced, or if the spell is on cooldown.
  • The item shop is loaded. It has a massive roster of items which take a while to learn, but they’re all very powerful in their own ways and can counter each other. Once you learn to itemize properly rather than following a prebuilt guide, your rank will skyrocket. Also, I love that BKB breaks League players’ brains.
  • Still better than LoL. But barely.

Get In Touch

Running VK Interactive - contract work in pipeline engineering, 3D visualization, and technical art. Previously Meta FAIR Labs (NeurIPS 2024).