We love bot games! ๐ฎ
[CRITICAL] To play this script you must create a Custom Lobby and select Local Host as the server location.
Bots should have names ending with โ.OHAโ when installed correctly.
๐ Steam Workshop Link
Thanks and kudos to everyone who contributed to making bot games fun and exciting!
- Keep bot games challenging and up to date.
- Let players practice against bots that can play all Dota 2 heroes.
- Provide chill gameplay โ if you want highly competitive bots, please join us in improving them instead of complaining.
-
โ Supports Dota 2 Patch 7.39.
-
โ Supports all 126 heroes (Kez, Ringmaster, Invoker, Techies, Meepo, Lone Druid, Muerta, Primal Beast, etc.). Some new heroes are still being tuned.
-
โ Customizable bots: ban/picks, names, item builds, skill upgrades, etc.
- Customize/general.lua โ general settings.
- Customize/hero/viper.lua โ hero-specific settings.
- Customize path depends on your install method:
- Permanent customization: Move Customize folder to be
<Steam\steamapps\common\dota 2 beta\game\dota\scripts\vscripts\game\Customize>
- Workshop item (Can get overridden by future script updates): Direct customize in
<Steam\steamapps\workshop\content\570\3246316298\Customize>
- You can use the Permanent customization option to avoid your custom settings getting replaced/overridden by workshop upgrades.
- Permanent customization: Move Customize folder to be
-
โ Dynamic difficulty (Fretbots mode) โ boosts bots with huge unfair advantages for real challenge.
-
โ Supports most game modes (see discussion).
-
โ Improved decision-making: ability casting, items, roaming, farming, defense.
-
โ AI Chatbot: chat with bots as if they were real optimistic players (requires Fretbots mode).
-
โ Bots can play any role/position โ deterministic laning assignment.
-
โ Tons of bug fixes (idle bots, canceled channels, stuck states).
- Create a Custom Lobby โ select Local Host as Server Location.
- To enable Fretbots mode (harder bots, neutral items, chatbot, etc.), you must manually install the script: Instructions here.
-
Lobby slot order = position assignment (1โ5).
-
Default role mapping:
- Pos1 & Pos5 โ Safe Lane
- Pos2 โ Mid Lane
- Pos3 & Pos4 โ Offlane
-
Customize picks, bans, and roles in Customize/general.lua.
-
!pos X
โ Swap your lane/role with a bot (e.g.,!pos 2
). -
!pick HERO_NAME
โ Pick a hero for yourself./all !pick HERO_NAME
โ Pick hero for enemy.- Use internal names if the short names can overlap (
!pick npc_dota_hero_keeper_of_the_light
). Find the list of internal names here.
-
!Xpos Y
โ Reassign other botsโ positions (e.g.,!3pos 5
to let the 3rd bot on the team play pos 5, do note it's the bot on the 3rd slot in the team not the bot that plays pos 3 at that moment). -
!ban HERO_NAME
โ Ban a hero from being picked. -
!sp XX
โ Set bot language (!sp en
,!sp zh
,!sp ru
,!sp ja
). -
Batch commands supported (e.g.,
!pick io; !ban sniper
).
- Contributions welcome on GitHub.
- Custom item/skill builds donโt need PRs โ just tweak locally.
- Future development is in TypeScript for better maintainability.
- Project structure (bots, Funlib, Customize, BotLib, typescript, game)
- To develope the script, you need to make sure the script is under this root directory:
root: <Steam\steamapps\common\dota 2 beta\game\dota\scripts\vscripts>
โ
โโโโbots: contains all lua files for the bot logic. This is the folder `3246316298` in Workshop.
โ โ hero_selection.lua
โ โ bot_generic.lua
โ โ ...
โ โ
โ โโโโFunlib: contains the libraries/utils of this project
โ โ โ utils.lua
โ โ โ ...
โ โ
โ โโโโCustomize: contains the files for you to easily customzie the settings for bots in this project
โ โ โ general.lua: to customzie the settings for each bot teams
โ โ โ ...
โ โ โ
โ โ โโโโhero: to easily customzie each of the bots in this project
โ โ โ viper.lua
โ โ โ ...
โ โ
โ โโโโBotLib: contains the bot item purcahse, ability usage, etc logic for every bots.
โ โ hero_abaddon.lua
โ โ ...
โ โ
โ โโโโFretBots: contains the configs/utils of the FretBots mode setup
โ โ โ SettingsDefault.lua: to adjust bonus values
โ โ โ ...
โ
โโโโtypescript: contains the scripts written in typescript (TS) to maintain this project in a more
โ โ extendable way since TS supports types and can catch errors in compile time.
โ โ
โ โโโโbots: the TS version of the script that's converted to LUA files into the `root/bots` folder.
โ โ โ ...
โ โ
โ โโโโpost-process: contains the scripts to do post-processing for the TS to LUA translation.
โ โ ...
โ
โโโโgame: default setup from Value, including them here for custom mode setup.
โ โ botsinit.lua
โ โ ...
โ โ
โ โโโโCustomize: You can copy & paste the Customize folder from <root/bots> to <root/game> to avoid
โ the custom settings getting replaced/overridden by workshop upgrades.
โ ...
---
-
Current bot playstyle is limited by Valveโs API. We need ML/LLM bots like OpenAI Five!
-
Planned improvements:
- Smarter laning, pushing, ganking.
- Stronger spell casting (Invoker, Rubick, Morph, etc.).
- Better support for bugged heroes (Dark Willow, IO, Lone Druid, Muerta, etc.).
- Full mode support + patch fixes.
- Contribute on GitHub.
- Or buy me a coffee โ.
- Dota2 AI Development Tutorial (adamqqq)
- Valve Bot Scripting Intro
- Lua Bot APIs
- Ability Metadata
- Enums & APIs
- Modifier Names
- Dota2 Data Mining
Built on top of Valveโs default bots + contributions from many talented authors:
- New Beginner AI (dota2jmz@163.com)
- Tinkering About (ryndrb)
- Ranked Matchmaking AI (adamqqq)
- fretbots (fretmute)
- BOT Experiment (Furiospuppy)
- ExtremePush (insraq)
- And all other contributors who made bot games better.