We're seeing some capacity limits, so parts of the site may be slow or briefly unavailable while we work on an upgrade. Please try again later, or join our Discord for updates.
Discord
Dev blog
Release notes

A ladder of your own: ranked PvP and playing with people you know

Dota Captain
7 min read

The story of Dota Captain growing a social and competitive layer: first captain friends, then a full Ranked PvP mode on its own ladder, separate from solo MMR. An honest look at what a rating gives your games, and how daunting it is to build fair ranked multiplayer alone.

For a while the honest truth about playing Dota Captain against another person was that it did not matter. You could queue, get matched, draft your heart out, win or lose, and then close the tab and nothing about you had changed. It was fun in the way a pickup game in a park is fun. But there was no number you were trying to protect, no ledger keeping score across all your games, nobody on the other side who wanted to take something from you. I kept noticing that the games I remembered most in real Dota were never the casual ones. They were the ones where I had a rank on the line and somebody was trying to knock me down a peg. That itch, that a game only gets sticky when it has stakes, is what this whole stretch of work was about.

The gap: real opponents that never counted

Here is the part I had to be honest with myself about: solo already had a ladder. Playing ranked against the AI captain moves your solo MMR, so there was a number to protect and a throughline connecting your games all along. The hole was on the other side of the table. The moment you played a real person, that all fell away. Casual PvP was purely for fun, so win or lose it changed nothing, which meant the most interesting opponent you could face, an actual human, was somehow the one that counted for the least. Each of those games was an island.

What I wanted was progression with a story attached. Not just experience points ticking up in the background, but a rating that goes up when you play well and down when you do not, so that a run of good games actually means something and a bad night stings a little. That kind of number is what turns a pile of separate matches into a season. It gives your play a shape.

The catch is that a competitive scene against people needs, well, people. A PvP rating only means something if the player on the other side of the table is also trying to climb. So before any of this could exist, the tool had to grow a way to actually connect you to other captains, not just leave you alone with the AI.

First, people you actually know

That is where captain friends came in, back in 0.6.1. You can search for other captains, send a friend request, and accept the ones that come your way. There is a badge on incoming requests so you are not left guessing whether anyone reached out. You can browse your friends and your pending requests in one place, and from the lobby you can open a friend's match history and see what they have been drafting.

This sounds small next to a ranked ladder, and mechanically it is. But it was the foundation for everything after. A competitive scene is not a matchmaking algorithm, it is people. Being able to look at how a friend drafts, to see the heroes they lean on and the games they have played, is the first thread of a rivalry. You start to know someone's tendencies, and knowing tendencies is the beginning of caring who wins.

If you play real Dota this idea should feel familiar. Scouting is half the game. Knowing that a particular player always first-phases a comfort mid, or hoards a signature carry, changes how you draft against them long before the game starts. Friends and their match history are a tiny version of that same loop, and it made the tool feel less like a sandbox and more like a room with other people in it.

Ranked PvP on its own ladder

Then in 0.8.0 the real thing arrived. Ranked PvP. You queue straight from the lobby, accept your match when it pops, and play for a dedicated PvP rating that climbs and falls on its own ladder. Crucially it is kept separate from your solo MMR. Your solo ladder and your PvP ladder are two different numbers because they measure two different things, how you do against the AI captain and how you do against real people, and mixing them would have made both muddier.

Every ranked game now awards captain XP and, win or loss, shows you your rating change on the post-match screen. That last part mattered a lot to me. Hiding the number after a loss would have been the cowardly, salesman thing to do. But the whole point of a ladder is that the loss counts too. Seeing the minus is not punishment, it is the game being honest with you about where you stand, and that honesty is exactly what gives the win its weight.

To make the ladder feel like a real place, the leaderboard and your match history both grew a Solo and PvP switch, each with your own placement. So your ranked run sits right next to your solo games and you can see both lives you are living inside the tool. The lobby became mode-aware too, with a Solo and PvP toggle, your PvP rank and recent Versus matches on display, and it remembers which mode you were last in so you are not resetting your intent every visit.

What casual became

Adding a ranked ladder forced a decision about what casual play is for, and I made a call that some people will find opinionated. Public matchmaking is now ranked. If you queue into the open pool, you are playing for rating. Casual play still exists, but it is private-only now, reachable through a room code you share with someone.

The reasoning is that a shared public pool only works if everyone in it is playing for the same reason. If half the queue is trying to climb and half is messing around, the rating stops meaning anything and the climbers feel cheated. Keeping the public pool ranked protects the integrity of the number. And pushing casual into private rooms actually fits how people play casually anyway, which is with a specific friend they wanted to challenge, not with a random stranger.

I want to be straight that this is a tradeoff, not a free win. Anyone who liked queueing publicly for a low-stakes game lost that, and I get why that is annoying. My bet is that the throughline a ladder gives you is worth more than the frictionless casual queue it replaced. I could be wrong about that balance, and if enough people tell me so, I will revisit it.

An honest word on doing this alone

I should say plainly that building fair ranked multiplayer as one person, in spare time, is daunting in a way solo features never were. A solo mode only has to be fun. A ladder has to be fair, and fairness is unforgiving. If the matchmaking is lopsided, if the rating math rewards the wrong things, if the queue is empty at the hour you want to play, the whole promise falls apart and people are right to be upset. There is no team to catch my mistakes here, just me.

The match engine underneath all of this is still an approximation. It does its best to read a draft and play it out, and it gets things wrong. One small example of that showed up in 0.8.1, where hero roles in the match view were sometimes mislabeled, so a hero the simulation actually played as a carry could be shown as a support. I fixed it so the role you see is the role the sim genuinely played each hero in, but the fact that it was ever wrong is a good reminder that this is a model, not an oracle.

So this is not me announcing that ranked is solved. It is me saying the scaffolding is up, the ladder exists, and the number on it is real enough to try to protect. If you have wanted your games here to add up to something, they finally can. And if you find a place where the fairness cracks, tell me, because more of this than you would guess started as a bug report or a bit of feedback that made me realize the thing I built was not yet the thing I meant to build.

Release notesMultiplayer