Skip to content

Using Generic Hero Values #31

@Nostrademous

Description

@Nostrademous

As we train the AI to do actions we should train on general data values rather than values trained to specific hero names/IDs. What I mean, rather than training an Antimage bot and then separately on say Earthshaker, we should rather train on a hero with certain characteristics like "base move speed", "turn rate", "attack range", etc.

The learned behavior for map navigation say for a hero with same base movement speed and turn rate should be the same irregardless of what hero it actually is.

Similarly, we can do this for units and abilities/items to generalize the learning process.

I have written a python file to auto-generate JSON files for heroes, units, and abilities from the Dota2 provided .txt files. I've pushed the script in the other repo to separate it from the dotaservice.

Link: https://github.com/pydota2/pydota2/blob/master/patching/generate_json_files.py

Here is what the python file pulls from the Dota2 resource files for Antimage:

    "1": {
        "Name": "npc_dota_hero_antimage",
        "Talents": {
            "Talent_1": "special_bonus_strength_10",
            "Talent_2": "special_bonus_attack_speed_20",
            "Talent_3": "special_bonus_unique_antimage_3",
            "Talent_4": "special_bonus_agility_15",
            "Talent_5": "special_bonus_unique_antimage_5",
            "Talent_6": "special_bonus_unique_antimage",
            "Talent_7": "special_bonus_unique_antimage_4",
            "Talent_8": "special_bonus_unique_antimage_2"
        },   
        "ArmorPhysical": -1,
        "AttackRate": 1.4, 
        "AttackRange": 150, 
        "ProjectileSpeed": 0,
        "AttributeBaseStrength": 23,
        "AttributeStrengthGain": 1.3, 
        "AttributeBaseIntelligence": 12,
        "AttributeIntelligenceGain": 1.8, 
        "AttributeBaseAgility": 22,
        "AttributeAgilityGain": 2.8, 
        "MovementSpeed": 310, 
        "MovementTurnRate": 0.5
    }, 

Reason for this design is to allow for much faster/easier response to new Dota2 patches coming down in the future. All you need to do is run the python script and it will auto generate the data which we can use in agent training.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions