Skip to content
 
 

Repository files navigation

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

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 โ€“ general settings.

    • Customize/hero/viper.lua โ€“ hero-specific settings.

    • Path depends on install method:

      • Workshop only: <Steam\steamapps\workshop\content\570\3246316298\Customize>
      • Quick-install: <Steam\steamapps\common\dota 2 beta\game\dota\scripts\vscripts\game\Customize>
  • โœ… 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).


How to Install

  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.

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.


In-Game Commands

  • !pos X โ†’ Swap your lane/role with a bot (e.g., !pos 2).

  • !pick HERO โ†’ Pick a hero for yourself.

    • /all !pick HERO โ†’ Pick hero for enemy.
    • Use internal names if needed (!pick npc_dota_hero_keeper_of_the_light). List here.
  • !Xpos Y โ†’ Reassign other botsโ€™ positions (e.g., !3pos 5).

  • !ban HERO โ†’ 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.
  • 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)๏ผš
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
โ”‚       โ”‚   ...
โ”‚   
โ””โ”€โ”€โ”€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.
โ”‚   ...
---

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


Support


Useful Resources


Credits

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.

About

A beta Dota2 Bot Script aims to provide better bot game experience

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages