/vulft

VUL-FT : a full takeover Dota 2 bot script

Primary LanguageLuaOtherNOASSERTION

VULFT - Full Takeover Bot Script. Requires manual install into vscripts/bots folder (all recently released bots have this issue). Highly dynamic fight behaviour. DotaBuff roles and item builds updated on: 19/09/23. VUL-FT has no affiliation with DotaBuff.

Translations of This Page in Other Languages

== Manually installing ==

VUL-FT currently will not work via subscription. It will revert to the default bots, it seems other recent bots have the same issue. I'm still investigating what is going wrong there. For now, it's necessary to manually install the bots.

Optional: Before setting VUL-FT as the local dev script, It may also be a good idea to backup your old 'vscript/bots' folder if you have another bot that you have stored there:
The local dev bot folder is located at

[drive]:/%Program Files%/Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots

  1. rename bots folder to bots.old.
  2. make a new folder named bots
  3. copy the VUL-FT files from either github or the workshop folder into the new bots folder.

-- Via workshop local files: (the Valve-verified workshop files)

After freshly subscribing, find the recent folder in

[drive]:/%Program Files%/Steam/steamapps/workshop/content/570/2872725543

and copy the contents of that folder to the bots folder at

[drive]:/%Program Files%/Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots/


-- Via Github: (updated by the creator)

If you know how to use git you can manually download the bots from the official VUL-FT Github and put them in

[drive]:/%Program Files%/Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots/


-- Running:

After one of the above steps are complete, you can run the bots by navigating in-game to
Custom Lobbies -> Create -> Edit:
Under BOT SETTINGS change team bots to Local Dev Script (if you still want to fight the Valve bots, note that there is an option for "Default Bots" here as well)
Change SERVER LOCATION to LOCAL HOST (your computer).
Difficulty has no effect yet.
Press OK.
Join the top slot of either team.
Press START GAME.

Alternatively, you may use "Play VS Bots" option but not all heroes are implemented. Sorry about all of this, but it is just the effect of having to run the bots as a dev, rather than via the workshop.

== Features ==

Animated gif of VUL-FT engaged in a teamfight

Dynamic fight decision making.
More player-like.

Animated gif of Muerta bot running from orb walking enemies

Orb Walking.
Advanced item management.
Automatically generated and filtered for error ward locations, if the map ever changes.
DotaBuff parser for averaged out of 5 game skill build, roles and an item build from Divine - Immortal players that week.
Basic jungling in downtime.
They may jungle self-deny in the early game if they get caught by the enemy.
Dynamic retreat, to friendly towers (unless the tower gets overrun), or to friendly allies in the direction of the allied fountain.
Bounty rune task allocation based on proximity, safety, fog, greed rating
Tower defense allocation based on required threat.
Choose your position whenever by saying in chat "!pos [1-5]" Lower CPU usage than other popular bots.
Bugs!

In addition. I promise this project's code is 100% functional offline and will stay that way. No networking API functions, ever.

== Error Report ==

Lua Error Dump (steam discussion link) -- Use this if you just want to quickly dump some console output.

VUL-FT source code -- Public github

== Not yet implemented ==

Macro fight behaviour, initiator choice, grander strats like cutting losses, trading towers. They will assess the current aggressive plays being made and see if they think it's worth it for themselves, if an enemy is occupied attacking someone else. Enemy fight intent is tracked and loses magnitude based on facing direction, this allows allies to recognize trading without being attacked.
Player-to-bot ping communication.
Enemy vision assessments.
Dewarding.
Sentry and dust for enemy stealth.
Illusions are controlled by default behaviour. (But arc warden double is full-takeover).
Enemy fountain threat.
Avoid zones.
Response types for ability casts. (Rupture: Avoid unnecessary movement)
Structural enemy unit-health units. (tombstone, supernova)
Attacking and avoiding hero creep units. (Lycan wolves, Broodmother spiders)
Roshan.
Denying towers.

== Known issues ==

Picking may over-select for core roles.
Some tasks are not well informed by threat analytics code, not all tasks use intelligent movement functions to adjust vectors around dangerous areas.
Junk is not correctly sold (DotaBuff meta parser is not complete, and there may be additional junk buys incorrectly parsed into the build, item builds are calculated for their combines, however, the junk is incorrectly evaluated and the wrong item may be sold when 9-slotted).
Bots do not leave lanes which are dangerous if farming them. They only retreat. The untested data is there for changing lanes but mid-game rotating is not coded, it only happens naturally as they move / getting runes / defending towers / sometimes by jungling. The score of the creep wave draws them in too strongly.
Overly aggressive, especially in the early game.
Bots might not be able to commit to a highground push, due to certain variables in the state of the creep wave, they might wander off out of push range instead.

Many other things.

Runes for full-takeover bots:

-- bottom water runes cannot be picked up.

-- river bounty runes cannot be picked up.

-- any runes that are stacked up on by another bounty rune cannot be picked up.

These three rune issues are all technically true, but there is a workaround in place. During the early stage of the game, the bots run as a partial takeover bot, all modes are set to do nothing, ability_item_usage state is set to 100% desire, and the bots use that as a hook to the full-takeover code. When they stand next to a rune, rune mode is engaged for a split second, in the hope that they will pick up the bounty rune. Once the runes are picked up, or after a short while, a handover is completed to cut the default bot code off completely and the bot_generic Think function is defined.

== Project State ==

Alpha version. Please give feedback.
Is the project currently stable: Experimental, updated for 7.34c 19/09/23 (September 19)
Last DotaBuff meta update: 19/09/23

== Support ==

Please shoot me an email for any questions or to support the project:
zyewchi@gmail.com

If you would like to support the project, my paypal is on the above email with the goofy robot icon. Support means I can justify more time to make them better. But also just a nice comment on the workshop page helps a lot.

== Dev contact ==

Michael - zyewchi@gmail.com