Before you start
You need:
- Windows 10 or 11 with Steam installed and logged in.
- Dota 2 installed (the free game from Steam).
- The Ability Arena workshop item. Subscribe to it from the Dota 2 Arcade, or from the Steam Workshop page (item
2865676075). Then start Dota once and let it finish downloading. - The community client. It's one file, about 8 MB, and doesn't need installing.
You don't need port forwarding, a VPN, Hamachi or GameRanger. Every friend needs the same setup: Dota 2, the workshop item and the client.
1. Install
- Download
AbilityArenaClient.exeand put it in its own folder, for exampleDocuments\AbilityArena. It saves a smallclient.jsonsettings file next to itself. - Start Steam and log in, then double-click the client. A window opens with four tabs: Play, Community, Setup and Stats.
- Windows may show "Windows protected your PC". That's normal for small community tools that don't have a paid code-signing certificate. Click More info → Run anyway.
- Open the Setup tab. The checklist should show green for:
- Steam account: your Steam name, read automatically.
- Dota 2 installed: the install folder was found.
- Ability Arena downloaded from the Steam Workshop: your subscription has finished downloading.
- Community server reachable: the client can talk to our server.
- Click ⬇ Install / update. The first time, the client unpacks Ability Arena from your workshop download into Dota's custom games folder and then adds the community patch. This takes about a minute.
The game ends up here (you never need to touch it):
…\Steam\steamapps\common\dota 2 beta\game\dota_addons\ability_arena
2. Patching & updates
The community patch is a handful of script files that sit on top of the official Ability Arena:
| File | What it adds |
|---|---|
| bots_smart.lua | The smart bots: roles, combos, learning, positioning and personalities. |
| bots_chat.lua | The bots' 200+ trash-talk lines. |
| bots.lua | Connects the smart bots to the game. |
| lan_resume.lua | Saves the game every round and restores it after a host change. |
| game_init.lua | Fills empty seats with bots, makes Start work with any number of players, and records results. |
| stages/battle.lua | Saves the game when a round starts, places bots for the fight and records fight results. |
| stages/board_setup.lua | Lets bots pick heroes properly. |
The client checks for a new community patch when it starts and every couple of minutes, and installs it by itself, but never while Dota is running. The client also updates itself: a new version downloads in the background and installs with a quick restart. If you're in a lobby, you get a "Restart & update" button instead, so a game is never interrupted. If Ability Arena isn't installed yet but Steam has downloaded it, the client installs it for you.
How updating works
- The community server publishes a patch list with a version number (for example
2026.10.15-1) and a fingerprint (SHA-256) for each file. - When you click Install / update, the client compares each file on your PC with the fingerprint and downloads only the files that differ.
- Each download is checked against its fingerprint before it's saved. A broken download is rejected and you get "download was corrupted, try again", so a half-written file never ends up in your game.
- The Community patch line in the Setup tab shows the version you have. The client checks it each time it starts. If the line isn't green, or News announces a new patch, click Install / update. Clicking it when you're already up to date is harmless, because nothing gets downloaded.
The host's game runs the rules for everyone. If you're the host, update before you create a lobby. New patches are announced under News in the client and on the home page.
When Ability Arena itself updates on the Workshop
Steam updates the workshop download, but your unpacked copy stays as it was. To pick up an official update, delete the dota_addons\ability_arena folder, then click Install / update again. The client unpacks the new version and puts the community patch back on top.
3. Hosting a game
- On the Play tab, type a lobby name (optional) and click + Create lobby.
- Your lobby shows up for everyone in their client and on the website. While you wait, use the lobby chat.
- Every seat nobody has taken is filled by a bot. You can start alone with 7 bots, or wait for friends. Each person who joins replaces a bot.
- Click ▶ Start game. Your client starts Dota as the host.
- In Dota, wait until everyone shows up in the game lobby, then click Lock and Start. You can also type
!startin the Dota chat.
The client is what carries your friends' connections into your game and sends a "still here" signal to the server every 2 seconds. If you close it, the server assumes you're gone and moves the game to another player.
4. Joining a game
- On the Play tab, find the lobby under Open lobbies and click Join.
- When the host starts, your client launches Dota and connects by itself as soon as the host's game is ready. You don't need to type an IP address or open the console.
- If Dota was already open, the client restarts it with the right connection settings. That's expected.
Lobby controls
The host sets these under Lobby settings while the lobby is waiting:
| Control | What it does |
|---|---|
| Bots | Turn each bot on or off by name, or use Fill with all bots / Remove all bots. Bots sit in seats nobody else takes. If all 8 seats are full and a friend joins, the last bot steps aside. A game needs at least 2 players, and with an odd number one player fights a ghost each round. |
| Human seats | How many people can join, including the host. Seats beyond that are closed. |
| Ranked / Casual | Casual games don't change anyone's ladder points. The bots still learn from them. |
| Private | Hides the lobby from the list. Friends join with the 6-letter invite code under Join with an invite code. New code makes the old one stop working. |
| Password | Optional. Anyone joining from the list is asked for it. |
| Kick / Make host | Remove a player (they can't rejoin that lobby), or hand the host role to someone else before the game starts. |
| Ready check | Players click I'm ready. The host's Start button shows how many are ready, and starting with someone not ready asks first. |
| Patch check | Anyone on an old patch is flagged ⚠, and Start stays blocked until they click Install / update. |
| Resume a saved game | If you have a save from the last 24 hours (a crash, or a break), the host sees Saved game found and can resume it at that round. The same bots come back, and everyone who played should be in the lobby first. |
How it works
Dota's custom games normally need everyone on the same network, or a public server. The client makes your friends look like they're in the host's living room:
- Everyone connects outward to the relay. Because nobody accepts incoming connections, routers and firewalls don't need any changes.
- The relay only forwards game packets between the members of one lobby. Each member has a secret session token, so nobody else can get in.
- On the host's PC, each remote player appears as a local connection. That's why the game runs in its normal LAN mode.
- The community server handles the lobbies, chat, message board, news, the shared ladder, round saves and patch downloads.
When the host drops: automatic takeover
The host's PC runs the game for everyone, so if it crashes, loses internet or the host closes Dota, the game would normally be over. Instead, this happens:
- Every roundWhen each fight starts, the host's game sends a save to the community server. It holds every player's god and powers, shop level, HP, gold, wins and losses, streak, heroes, spells and levels, items, bench, and who fought whom. The server checks each save and keeps the last few.
- 0 s: host disappearsThe server stops getting the host's "still here" signal.
- ~15 sThe server picks a new host: the remaining player with the lowest ping (ties go to whoever joined first). Everyone sees a lobby chat message such as "Host left. Toni is the new host - resuming the game from the last save."
- ~15–20 sThe new host's client restarts their Dota as the game server. The game sees a saved game is waiting and loads it instead of starting fresh.
- When the new host is readyEveryone else's client restarts Dota and reconnects to the new host automatically.
- Back in the gameWhen everyone is back in the Dota lobby, the new host clicks Lock and Start. The game goes straight to the round that was in progress, skipping god selection. Everything is restored for every player and every bot, which keep their names. Only the fight that was interrupted is replayed.
The host's client notices when Dota has been closed for 25 seconds mid-game. It then steps aside so another player can take over the same way. The old host rejoins automatically as a normal player and keeps their seat.
Takeover needs at least one other human still in the lobby. If you're alone with bots and Dota closes, just start a new game. The new host should wait for everyone before clicking Lock and Start, because players who aren't connected at that moment can't get their seat back in the resumed game.
Reconnecting yourself
- Your Dota crashed or you got disconnected (not the host): click ↻ Reconnect on the Play tab. The client restarts Dota and connects you to the current host.
- Your internet dropped for a moment: keep the client open. You stay in the lobby for up to 60 seconds without a signal. When you're back, click ↻ Reconnect.
- You closed the client by accident: start it again and join the same lobby from Open lobbies.
- The host wants to go back to the lobby after a game: Back to lobby, then ▶ Start game for the next game.
Ladder & stats
- Every finished game counts automatically. Humans start at Archon (2,310) and the seven named bots start near 10,000. Your goal is to climb towards them.
- Points by final place with 8 players: 1st +20, 2nd +14, 3rd +8, 4th 0, 5th −8, 6th −14, 7th −20, 8th −26.
- The stats page shows which spells, combos, heroes, lineups, gods and positions win. The bots learn from the same data.
Troubleshooting
| Problem | Fix |
|---|---|
| Steam account not found | Start Steam and log in, then restart the client. |
| Workshop item missing | Subscribe to Ability Arena, start Dota once, wait for the download to finish, then click Install / update. |
| Community server not reachable | Check your internet. In Setup → Community server the address should be http://abilityarena.genesisbox.org. |
| "port 8765 is busy" | An old LAN stats window is still open. Close it, or restart the PC. |
| Dota opens but doesn't connect | Wait until the host's game has fully loaded, then click ↻ Reconnect. Make sure the host's client is still open. |
| Stuck on "just spectate" | Everyone should be in the Dota lobby before the host clicks Lock and Start. Back to lobby, then start again. |
| Game rules feel different between players | Someone is on an old patch. Everyone clicks Install / update, then the host restarts. |
| Antivirus deletes the client | Community tools packed with PyInstaller are sometimes flagged by mistake. Restore the file and add an exception, or ask on the message board. |
| Windows Firewall asks about the client | Click Allow. It only connects out to the relay. |
Still stuck? Copy the Activity log from the Setup tab and post it on the message board in the client.
Manual patch (without the client)
For LAN parties, or if you prefer to do it by hand:
- Install Ability Arena into
dota_addons\ability_arena, unpacked from the workshop filesteamapps\workshop\content\570\2865676075\2865676075.vpk. - Download each file listed in
/patch/manifest.jsonfrom/patch/files/<path>, for example/patch/files/scripts/vscripts/bots_smart.lua, and save it at the same path inside the addon folder. - Host on your LAN by launching Dota with:
-console -novid +sv_lan 1 +dota_launch_custom_game ability_arena main
Friends on your network join with+connect <host-ip>:27015.
Manual installs don't get online lobbies, the relay or host takeover. Those need the client.
Privacy & safety
- The client reads only your Steam display name and account number from your local Steam folder, so lobbies and the ladder show your name. It never asks for your password and never logs in to Steam.
- Your IP address is never shown to other players. All game traffic goes through the relay.
- We distribute only our patch files. Ability Arena itself comes from the official Steam Workshop and is made by Double Edge Studios. This is an unofficial community project, not affiliated with Valve or Double Edge Studios.