You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# We Love Bot Games!
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](https://steamcommunity.com/sharedfiles/filedetails/?id=3246316298)
Thanks and kudos to everyone who contributed to making bot games fun and exciting!
---
## Script Goals
1. Keep bot games **challenging and up to date**.
2. Let players **practice against bots** that can play *all* Dota 2 heroes.
3. Provide **chill gameplay** – if you want highly competitive bots, please join us in improving them instead of complaining.
---
## Why It’s Enjoyable
* ✅ 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](bots/Customize/general.lua) – general settings.
* [Customize/hero/viper.lua](bots/Customize/hero/viper.lua) – hero-specific settings.
* Customize path depends on your install method:
* **Permanent customization**: Move Customize folder to be ``
* **Workshop item (Can get overridden by future script updates)**: Direct customize in ``
* You can use the **Permanent customization** option to avoid your custom settings getting replaced/overridden by workshop upgrades.
* ✅ **Dynamic difficulty (Fretbots mode)** – boosts bots with huge unfair advantages for real challenge.
* ✅ Supports **most game modes** (see [discussion](forest0xia/dota2bot-OpenHyperAI#72)).
* ✅ 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).
---
## How to Install for Enhance mode
1. Create a **Custom Lobby** → select **Local Host** as **Server Location**.
2. To enable **Fretbots mode** (harder bots, neutral items, chatbot, etc.), you must **manually install** the script: [Instructions here](forest0xia/dota2bot-OpenHyperAI#68).
---
## Bot Roles & Positioning
* 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](bots/Customize/general.lua).
---
## In-Game Commands
* `!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](forest0xia/dota2bot-OpenHyperAI#71).
* `!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`).
---
## Contribute
* Contributions welcome on [GitHub](https://github.com/forest0xia/dota2bot-OpenHyperAI).
* 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:
│
└───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 to to avoid
│ the custom settings getting replaced/overridden by workshop upgrades.
│ ...
---
```
---
## What’s Next
* 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.
* [Open feature requests](https://github.com/forest0xia/dota2bot-OpenHyperAI/issues?q=is%3Aissue+is%3Aopen+%5BFeature+request%5D)
* [Some feedback to Valve Dota2 bot team](https://www.reddit.com/r/DotA2/comments/1ezxpav/)
---
## Support
* Contribute on GitHub.
* Or [buy me a coffee ☕](forest0xia/dota2bot-OpenHyperAI#74).
---
## Useful Resources
* [Dota2 AI Development Tutorial (adamqqq)](https://www.adamqqq.com/ai/dota2-ai-devlopment-tutorial.html)
* [Valve Bot Scripting Intro](https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting)
* [Lua Bot APIs](https://docs.moddota.com/lua_bots/)
* [Ability Metadata](https://raw.githubusercontent.com/dotabuff/d2vpk/master/dota_pak01/scripts/npc/npc_abilities.txt)
* [Enums & APIs](https://moddota.com/api/#!/vscripts/dotaunitorder_t)
* [Modifier Names](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Modifier_Names)
* [Dota2 Data Mining](https://github.com/muk-as/DOTA2_WEB/blob/master/dota2_web/Items_cn.json)
---
## Credits
Built on top of Valve’s default bots + contributions from many talented authors:
* New Beginner AI ([dota2jmz@163.com](mailto:dota2jmz@163.com))
* Tinkering About ([ryndrb](https://github.com/ryndrb/dota2bot))
* Ranked Matchmaking AI ([adamqqq](https://github.com/adamqqqplay/dota2ai))
* fretbots ([fretmute](https://github.com/fretmute/fretbots))
* BOT Experiment (Furiospuppy)
* ExtremePush ([insraq](https://github.com/insraq/dota2bots))
* And all other contributors who made bot games better.
## Advanced AI Integration (New)
Advanced AI module now integrated into the drafting pipeline (role + bracket aware):
- Runtime module: `bots/FunLib/advanced_bot_ai.lua`
- Draft integration: `bots/hero_selection.lua`
- User config: `bots/Customize/general.lua` (`Customize.AdvancedAI`)
Panduan lengkap (Bahasa Indonesia):
- [docs/advanced-ai-id.md](docs/advanced-ai-id.md)
# Dota2AI
# Dota2AI