Ability Arena's community servers are free to use. They're kept running by GenesisBox.
Player guide

Everything you need to know

Installing, patching, hosting and joining. Also what happens behind the scenes when the host drops, and how you get back into the same game.

Before you start

You need:

Only the client is needed

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

  1. Download AbilityArenaClient.exe and put it in its own folder, for example Documents\AbilityArena. It saves a small client.json settings file next to itself.
  2. Start Steam and log in, then double-click the client. A window opens with four tabs: Play, Community, Setup and Stats.
  3. 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.
  4. 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.
    The last two lines, installed for local play and Community patch, turn green after the next step.
  5. 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:

FileWhat it adds
bots_smart.luaThe smart bots: roles, combos, learning, positioning and personalities.
bots_chat.luaThe bots' 200+ trash-talk lines.
bots.luaConnects the smart bots to the game.
lan_resume.luaSaves the game every round and restores it after a host change.
game_init.luaFills empty seats with bots, makes Start work with any number of players, and records results.
stages/battle.luaSaves the game when a round starts, places bots for the fight and records fight results.
stages/board_setup.luaLets bots pick heroes properly.
Updates are automatic

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

  1. 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.
  2. When you click Install / update, the client compares each file on your PC with the fingerprint and downloads only the files that differ.
  3. 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.
  4. 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.
Everyone in a lobby should be on the same patch

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

  1. On the Play tab, type a lobby name (optional) and click + Create lobby.
  2. Your lobby shows up for everyone in their client and on the website. While you wait, use the lobby chat.
  3. 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.
  4. Click ▶ Start game. Your client starts Dota as the host.
  5. In Dota, wait until everyone shows up in the game lobby, then click Lock and Start. You can also type !start in the Dota chat.
Keep the client open while you play

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

  1. On the Play tab, find the lobby under Open lobbies and click Join.
  2. 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.
  3. 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:

ControlWhat it does
BotsTurn 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 seatsHow many people can join, including the host. Seats beyond that are closed.
Ranked / CasualCasual games don't change anyone's ladder points. The bots still learn from them.
PrivateHides 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.
PasswordOptional. Anyone joining from the list is asked for it.
Kick / Make hostRemove a player (they can't rejoin that lobby), or hand the host role to someone else before the game starts.
Ready checkPlayers click I'm ready. The host's Start button shows how many are ready, and starting with someone not ready asks first.
Patch checkAnyone on an old patch is flagged ⚠, and Start stays blocked until they click Install / update.
Resume a saved gameIf 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:

Your Dotaconnects to 127.0.0.1
⇄
Your clienttunnel
⇄
Community relayFrankfurt · UDP 27100
⇄
Host's clienttunnel
⇄
Host's Dotagame server

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:

  1. 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.
  2. 0 s: host disappearsThe server stops getting the host's "still here" signal.
  3. ~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."
  4. ~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.
  5. When the new host is readyEveryone else's client restarts Dota and reconnects to the new host automatically.
  6. 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.
What if only the host's Dota crashed?

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.

Good to know

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

Ladder & stats

Troubleshooting

ProblemFix
Steam account not foundStart Steam and log in, then restart the client.
Workshop item missingSubscribe to Ability Arena, start Dota once, wait for the download to finish, then click Install / update.
Community server not reachableCheck 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 connectWait 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 playersSomeone is on an old patch. Everyone clicks Install / update, then the host restarts.
Antivirus deletes the clientCommunity 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 clientClick 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:

  1. Install Ability Arena into dota_addons\ability_arena, unpacked from the workshop file steamapps\workshop\content\570\2865676075\2865676075.vpk.
  2. Download each file listed in /patch/manifest.json from /patch/files/<path>, for example /patch/files/scripts/vscripts/bots_smart.lua, and save it at the same path inside the addon folder.
  3. 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 relay, the ladder and this guide run on servers paid for by GenesisBox, the solar-powered computer that keeps working without the internet. If this arena gives you a good evening, take a look at what they're building. It helps keep the lights on.